name: CI/CD on: push: # Runs whenever a commit is pushed to the repository workflow_call: # Allows another workflow to call this one workflow_dispatch: # Allows you to run this workflow manually from the Actions tab concurrency: group: "${{ github.workflow }} @ ${{ github.event.pull_request.head.label || github.head_ref || github.ref }}" cancel-in-progress: true permissions: contents: write # publish a GitHub release pages: write # deploy to GitHub Pages issues: write # comment on released issues pull-requests: write # comment on released pull requests jobs: build-and-deploy: runs-on: ubuntu-latest env: TRIGGER_DEPLOY: ${{ startsWith(github.ref, 'refs/heads/master') }} steps: - uses: actions/checkout@v4 - uses: actions/setup-node@v3 with: cache: "npm" node-version-file: ".nvmrc" - name: Info run: | cat <> $GITHUB_ENV - name: Deploy to NPM (do a dry-run if not on master) env: NPM_TOKEN: ${{ secrets.NPM_TOKEN }} NPM_TAG: "latest" run: | message=$([[ "$TRIGGER_DEPLOY" == "false" ]] && echo "DRY RUN of" || echo "Deploying") echo "$message version $RELEASE_VERSION to $NPM_TAG" npm --no-git-tag-version version $RELEASE_VERSION npm set //registry.npmjs.org/:_authToken=$NPM_TOKEN npm publish --tag $NPM_TAG $([[ "$TRIGGER_DEPLOY" == "false" ]] && echo "--dry-run") - name: Check Release Version and Create Tag run: | if npm info | grep -q $RELEASE_VERSION; then git tag $RELEASE_VERSION git push origin $RELEASE_VERSION fi