Skip to content

[ci] release

[ci] release #8111

Workflow file for this run

name: CI
on:
# No paths filter: `@ci:lint` formats markdown too, so a docs-only PR can
# still fail the build that `push` runs after merge.
pull_request:
types: [opened, synchronize]
push:
branches: [main, v3, v4]
concurrency:
group: "${{ github.workflow }}-${{ github.event_name == 'pull_request_target' && github.head_ref || github.ref }}"
cancel-in-progress: true
jobs:
build:
runs-on: ubuntu-latest
steps:
- name: Checkout code
uses: actions/checkout@v6
- name: Setup pnpm
uses: pnpm/action-setup@v6
- name: Use node
uses: actions/setup-node@v6
with:
node-version: 26
cache: pnpm
- name: Install dependencies
run: pnpm install --frozen-lockfile
- name: Build & Lint
run: |
set +e
pnpm run @ci:build & build=$!
pnpm run @ci:lint & lint=$!
wait $build; build_status=$?
wait $lint; lint_status=$?
exit $(( build_status | lint_status ))
- name: Check size snapshots
# Only the pre-commit hook writes these, and a rebase or merge skips it.
run: |
pnpm run build:sizes
git diff --exit-code .sizes .sizes.json
test:
runs-on: ubuntu-latest
name: "test: node@${{ matrix.node }}"
strategy:
fail-fast: false
matrix:
node: [22, 24, 26]
steps:
- name: Checkout code
uses: actions/checkout@v6
- name: Setup pnpm
uses: pnpm/action-setup@v6
- name: Use node@${{ matrix.node }}
uses: actions/setup-node@v6
with:
node-version: ${{ matrix.node }}
cache: pnpm
- name: Install dependencies
run: pnpm install --frozen-lockfile
- name: Run tests
if: ${{ matrix.node != 26 }}
run: pnpm run @ci:test:fast
- name: Run tests with coverage
if: ${{ matrix.node == 26 }}
run: pnpm run @ci:test
- name: Report code coverage
if: ${{ matrix.node == 26 }}
uses: codecov/codecov-action@v7
with:
token: ${{ secrets.CODECOV_TOKEN }}
# zcov merges every worker's `coverage-v8` dump into this one lcov; a
# search also ships those dumps, which codecov cannot parse.
files: ./coverage/lcov.info
disable_search: true
fail_ci_if_error: true
release:
runs-on: ubuntu-latest
needs: [build, test]
if: ${{ github.repository_owner == 'marko-js' && github.event_name == 'push' }}
permissions:
id-token: write
contents: write
pull-requests: write
steps:
- name: Checkout code
uses: actions/checkout@v6
- name: Setup pnpm
uses: pnpm/action-setup@v6
- name: Setup node
uses: actions/setup-node@v6
with:
node-version: 26
cache: pnpm
- name: Install dependencies
run: pnpm install --frozen-lockfile
- name: Release
id: changesets
uses: changesets/action@v1
with:
version: pnpm run @ci:version
publish: pnpm run @ci:release
commit: "[ci] release"
title: "[ci] release"
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}