name: Run npm version and push tags concurrency: group: ${{ github.workflow }}-${{ github.ref }} cancel-in-progress: true permissions: contents: write id-token: write on: workflow_dispatch: inputs: version: description: What version number would you like to use? The version number should be **without** a leading `v`, e.g. `5.7.1` or `6.2.4`. bump-main: description: Should we bump the package.json main version? required: true type: boolean default: true update-version-function: description: Should we update the version function to use this version? required: true type: boolean default: true jobs: build: runs-on: ubuntu-latest strategy: matrix: node-version: [20.x] steps: - uses: actions/checkout@v4 with: fetch-depth: 0 token: ${{ secrets.GH_PUSH_TOKEN }} - name: Set up git-cliff uses: kenji-miyake/setup-git-cliff@v2 - name: setup git config run: | git config user.name "Github Actions Bot" git config user.email "<>" - name: Use Node.js ${{ matrix.node-version }} uses: actions/setup-node@v4 with: node-version: ${{ matrix.node-version }} cache: 'yarn' - if: ${{ endsWith(github.event.inputs.version, '0') }} run: | PREV_COMMIT=$(git rev-list --tags --max-count=1) echo PREV=$(git describe --tags ${PREV_COMMIT}) >> $GITHUB_ENV - if: ${{ !endsWith(github.event.inputs.version, '0') }} run: echo PREV=$(git describe --abbrev=0) >> $GITHUB_ENV - name: Generate changelog if not pre-release continue-on-error: true if: ${{ !contains(github.event.inputs.version, '-') }} env: PREV: ${{ env.PREV }} run: | git-cliff ${PREV}..HEAD --tag v${{ github.event.inputs.version }} --prepend CHANGELOG.md git commit -am "docs: Update CHANGELOG.md" - run: yarn install --frozen-lockfile --ignore-scripts - name: npm version run: | npm version ${{ github.event.inputs.version }} --ignore-scripts git push origin ${{ github.ref_name }} git push --tags env: CI: true update-main-version: needs: build if: ${{ github.event.inputs.bump-main == 'true' }} runs-on: ubuntu-latest steps: - name: checkout main branch uses: actions/checkout@v4 with: ref: main fetch-depth: 0 token: ${{ secrets.GH_PUSH_TOKEN }} - name: setup git config run: | git config user.name "GitHub Actions Bot" git config user.email "<>" - name: Use Node js 18 uses: actions/setup-node@v4 with: node-version: '18.x' cache: 'yarn' - name: upgrade package version run: | jq --arg version "${{ github.event.inputs.version }}+main" '.version=$version' package.json > package.json.tmp mv package.json.tmp package.json - name: lint run: | yarn install --frozen-lockfile --ignore-scripts yarn lint:fix - name: push changes run: | git add package.json git commit -m "chore: bump version to ${{ github.event.inputs.version }}+main" git push origin main update-version-checker: needs: build if: ${{ github.event.inputs.update-version-function == 'true' }} runs-on: ubuntu-latest steps: - name: Authenticate Google IAM uses: 'google-github-actions/auth@v2' with: workload_identity_provider: 'projects/340004706233/locations/global/workloadIdentityPools/gh-actions-pool/providers/github-actions-oidc-unleash' service_account: 'versionUpdateSa@metrics-304612.iam.gserviceaccount.com' token_format: 'access_token' - name: Update version checker uses: 'Unleash/update-version-action@v0' with: version: ${{ github.event.inputs.version }} distribution: 'oss'