ci(test-publish): drop docker verdaccio #33
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: Test and Conditionally Publish | |
on: | |
push: | |
paths-ignore: | |
- '.anylint' | |
- '.editorconfig' | |
- '.env.example' | |
- '.gitattributes' | |
- '.gitignore' | |
- 'commitlint.config.js' | |
- 'LICENSE' | |
pull_request: | |
branches: | |
- master | |
paths-ignore: | |
- '.anylint' | |
- '.editorconfig' | |
- '.env.example' | |
- '.gitattributes' | |
- '.gitignore' | |
- 'commitlint.config.js' | |
- 'LICENSE' | |
jobs: | |
test: | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/checkout@v4 | |
- name: Set up pnpm | |
uses: pnpm/action-setup@v2 | |
with: | |
run_install: false # For cache | |
# pnpm should be installed before the setup-node action. REF: https://github.com/actions/setup-node/issues/530 | |
- name: Set up Node.js | |
uses: actions/setup-node@v3 | |
with: | |
node-version-file: '.nvmrc' | |
cache: pnpm | |
- name: Install Dependencies | |
run: pnpm install --silent --frozen-lockfile --ignore-scripts | |
- name: Test | |
run: pnpm test | |
- name: Lint | |
run: pnpm eslint . | |
- name: Lint Markdown | |
run: pnpm markdownlint . | |
e2etest: | |
needs: test | |
runs-on: ${{ matrix.os }} | |
strategy: | |
matrix: | |
node-version: [18, 20, 22] | |
# [REF]: https://github.com/actions/runner-images | |
# Q. Why `macos-latest-large`(x86-64) instead of `macos-latest`(arm64)? | |
# A. Apple silicon does not support 'nested virtualization' yet, | |
# though support *will* be added from M3 + macOS 15. | |
# [REF]: https://github.com/douglascamata/setup-docker-macos-action | |
os: [ubuntu-latest, macos-latest-large, windows-latest, windows-2019] | |
steps: | |
- uses: actions/checkout@v4 | |
- name: Set up pnpm | |
uses: pnpm/action-setup@v2 | |
with: | |
run_install: false # For cache | |
- name: Use Node.js ${{ matrix.node-version }} | |
uses: actions/setup-node@v3 | |
with: | |
node-version: ${{ matrix.node-version }} | |
cache: pnpm | |
- name: Install Dependencies | |
run: pnpm install --silent --frozen-lockfile --ignore-scripts | |
- name: Setup Docker on macOS | |
# Currently, docker is not preinstalled on macos runner images. | |
if: startsWith(matrix.os, 'macos') | |
uses: douglascamata/setup-docker-macos-action@v1-alpha | |
- name: Run Local Npm Registry (Verdaccio) On Linux and macOS | |
if: startsWith(matrix.os, 'windows') == false | |
# verdaccio is private npm registry. [link](https://github.com/verdaccio/verdaccio/) | |
run: docker compose -f verdaccio/docker-compose.yaml up --wait | |
- name: Run Local Npm Registry (Verdaccio) On Windows | |
if: startsWith(matrix.os, 'windows') | |
# Q. Why not using docker? | |
# A. [REF](https://github.com/verdaccio/verdaccio/issues/4808) | |
run: | | |
pnpm add --global forever verdaccio | |
forever start verdaccio --config ./verdaccio/config.yaml | |
- name: Publish To Local NPM Registry | |
run: | | |
# From npm v7, `npm adduser` is required before `npm publish`. | |
# (adduser REF: https://docs.npmjs.com/cli/v7/commands/npm-adduser) | |
# However, `npm adduser` is interactive | |
# and can be substituted by setting `_authToken`. | |
# By local verdaccio setting(verdaccio/conf/default.yaml), | |
# the _authToken can be any random string, | |
# and verdaccio is configured to allowing anyone to publish `hasura-cli`. | |
npm config set //localhost:4873/:_authToken helloworld | |
npm run prepublishOnly | |
npm publish --registry http://localhost:4873 | |
- name: Test Installation | |
run: | | |
npm install --global hasura-cli --registry http://localhost:4873 | |
hasura version --skip-update-check | |
- name: Test Uninstallation | |
if: startsWith(matrix.os, 'windows') == false | |
run: npm uninstall --global hasura-cli | |
publish: | |
needs: e2etest | |
if: startsWith(github.ref, 'refs/tags/v2.') && ( github.event.base_ref == 'refs/heads/master' ) | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/checkout@v4 | |
- name: Set up pnpm | |
uses: pnpm/action-setup@v2 | |
with: | |
run_install: false # For cache | |
- name: Set Up Node.js | |
uses: actions/setup-node@v3 | |
with: | |
node-version-file: '.nvmrc' | |
cache: pnpm | |
- name: Install Dependencies | |
run: pnpm install --silent --frozen-lockfile --ignore-scripts | |
- name: Build and Publish | |
# only runs if name of git tag starts with 'v1.' and on branch master | |
run: | | |
pnpm run prepublishOnly # to prevent a mistake though there is already prepublishOnly lifecycle hook. | |
pnpm publish | |
env: | |
NPM_TOKEN: ${{ secrets.NPM_TOKEN }} |