From a1832bf650f2515b921f707bafa30d1d666b3736 Mon Sep 17 00:00:00 2001 From: Tim Golen Date: Mon, 24 Jul 2023 15:23:26 -0600 Subject: [PATCH 1/2] Add workflow --- .github/OSBotify-private-key.asc.gpg | Bin 0 -> 5132 bytes .github/workflows/publish.yml | 89 +++++++++++++++++++++++++++ 2 files changed, 89 insertions(+) create mode 100644 .github/OSBotify-private-key.asc.gpg create mode 100644 .github/workflows/publish.yml diff --git a/.github/OSBotify-private-key.asc.gpg b/.github/OSBotify-private-key.asc.gpg new file mode 100644 index 0000000000000000000000000000000000000000..c19d5c97866c2e3963409bd11f5438ac8a6c4505 GIT binary patch literal 5132 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 $GITHUB_ENV + + - name: Create branch for version-bump pull request + run: git checkout -b ${{ env.BRANCH_NAME }} + + - name: Install npm packages + run: npm ci + + - name: Update npm version + run: npm version patch + + - name: Set new version in GitHub ENV + run: echo "NEW_VERSION=$(jq '.version' package.json)" >> $GITHUB_ENV + + - name: Push branch and publish tags + run: git push --set-upstream origin ${{ env.BRANCH_NAME }} && git push --tags + + - name: Create pull request + run: | + gh pr create \ + --title "Update version to ${{ env.NEW_VERSION }}" \ + --body "Update version to ${{ env.NEW_VERSION }}" + sleep 5 + env: + GITHUB_TOKEN: ${{ secrets.OS_BOTIFY_TOKEN }} + + - name: Auto-approve pull request + run: gh pr review --approve ${{ env.BRANCH_NAME }} + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + + - name: Auto-merge pull request + run: gh pr merge --merge --delete-branch ${{ env.BRANCH_NAME }} + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + + - name: Build package + run: npm run build + + - name: Publish to npm + run: npm publish + env: + NODE_AUTH_TOKEN: ${{ secrets.NPM_TOKEN }} From 12f7c5a319c7da02fa362a1dd0d8a70353822d9e Mon Sep 17 00:00:00 2001 From: Tim Golen Date: Tue, 25 Jul 2023 10:00:41 -0600 Subject: [PATCH 2/2] Switch to using concurrency instead of turnstyle --- .github/workflows/publish.yml | 18 ++++++++---------- 1 file changed, 8 insertions(+), 10 deletions(-) diff --git a/.github/workflows/publish.yml b/.github/workflows/publish.yml index 3254d1c..08bc9e4 100644 --- a/.github/workflows/publish.yml +++ b/.github/workflows/publish.yml @@ -2,8 +2,12 @@ name: Publish package to npmjs # This workflow runs when code is pushed to `main` (i.e: when a pull request is merged) on: - push: - branches: [main] + push: + branches: [main] + +# Ensure that only once instance of this workflow executes at a time. +# If multiple PRs are merged in quick succession, there will only ever be one publish workflow running and one pending. +concurrency: ${{ github.workflow }} jobs: version: @@ -13,15 +17,9 @@ jobs: if: ${{ github.actor != 'OSBotify' }} steps: - # Running this action ensures that only one instance of this job will run at a time. - # This is important to prevent race conditions when multiple pull requests are merged in quick succession - - uses: softprops/turnstyle@8db075d65b19bf94e6e8687b504db69938dc3c65 - with: - poll-interval-seconds: 10 - env: - GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} - - uses: actions/checkout@v3 + with: + ref: main - name: Decrypt & Import OSBotify GPG key run: |