From 458d8dacaf0585444d315f75ea3102b67fb4518d Mon Sep 17 00:00:00 2001 From: Mo Date: Wed, 22 Jun 2022 15:38:00 -0500 Subject: [PATCH] chore(workflow): run publish prod workflows when merging develop to main --- .../{publish.yml => publish.dev.yml} | 4 +- .github/workflows/publish.prod.yml | 77 +++++++++++++++++++ package.json | 4 +- 3 files changed, 81 insertions(+), 4 deletions(-) rename .github/workflows/{publish.yml => publish.dev.yml} (97%) create mode 100644 .github/workflows/publish.prod.yml diff --git a/.github/workflows/publish.yml b/.github/workflows/publish.dev.yml similarity index 97% rename from .github/workflows/publish.yml rename to .github/workflows/publish.dev.yml index 361ab8d37..640447ab6 100644 --- a/.github/workflows/publish.yml +++ b/.github/workflows/publish.dev.yml @@ -1,8 +1,8 @@ -name: Version Bump +name: Version Bump Dev on: push: - branches: [ develop, main ] + branches: [ develop ] jobs: Build: diff --git a/.github/workflows/publish.prod.yml b/.github/workflows/publish.prod.yml new file mode 100644 index 000000000..0853b0e77 --- /dev/null +++ b/.github/workflows/publish.prod.yml @@ -0,0 +1,77 @@ +name: Version Bump Main + +on: + push: + branches: [ main ] + +jobs: + Build: + if: contains(github.event.head_commit.message, 'chore(release){{':'}} publish main') == false + runs-on: ubuntu-latest + env: + NODE_AUTH_TOKEN: ${{ secrets.NPM_TOKEN }} + steps: + - name: Checkout code + uses: actions/checkout@v2 + with: + token: ${{ secrets.CI_PAT_TOKEN }} + fetch-depth: 0 + + - uses: actions/setup-node@v3 + with: + registry-url: 'https://registry.npmjs.org' + + - name: Setup git config + run: | + git config --global user.name "standardci" + git config --global user.email "ci@standardnotes.com" + - name: Import GPG key + uses: crazy-max/ghaction-import-gpg@v4 + with: + gpg_private_key: ${{ secrets.GPG_PRIVATE_KEY }} + passphrase: ${{ secrets.PASSPHRASE }} + git_user_signingkey: true + git_commit_gpgsign: true + - name: Set up Ruby + uses: ruby/setup-ruby@v1 + + - name: Install Dependencies + run: yarn install + + - name: Bump Prod Version Graduate + continue-on-error: true + id: graduateRelease + if: ${{ github.ref == 'refs/heads/main' }} + run: | + yarn release:prod:graduate + yarn publish:prod + + - name: Bump Prod Version Fallback + if: ${{ always() && github.ref == 'refs/heads/main' && steps.graduateRelease.outcome == 'failure' }} + run: | + echo Falling back to non-graduate release due to https://github.com/lerna/lerna/issues/2532 + git stash + yarn release:prod + yarn publish:prod + + - name: Bump Beta Version + if: ${{ github.ref == 'refs/heads/develop' }} + run: | + yarn release:beta + yarn publish:beta + + - name: Merge release into develop + if: ${{ github.ref == 'refs/heads/main' }} + run: | + git config pull.rebase false + git checkout develop + git pull origin main + git push origin develop + + - name: Notify Release Update + if: ${{ github.ref == 'refs/heads/main' }} + uses: peter-evans/repository-dispatch@v2 + with: + token: ${{ secrets.CI_PAT_TOKEN }} + repository: ${{ secrets.RELEASES_EVENT_RECEIVING_REPO }} + event-type: releases-updated-event \ No newline at end of file diff --git a/package.json b/package.json index c4f0efbe7..26652a3eb 100644 --- a/package.json +++ b/package.json @@ -26,8 +26,8 @@ "start:server:web:localhost": "lerna run start:no-binding --scope=@standardnotes/web-server", "prepare": "husky install", "reset": "find . -type dir -name node_modules | xargs rm -rf && rm -rf yarn.lock && yarn install", - "release:prod": "lerna version --conventional-commits --yes -m \"chore(release): publish\"", - "release:prod:graduate": "lerna version --conventional-graduate --conventional-commits --yes -m \"chore(release): publish\"", + "release:prod": "lerna version --conventional-commits --yes -m \"chore(release): publish main\"", + "release:prod:graduate": "lerna version --conventional-graduate --conventional-commits --yes -m \"chore(release): publish main\"", "release:beta": "lerna version --conventional-prerelease --conventional-commits --yes -m \"chore(release): publish\"", "publish:prod": "lerna publish from-git --yes", "publish:beta": "lerna publish from-git --yes --dist-tag alpha",