From fba0e3b914329d2e8a5efd2f8910d0cedc9cb39c Mon Sep 17 00:00:00 2001 From: Cat Chen Date: Sat, 7 Jan 2023 14:19:11 -0800 Subject: [PATCH] Set up hourly release to NPM --- .github/workflows/release.yml | 107 ++++++++++++++++++++++++++++++++++ 1 file changed, 107 insertions(+) create mode 100644 .github/workflows/release.yml diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml new file mode 100644 index 0000000..b3a292c --- /dev/null +++ b/.github/workflows/release.yml @@ -0,0 +1,107 @@ +name: Release + +on: + schedule: + - cron: '0 * * * *' + workflow_dispatch: + inputs: + release-type: + description: 'Release Type' + required: true + default: 'patch' + type: choice + options: + - major + - minor + - patch + - premajor + - preminor + - prepatch + - prerelease + prerelease: + description: 'Prerelease' + required: true + default: false + type: boolean + skip-if-no-diff: + description: 'Skip if no diff' + required: true + default: false + type: boolean + diff-targets: + description: 'Diff Targets' + required: false + default: 'data.json' + type: string + dry-run: + description: 'Dry run' + required: true + default: false + type: boolean + +jobs: + build: + uses: ./.github/workflows/build.yml + secrets: inherit + + codeql: + uses: ./.github/workflows/codeql.yml + + release: + name: Release + needs: [build, codeql] + concurrency: release + runs-on: ubuntu-latest + outputs: + tag: ${{ steps.release.outputs.tag }} + skipped: ${{ steps.release.outputs.skipped }} + steps: + - uses: actions/checkout@v3 + with: + ref: 'main' + fetch-depth: 0 + + - id: release + uses: CatChen/node-package-release-action@v1 + with: + release-type: ${{ inputs.release-type || 'patch' }} + prerelease: ${{ inputs.prerelease || false }} + update-shorthand-release: true + dry-run: ${{ inputs.dry-run || false }} + skip-if-no-diff: ${{ inputs.skip-if-no-diff || true }} + diff-targets: ${{ inputs.diff-targets || 'data.json' }} + + publish: + name: Publish + needs: [release] + if: ${{ needs.release.outputs.skipped != 'true' }} + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v3 + if: ${{ !inputs.dry-run }} + with: + ref: ${{ needs.release.outputs.tag }} + - uses: actions/checkout@v3 + if: ${{ inputs.dry-run }} + with: + ref: ${{ github.ref_name || github.ref }} + - uses: actions/setup-node@v3 + with: + node-version-file: '.nvmrc' + check-latest: true + registry-url: https://registry.npmjs.org/ + - env: + NPM_TOKEN: ${{ secrets.NPM_TOKEN }} + NODE_AUTH_TOKEN: ${{ secrets.NPM_TOKEN }} + DRY_RUN: ${{ inputs.dry-run || false }} + run: | + yarn install + yarn build + npm whoami + npm config ls -l + if [[ "$DRY_RUN" = true ]] + then + npm publish --access public --dry-run + else + npm publish --access public + fi