Skip to content

Commit

Permalink
🚀 Continuous deployment (#15)
Browse files Browse the repository at this point in the history
Sets up continuous deployment with GitVersion. Renames `ci` to
`pipeline` to match the mental model. Update contributing docs.
  • Loading branch information
connorjs authored Jul 30, 2024
1 parent 24523d0 commit 193962d
Show file tree
Hide file tree
Showing 5 changed files with 65 additions and 11 deletions.
60 changes: 56 additions & 4 deletions .github/workflows/ci.yaml → .github/workflows/pipeline.yaml
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
name: CI
name: Pipeline

on:
push:
Expand All @@ -10,9 +10,24 @@ jobs:
Build:
name: Build
runs-on: ubuntu-latest
outputs:
GitVersion_SemVer: ${{ steps.GitVersion.outputs.GitVersion_SemVer }}
steps:
- name: Checkout
uses: actions/checkout@v4
with:
fetch-depth: 0 # Full depth (not shallow) for GitVersion and better relevancy of Sonar analysis

- name: Set up GitVersion
uses: gittools/actions/gitversion/[email protected]
with:
versionSpec: 6.x

- name: Execute GitVersion
id: GitVersion
uses: gittools/actions/gitversion/[email protected]
with:
useConfigFile: true

- name: Use Node.js
uses: actions/setup-node@v4
Expand Down Expand Up @@ -54,10 +69,10 @@ jobs:
cache: npm
node-version: ${{ matrix.node }}

- name: Install production
run: npm ci --include prod
- name: Install
run: npm install --omit=dev

- name: Build production
- name: Build
run: npm run build

- name: Run css-typed (the test)
Expand All @@ -71,3 +86,40 @@ jobs:
node dist/main.js "$RUNNER_TEMP/*.css" --dashes
diff --strip-trailing-cr -uI '//.*' src/fixtures/kebab-case/kebab-case-dashes.d.css.ts "$RUNNER_TEMP/kebab-case.d.css.ts"
Publish:
if: ${{ github.ref == 'refs/heads/main' }}
name: Publish
needs:
- Build # For version variable
- Test # Requires passing tests
runs-on: ubuntu-latest
env:
GitVersion_SemVer: ${{needs.Build.outputs.GitVersion_SemVer}}
permissions:
contents: write
id-token: write
steps:
- uses: actions/checkout@v4

- uses: actions/setup-node@v4
with:
cache: npm
node-version-file: .node-version
registry-url: https://registry.npmjs.org

- name: Set version
run: sed -i 's/0.0.0-gitversion/${{ env.GitVersion_SemVer }}/g' package.json

- name: Install
run: npm install --omit=dev

- name: Publish
run: npm publish --provenance --access public
env:
NODE_AUTH_TOKEN: ${{ secrets.NPM_TOKEN }}

- name: git tag
run: |
git tag v${{ env.GitVersion_SemVer }}
git push origin tag v${{ env.GitVersion_SemVer }}
6 changes: 3 additions & 3 deletions CONTRIBUTING.md
Original file line number Diff line number Diff line change
Expand Up @@ -30,9 +30,9 @@ All contributions MUST adhere to the following expectations.

1. Every change MUST have unit tests.
2. Every change MUST have a GitHub issue linked.
3. Any configuration option change MUST be discussed in a GitHub issue first.
4. I will squash-merge the changeset into `main` upon approval.
5. I will publish the new version upon approval (not yet automated).
3. Any configuration option change SHOULD be discussed in a GitHub issue first.
4. The PR build (see [pipeline.yaml](./.github/workflows/pipeline.yaml)) MUST succeed.
5. I will squash-merge the changeset into `main` upon approval.

[RFC2119]: https://www.rfc-editor.org/rfc/rfc2119
[RFC8174]: https://www.rfc-editor.org/rfc/rfc8174
2 changes: 2 additions & 0 deletions GitVersion.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
workflow: GitHubFlow/v1
mode: ContinuousDeployment
4 changes: 2 additions & 2 deletions package-lock.json

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

4 changes: 2 additions & 2 deletions package.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "css-typed",
"version": "0.2.4",
"version": "0.0.0-gitversion",
"description": "Basic TypeScript declaration generator for CSS files",
"keywords": [
"CSS",
Expand Down Expand Up @@ -37,7 +37,7 @@
"ci-build": "npm-run-all -l -p build eslint prettier test",
"eslint": "eslint -f pretty .",
"eslint:fix": "npm run eslint -- --fix",
"prepublishOnly": "npm run ci-build",
"prepublishOnly": "npm run build",
"prettier": "prettier -c '**/*.{cjs,css,js,json,md,yaml,yml}'",
"prettier:fix": "npm run prettier -- -w",
"test": "vitest run"
Expand Down

0 comments on commit 193962d

Please sign in to comment.