From b2cff2c50b11e7d546d44c9755d4b349e05aa4c5 Mon Sep 17 00:00:00 2001 From: Luke Karrys <luke@lukekarrys.com> Date: Thu, 31 Mar 2022 16:51:22 -0700 Subject: [PATCH] chore: add github action for release --- .github/workflows/release.yml | 69 +++++++++++++++++++++++++++++++++++ Makefile | 9 +++-- scripts/git-dirty.js | 2 +- 3 files changed, 75 insertions(+), 5 deletions(-) create mode 100644 .github/workflows/release.yml diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml new file mode 100644 index 0000000000000..02d3fcf16caf4 --- /dev/null +++ b/.github/workflows/release.yml @@ -0,0 +1,69 @@ +name: Release - cli + +on: + workflow_dispatch: + pull_request: + +jobs: + lint-all: + if: startsWith(github.head_ref, 'release/') + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v3 + - name: Use Node.js 16.x + uses: actions/setup-node@v3 + with: + node-version: 16.x + cache: npm + - run: node ./bin/npm-cli.js run resetdeps + - run: node ./bin/npm-cli.js run lint-all + + prepublish: + if: startsWith(github.head_ref, 'release/') + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v3 + - name: Use Node.js 16.x + uses: actions/setup-node@v3 + with: + node-version: 16.x + cache: npm + - run: node ./bin/npm-cli.js run resetdeps + - run: make prepublish + + test-all: + if: startsWith(github.head_ref, 'release/') + strategy: + fail-fast: false + matrix: + node-version: + - 12.13.0 + - 12.x + - 14.15.0 + - 14.x + - 16.0.0 + - 16.x + platform: + - os: ubuntu-latest + shell: bash + - os: macos-latest + shell: bash + - os: windows-latest + shell: cmd + runs-on: ${{ matrix.platform.os }} + defaults: + run: + shell: ${{ matrix.platform.shell }} + steps: + - uses: actions/checkout@v3 + - name: Use Node.js ${{ matrix.node-version }} + uses: actions/setup-node@v3 + with: + node-version: ${{ matrix.node-version }} + cache: npm + - run: node ./bin/npm-cli.js run resetdeps + - run: node ./bin/npm-cli.js link -f --ignore-scripts + - run: node ./bin/npm-cli.js run test-all --ignore-scripts + - name: git status + if: matrix.platform.os != 'windows-latest' + run: node scripts/git-dirty.js diff --git a/Makefile b/Makefile index f863dcdc87fc5..80df25630eb64 100644 --- a/Makefile +++ b/Makefile @@ -78,7 +78,7 @@ docs/content/commands/npm-%.md: docs/bin/config-doc-command.js lib/commands/%.js freshdocs: touch lib/utils/config/definitions.js - touch "docs/bin/*.js" + touch docs/bin/*.js make docs test: deps @@ -101,10 +101,11 @@ link: uninstall prune: deps node bin/npm-cli.js prune --production --no-save --no-audit - @[[ "$(shell git status -s)" != "" ]] && echo "ERR: found unpruned files" && exit 1 || echo "git status is clean" + node scripts/git-dirty.js -publish: gitclean ls-ok link test smoke-tests docs prune - @git push origin :v$(shell node bin/npm-cli.js --no-timing -v) 2>&1 || true +prepublish: gitclean ls-ok link test smoke-tests docs prune + +publish: prepublish git push origin $(BRANCH) &&\ git push origin --tags &&\ node bin/npm-cli.js publish --tag=$(PUBLISHTAG) diff --git a/scripts/git-dirty.js b/scripts/git-dirty.js index 484a4d23e7be2..5730ed9006681 100644 --- a/scripts/git-dirty.js +++ b/scripts/git-dirty.js @@ -1,6 +1,6 @@ #!/usr/bin/env node const { spawnSync } = require('child_process') -const changes = spawnSync('git', ['status', '--porcelain', '-uno']) +const changes = spawnSync('git', ['status', '--porcelain', '-uall']) const stdout = changes.stdout.toString('utf8') const stderr = changes.stderr.toString('utf8') const { status, signal } = changes