ci: test github.ref
This commit is contained in:
137
.github/workflows/test.yml
vendored
Normal file
137
.github/workflows/test.yml
vendored
Normal file
@@ -0,0 +1,137 @@
|
|||||||
|
name: build
|
||||||
|
|
||||||
|
on:
|
||||||
|
pull_request:
|
||||||
|
types:
|
||||||
|
- opened
|
||||||
|
- reopened
|
||||||
|
- synchronize
|
||||||
|
push:
|
||||||
|
branches:
|
||||||
|
- main
|
||||||
|
- beta
|
||||||
|
|
||||||
|
concurrency:
|
||||||
|
# <workflow_name>-<branch_name>-<true || commit_sha if branch is protected>
|
||||||
|
group: ${{ github.workflow }}-${{ github.ref }}-${{ github.ref_protected && github.sha || ''}}
|
||||||
|
cancel-in-progress: true
|
||||||
|
|
||||||
|
env:
|
||||||
|
NODE_VERSION: 18.20.2
|
||||||
|
PNPM_VERSION: 8.15.7
|
||||||
|
DO_NOT_TRACK: 1 # Disable Turbopack telemetry
|
||||||
|
NEXT_TELEMETRY_DISABLED: 1 # Disable Next telemetry
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
|
||||||
|
build:
|
||||||
|
needs: changes
|
||||||
|
if: ${{ needs.changes.outputs.needs_build == 'true' }}
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
|
||||||
|
steps:
|
||||||
|
- uses: actions/checkout@v4
|
||||||
|
with:
|
||||||
|
fetch-depth: 25
|
||||||
|
|
||||||
|
# https://github.com/actions/virtual-environments/issues/1187
|
||||||
|
- name: tune linux network
|
||||||
|
run: sudo ethtool -K eth0 tx off rx off
|
||||||
|
|
||||||
|
- name: Setup Node@${{ env.NODE_VERSION }}
|
||||||
|
uses: actions/setup-node@v4
|
||||||
|
with:
|
||||||
|
node-version: ${{ env.NODE_VERSION }}
|
||||||
|
|
||||||
|
- name: Install pnpm
|
||||||
|
uses: pnpm/action-setup@v3
|
||||||
|
with:
|
||||||
|
version: ${{ env.PNPM_VERSION }}
|
||||||
|
run_install: false
|
||||||
|
|
||||||
|
- name: Get pnpm store directory
|
||||||
|
shell: bash
|
||||||
|
run: |
|
||||||
|
echo "STORE_PATH=$(pnpm store path --silent)" >> $GITHUB_ENV
|
||||||
|
|
||||||
|
- name: Setup pnpm cache
|
||||||
|
uses: actions/cache@v4
|
||||||
|
timeout-minutes: 720
|
||||||
|
with:
|
||||||
|
path: ${{ env.STORE_PATH }}
|
||||||
|
key: pnpm-store-${{ hashFiles('**/pnpm-lock.yaml') }}
|
||||||
|
restore-keys: |
|
||||||
|
pnpm-store-
|
||||||
|
pnpm-store-${{ hashFiles('**/pnpm-lock.yaml') }}
|
||||||
|
|
||||||
|
- run: pnpm install
|
||||||
|
- run: pnpm run build:all
|
||||||
|
env:
|
||||||
|
DO_NOT_TRACK: 1 # Disable Turbopack telemetry
|
||||||
|
|
||||||
|
- name: Cache build
|
||||||
|
uses: actions/cache@v4
|
||||||
|
timeout-minutes: 10
|
||||||
|
with:
|
||||||
|
path: ./*
|
||||||
|
key: ${{ github.sha }}-${{ github.run_number }}
|
||||||
|
|
||||||
|
tests-unit:
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
needs: build
|
||||||
|
|
||||||
|
steps:
|
||||||
|
# https://github.com/actions/virtual-environments/issues/1187
|
||||||
|
- name: tune linux network
|
||||||
|
run: sudo ethtool -K eth0 tx off rx off
|
||||||
|
|
||||||
|
- name: Setup Node@${{ env.NODE_VERSION }}
|
||||||
|
uses: actions/setup-node@v4
|
||||||
|
with:
|
||||||
|
node-version: ${{ env.NODE_VERSION }}
|
||||||
|
|
||||||
|
- name: Install pnpm
|
||||||
|
uses: pnpm/action-setup@v3
|
||||||
|
with:
|
||||||
|
version: ${{ env.PNPM_VERSION }}
|
||||||
|
run_install: false
|
||||||
|
|
||||||
|
- name: Restore build
|
||||||
|
uses: actions/cache@v4
|
||||||
|
timeout-minutes: 10
|
||||||
|
with:
|
||||||
|
path: ./*
|
||||||
|
key: ${{ github.sha }}-${{ github.run_number }}
|
||||||
|
|
||||||
|
- name: Unit Tests
|
||||||
|
run: pnpm test:unit
|
||||||
|
env:
|
||||||
|
NODE_OPTIONS: --max-old-space-size=8096
|
||||||
|
|
||||||
|
all-green:
|
||||||
|
name: All Green
|
||||||
|
if: always()
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
needs:
|
||||||
|
- build
|
||||||
|
- tests-unit
|
||||||
|
|
||||||
|
steps:
|
||||||
|
# - if: ${{ always() && (contains(needs.*.result, 'failure') || contains(needs.*.result, 'cancelled')) }}
|
||||||
|
- if: ${{ always() }}
|
||||||
|
run: echo "Sample success of all jobs"
|
||||||
|
|
||||||
|
only-on-beta:
|
||||||
|
name: Test on beta
|
||||||
|
# if: github.ref == 'refs/heads/beta'
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
needs:
|
||||||
|
- all-green
|
||||||
|
|
||||||
|
steps:
|
||||||
|
# debug github.ref output
|
||||||
|
- run: |
|
||||||
|
echo github.ref: ${{ github.ref }}
|
||||||
|
echo ${{ github.ref == 'refs/heads/beta' }}
|
||||||
|
echo ${{ github.ref == 'refs/heads/main' }}
|
||||||
|
|
||||||
Reference in New Issue
Block a user