ci(test-publish): fix running verdaccio #29
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] | |
os: [ubuntu-latest, macOS-latest, 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: Run Local Npm Registry (Verdaccio) | |
# verdaccio is private npm registry. [link](https://github.com/verdaccio/verdaccio/) | |
run: docker compose -f verdaccio/docker-compose.yaml up --wait | |
- 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 }} |