Add automated release workflows (#853)

This commit also contains new code introduced after the PR in #853 was
merged. I just squashed it all together to prevent noisy commits to try
and fix CI.

The funny thing is that now the final commit looks fairly stupid/simple
but it wasn't that easy as I would have liked.

1. Couldn't find a proper way to execute `npm version` using yarn
   workspaces. `yarn workspaces foreach npm version` would have worked
   if we were using Yarn 2 instead of Yarn 1.
2. Introducing `version` and `publish` scripts in both packages worked,
   but then the default `version` and `publish` were also executed.
3. Once I made the scripts unique (`npm-version`,  `npm-publish`) it
   worked~ish. The registry was always set to a yarnpkg registry, even
   if we set the registry in CI and in a local .npmrc file. My guess is
   that we are executing in a nested directory and therefore it didn't
   work.
4. Next, I found the `npm workspaces` option so that we can use that in
   addition to `yarn workspaces` 🙃
5. In CI of course this didn't work, because I was not using the same
   node version...
6. After everything worked, I did cleanup of the new scripts, and
   removed the introduced .npmrc files.
This commit is contained in:
Robin Malfait
2021-10-07 16:20:33 +02:00
parent aa1a48cbfe
commit f9e0d30795
2 changed files with 109 additions and 0 deletions
+54
View File
@@ -0,0 +1,54 @@
name: Release Dev
on:
push:
branches: [develop]
jobs:
build:
runs-on: ubuntu-latest
strategy:
matrix:
node-version: [16]
steps:
- uses: actions/checkout@v2
- name: Use Node.js ${{ matrix.node-version }}
uses: actions/setup-node@v2
with:
node-version: ${{ matrix.node-version }}
registry-url: 'https://registry.npmjs.org'
- name: Use cached node_modules
id: cache
uses: actions/cache@v2
with:
path: '**/node_modules'
key: ${{ runner.os }}-${{ env.NODE_VERSION }}-modules-${{ hashFiles('**/yarn.lock') }}
restore-keys: |
nodeModules-
- name: Install dependencies
run: yarn install --frozen-lockfile
env:
CI: true
- name: Test
run: npm test
env:
CI: true
- name: Resolve version
id: vars
run: echo "::set-output name=sha_short::$(git rev-parse --short HEAD)"
- name: "Version based on commit: 0.0.0-dev.${{ steps.vars.outputs.sha_short }}"
run: npm version -w packages 0.0.0-dev.${{ steps.vars.outputs.sha_short }} --force --no-git-tag-version
- name: Publish
run: npm publish -w packages --tag dev
env:
CI: true
NODE_AUTH_TOKEN: ${{ secrets.NPM_TOKEN }}
+55
View File
@@ -0,0 +1,55 @@
name: Release Dev
on:
push:
branches: [main]
jobs:
build:
runs-on: ubuntu-latest
strategy:
matrix:
node-version: [16]
steps:
- uses: actions/checkout@v2
- name: Use Node.js ${{ matrix.node-version }}
uses: actions/setup-node@v2
with:
node-version: ${{ matrix.node-version }}
registry-url: 'https://registry.npmjs.org'
- name: Use cached node_modules
id: cache
uses: actions/cache@v2
with:
path: '**/node_modules'
key: ${{ runner.os }}-${{ env.NODE_VERSION }}-modules-${{ hashFiles('**/yarn.lock') }}
restore-keys: |
nodeModules-
- name: Install dependencies
run: yarn install --frozen-lockfile
env:
CI: true
- name: Test
run: npm test
env:
CI: true
- name: Resolve version
id: vars
run: echo "::set-output name=sha_short::$(git rev-parse --short HEAD)"
- name: "Version based on commit: 0.0.0-next.${{ steps.vars.outputs.sha_short }}"
run: npm version -w packages 0.0.0-next.${{ steps.vars.outputs.sha_short }} --force --no-git-tag-version
- name: Publish
run: npm publish -w packages --tag next
env:
CI: true
NODE_AUTH_TOKEN: ${{ secrets.NPM_TOKEN }}