Fix node version file name #9
Workflow file for this run
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
name: Publish new release | |
on: | |
push: | |
tags: | |
- '*' | |
jobs: | |
check-version-match: | |
name: Check versions match in package* files | |
runs-on: ubuntu-20.04 | |
steps: | |
- uses: actions/checkout@v4 | |
- uses: actions/setup-node@v4 | |
with: | |
node-version-file: '/.nvmrc' | |
# versions match => equality is true => inequality is false => Number(false) is 0 => process.exit(0) | |
# versions differ => equality is false => inequality is true => Number(true) is 1 => process.exit(1) | |
- run: |2 | |
node -e "process.exit(require('./package.json').version !== require('./package-lock.json').version)" | |
check-version-new: | |
name: Check version is new | |
runs-on: ubuntu-20.04 | |
steps: | |
- uses: actions/checkout@v4 | |
- uses: actions/setup-node@v4 | |
with: | |
node-version-file: '/.nvmrc' | |
- name: Assert version is not published | |
run: |2 | |
set -e | |
package_name=$(node -pe "require('./package.json').name;") | |
incoming_version=$(node -pe "require('./package.json').version;") | |
if [ ! -z "$(npm view $package_name@$incoming_version version)" ]; then | |
echo "This version ($incoming_version) of $package_name is already published; please, update version by running 'npm version <version>'" | |
exit 1 | |
fi | |
check-no-deps: | |
name: Check no dependencies | |
runs-on: ubuntu-20.04 | |
steps: | |
- uses: actions/checkout@v4 | |
- uses: actions/setup-node@v4 | |
with: | |
node-version-file: '/.nvmrc' | |
- name: Assert 'dependencies' object in package.json is empty | |
run: |2 | |
node -e "const deps = Object.keys(require('./package.json').dependencies || {}); assert.equal(deps.length, 0, 'Claimed to have no dependencies, instead found: ' + deps.join(', '))" | |
# TODO: maybe also check that the branch is 'main' | |
lint: | |
needs: | |
- check-version-match | |
- check-version-new | |
- check-no-deps | |
runs-on: ubuntu-20.04 | |
steps: | |
- uses: actions/checkout@v4 | |
- uses: actions/setup-node@v4 | |
with: | |
node-version-file: '/.nvmrc' | |
- run: npm ci | |
- run: npm run lint | |
test: | |
name: Run tests on ${{ matrix.os }} | |
runs-on: ${{ matrix.os }} | |
strategy: | |
matrix: | |
os: | |
- ubuntu-latest | |
- windows-latest | |
- macos-latest | |
needs: | |
- lint | |
steps: | |
- uses: actions/checkout@v4 | |
- uses: actions/setup-node@v4 | |
with: | |
node-version-file: '/.nvmrc' | |
- run: npm ci | |
- run: npm t | |
publish: | |
name: Publish version | |
runs-on: ubuntu-20.04 | |
needs: | |
- test | |
steps: | |
- uses: actions/checkout@v4 | |
- uses: actions/setup-node@v4 | |
with: | |
node-version-file: '/.nvmrc' | |
- run: npm ci | |
- run: npm run build | |
- run: echo "//registry.npmjs.org/:_authToken=${{ secrets.NPM_AUTH_TOKEN }}" > .npmrc | |
- run: npm publish --tag latest |