🚀 Release #18
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
name: "🚀 Release" | |
on: | |
workflow_dispatch: | |
inputs: | |
next_version: | |
type: choice | |
description: "How to bump the version?" | |
options: | |
- "major" | |
- "minor" | |
- "patch" | |
default: "patch" | |
concurrency: "release" | |
jobs: | |
install: | |
runs-on: ubuntu-latest | |
steps: | |
- name: "📥 Checkout code" | |
uses: actions/checkout@v4 | |
- name: "📦 Install dependencies" | |
uses: reactgular/cache@v1 | |
with: | |
mode: "install" | |
version: | |
runs-on: ubuntu-latest | |
steps: | |
- name: "📥 Checkout code" | |
uses: actions/checkout@v4 | |
- name: "🔍 Read package.json version" | |
id: version | |
run: | | |
VERSION=$(jq -r .version < package.json) | |
echo "version=${VERSION}" >> $GITHUB_OUTPUT | |
echo "::notice file={package.json},title={Release Version}::Release version: ${VERSION}" | |
outputs: | |
package_version: ${{ steps.version.outputs.version }} | |
lint: | |
runs-on: ubuntu-latest | |
needs: [ install ] | |
if: false | |
steps: | |
- name: "📥 Checkout code" | |
uses: actions/checkout@v4 | |
- name: Setup Node | |
uses: actions/setup-node@v4 | |
with: | |
node-version: "20" | |
cache: "yarn" | |
- name: "💽 Restore node_modules cache" | |
uses: reactgular/cache@v1 | |
with: | |
mode: "restore" | |
- name: "🔨 Lint" | |
run: yarn lint | |
test: | |
runs-on: ubuntu-latest | |
needs: [ install ] | |
if: false | |
steps: | |
- name: "📥 Checkout code" | |
uses: actions/checkout@v4 | |
- name: Setup Node | |
uses: actions/setup-node@v4 | |
with: | |
node-version: "20" | |
cache: "yarn" | |
- name: "💽 Restore node_modules cache" | |
uses: reactgular/cache@v1 | |
with: | |
mode: "restore" | |
- name: "🔨 Test" | |
run: ${{ env.NX }} affected -t test | |
storybooks: | |
runs-on: ubuntu-latest | |
needs: [ install ] | |
if: false | |
steps: | |
- name: "📥 Checkout code" | |
uses: actions/checkout@v4 | |
- name: Setup Node | |
uses: actions/setup-node@v4 | |
with: | |
node-version: "20" | |
cache: "yarn" | |
- name: "💽 Restore node_modules cache" | |
uses: reactgular/cache@main | |
with: | |
mode: "restore" | |
- name: "🔨 Build storybooks" | |
run: yarn build-storybook | |
build: | |
runs-on: ubuntu-latest | |
needs: [ install ] | |
steps: | |
- name: "📥 Checkout code" | |
uses: actions/checkout@v4 | |
- name: "🔧 Setup Node" | |
uses: actions/setup-node@v4 | |
with: | |
node-version: "20" | |
cache: "yarn" | |
- name: "💽 Restore node_modules cache" | |
uses: reactgular/cache@v1 | |
with: | |
mode: "restore" | |
- name: "🔧 Setup Pages" | |
uses: actions/configure-pages@v5 | |
with: | |
static_site_generator: next | |
- name: "🔨 Build projects" | |
run: yarn build | |
- name: "📦 Upload artifact" | |
uses: actions/upload-pages-artifact@v3 | |
with: | |
path: ./out | |
release-version: | |
runs-on: ubuntu-latest | |
needs: [ version, build ] | |
steps: | |
- name: "🚀 Publish release" | |
uses: actions/github-script@v7 | |
with: | |
script: | | |
const { owner, repo } = context.repo; | |
const tag_name = 'v${{needs.version.outputs.package_version}}'; | |
const {data: release} = await github.rest.repos.generateReleaseNotes({ | |
owner, | |
repo, | |
tag_name | |
}); | |
await github.rest.repos.createRelease({ | |
owner, | |
repo, | |
tag_name, | |
name: release.name, | |
body: release.body | |
}); | |
next-version: | |
runs-on: ubuntu-latest | |
needs: [ release-version ] | |
steps: | |
- name: "📥 Checkout code" | |
uses: actions/checkout@v4 | |
- name: "🔍 Bump package.json version" | |
run: | | |
yarn version --no-git-tag-version --${{ github.event.inputs.next_version }} | |
- name: "🔍 Read package.json version" | |
id: version | |
run: | | |
VERSION=$(jq -r .version < package.json) | |
echo "version=${VERSION}" >> $GITHUB_OUTPUT | |
echo "::notice file={package.json},title={Next Version}::Next version: ${VERSION}" | |
- name: "🔄 Create Pull Request" | |
uses: peter-evans/create-pull-request@v6 | |
with: | |
commit-message: "chore: bump version to v${{steps.version.outputs.version}}" | |
title: "chore: bump version to v${{steps.version.outputs.version}}" | |
body: "Bumps the version to v${{steps.version.outputs.version}}" | |
branch: "chore/bump-v${{steps.version.outputs.version}}" | |
labels: "release" | |
reviewers: "codemile" | |
assignees: "codemile" | |
draft: false | |
deploy: | |
permissions: | |
pages: write | |
id-token: write | |
environment: | |
name: github-pages | |
url: ${{ steps.deployment.outputs.page_url }} | |
runs-on: ubuntu-latest | |
needs: [ build, release-version, next-version ] | |
steps: | |
- name: "🚀 Deploy to GitHub Pages" | |
id: deployment | |
uses: actions/deploy-pages@v4 |