ci: 👷 add run many build #28
Workflow file for this run
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: | |
push: | |
branches: | |
- next | |
jobs: | |
release: | |
runs-on: ubuntu-latest | |
environment: preview | |
permissions: | |
contents: write | |
id-token: write # needed for provenance data generation | |
env: | |
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} | |
RELEASE_PREID: ${{ vars.RELEASE_PREID }} | |
RELEASE_SPECIFIER: ${{ vars.RELEASE_SPECIFIER }} | |
RELEASE_TAG: ${{ vars.RELEASE_TAG }} | |
steps: | |
# Step 1: Check out the repository code | |
- name: Checkout repository | |
uses: actions/checkout@v4 | |
with: | |
fetch-depth: 0 # Fetch the entire history to allow proper versioning | |
# Step 2: Setup pnpm package manager | |
- name: Install pnpm | |
uses: pnpm/action-setup@v4 | |
with: | |
version: 9 | |
run_install: false | |
# Step 3: Set up Node.js environment | |
- name: Setup Node.js | |
uses: actions/setup-node@v4 | |
with: | |
node-version: 20 | |
cache: 'pnpm' | |
registry-url: 'https://registry.npmjs.org' | |
- name: Cache dependencies | |
uses: actions/cache@v4 | |
with: | |
path: '**/node_modules' | |
key: ${{ runner.OS }}-20.x-${{ hashFiles('**/yarn.lock') }} | |
restore-keys: | | |
${{ runner.OS }}-20.x- | |
# Step 5: Install dependencies | |
- name: Install dependencies | |
run: pnpm i --frozen-lockfile | |
# Step 6: Set SHAs for nx workspace | |
- name: Set SHAs for Nx workspace | |
uses: nrwl/nx-set-shas@v4 | |
# Step 7: Run lint and test for the affected changes | |
- name: Run Nx lint and test | |
run: pnpx nx affected -t lint test --exclude nextjs,vue3 | |
# Step 8: Run the build for the affected changes | |
- name: Run build | |
run: pnpm build | |
# Step 9: Set github authour | |
- name: Setup git user to "🤖 nabla bot" | |
run: git config user.email "-" && git config user.name "🤖 nabla bot" | |
# Step 10: Run the release | |
- name: Run Nx release version | |
run: pnpm release -d false | |
# Step 11: Run the build for the affected changes | |
- name: Run build | |
run: pnpm build | |
# Step 12: Run publish | |
- name: Publish | |
env: | |
NODE_AUTH_TOKEN: ${{ secrets.NPM_TOKEN }} | |
NPM_CONFIG_PROVENANCE: true | |
# Use npx instead of yarn because yarn automagically sets NPM_* environment variables | |
# like NPM_CONFIG_REGISTRY so npm publish ends up ignoring the .npmrc file | |
# which is set up by `setup-node` action. | |
run: npx nx release publish --verbose --tag $RELEASE_TAG | |
# Step 13: Upload artifacts | |
- name: Upload artifacts | |
uses: actions/upload-artifact@v4 | |
with: | |
path: './dist' |