From 82b84af68d3c1f4dd7e5d276204f5b479fac34d6 Mon Sep 17 00:00:00 2001 From: Johannes Przymusinski Date: Thu, 28 Dec 2023 20:44:06 +0100 Subject: [PATCH] chore: setup release pipeline --- .../workflows/{job-ci.yaml => job-build.yaml} | 5 + .github/workflows/job-cleanup.yaml | 13 +++ .github/workflows/pull-request.yaml | 5 + .github/workflows/release.yaml | 92 +++++++++++++++++++ 4 files changed, 115 insertions(+) rename .github/workflows/{job-ci.yaml => job-build.yaml} (90%) create mode 100644 .github/workflows/job-cleanup.yaml create mode 100644 .github/workflows/release.yaml diff --git a/.github/workflows/job-ci.yaml b/.github/workflows/job-build.yaml similarity index 90% rename from .github/workflows/job-ci.yaml rename to .github/workflows/job-build.yaml index c031843..2d51693 100644 --- a/.github/workflows/job-ci.yaml +++ b/.github/workflows/job-build.yaml @@ -42,3 +42,8 @@ jobs: - name: Build run: pnpm run build + + - uses: actions/upload-artifact@v3 + with: + name: hx-chart + path: dist diff --git a/.github/workflows/job-cleanup.yaml b/.github/workflows/job-cleanup.yaml new file mode 100644 index 0000000..4b05bf6 --- /dev/null +++ b/.github/workflows/job-cleanup.yaml @@ -0,0 +1,13 @@ +name: Cleanup + +on: + workflow_call: + +jobs: + cleanup: + name: "Cleanup ๐Ÿงน" + runs-on: "ubuntu-latest" + steps: + - uses: geekyeggo/delete-artifact@v4 + with: + name: hx-chart \ No newline at end of file diff --git a/.github/workflows/pull-request.yaml b/.github/workflows/pull-request.yaml index d475971..a627662 100644 --- a/.github/workflows/pull-request.yaml +++ b/.github/workflows/pull-request.yaml @@ -7,3 +7,8 @@ jobs: ci: uses: "./.github/workflows/job-ci.yaml" + + cleanup: + uses: "./.github/workflows/job-cleanup.yaml" + needs: + - ci diff --git a/.github/workflows/release.yaml b/.github/workflows/release.yaml new file mode 100644 index 0000000..730ae01 --- /dev/null +++ b/.github/workflows/release.yaml @@ -0,0 +1,92 @@ +name: "Release ๐Ÿš€" + +on: + push: + tags: + - "v*" + +env: + NODE_VERSION: 20 + +jobs: + ci: + uses: "./.github/workflows/ci.yaml" + + github-release: + name: "GitHub Release" + runs-on: ubuntu-latest + needs: + - ci + steps: + - uses: actions/download-artifact@v4 + with: + name: hx-chart + path: ./dist + + - name: "Release ๐Ÿš€" + uses: "softprops/action-gh-release@v1" + with: + generate_release_notes: true + files: dist + + publish-github: + name: "Publish to Github Packages" + needs: + - github-release + runs-on: ubuntu-latest + permissions: + contents: read + packages: write + steps: + - uses: actions/checkout@v4 + - uses: actions/download-artifact@v4 + with: + name: hx-chart + path: ./dist + + # Setup .npmrc file to publish to GitHub Packages + - uses: actions/setup-node@v4 + with: + node-version: '${{ env.NODE_VERSION }}' + registry-url: 'https://npm.pkg.github.com' + + - uses: pnpm/action-setup@v2 + with: + run_install: false + + # --no-git-checks is needed, because this pipelies runs on the pushed tag which is in a detached HEAD state + - run: pnpm publish --access public --no-git-checks + env: + NODE_AUTH_TOKEN: ${{ secrets.GITHUB_TOKEN }} + + publish-npm: + name: "Publish to NPM" + needs: + - github-release + runs-on: "ubuntu-latest" + steps: + - uses: actions/checkout@v4 + - uses: actions/download-artifact@v4 + with: + name: hx-chart + path: ./dist + + - uses: actions/setup-node@v4 + with: + node-version: '${{ env.NODE_VERSION }}' + registry-url: "https://registry.npmjs.org/" + + - uses: pnpm/action-setup@v2 + with: + run_install: false + + # --no-git-checks is needed, because this pipelies runs on the pushed tag which is in a detached HEAD state + - run: pnpm publish --access public --no-git-checks + env: + NODE_AUTH_TOKEN: ${{ secrets.NPM_TOKEN }} + + cleanup: + uses: "./.github/workflows/job-cleanup.yaml" + needs: + - publish-npm + - publish-github