Files
better-auth/.github/workflows/ci.yml

190 lines
5.8 KiB
YAML

name: CI
on:
pull_request:
types:
- opened
- synchronize
push:
branches:
- main
merge_group:
permissions: {}
env:
TURBO_TOKEN: ${{ secrets.TURBO_TOKEN }}
TURBO_TEAM: ${{ vars.TURBO_TEAM || github.repository_owner }}
BETTER_AUTH_TELEMETRY_ENDPOINT: ${{ vars.BETTER_AUTH_TELEMETRY_ENDPOINT }}
jobs:
lint:
runs-on: starsling-ubuntu-24.04
permissions:
contents: read
concurrency:
group: ${{ github.workflow }}-lint-${{ github.event.pull_request.number || github.event.merge_group.head_ref || github.ref }}
cancel-in-progress: ${{ github.event_name == 'pull_request' }}
steps:
- uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6.0.1
with:
fetch-depth: 0
persist-credentials: false
- name: Cache turbo build setup
uses: actions/cache@9255dc7a253b0ccc959486e2bca901246202afeb # v5.0.1
with:
path: .turbo
key: ${{ runner.os }}-turbo-${{ github.sha }}
restore-keys: |
${{ runner.os }}-turbo-
- uses: pnpm/action-setup@41ff72655975bd51cab0327fa583b6e92b6d3061 # v4.2.0
- uses: actions/setup-node@395ad3262231945c25e8478fd5baf05154b1d79f # v6.1.0
with:
node-version-file: '.nvmrc'
registry-url: 'https://registry.npmjs.org'
cache: pnpm
- name: Install
run: pnpm install --frozen-lockfile
- name: Build
env:
TURBO_TOKEN: ${{ secrets.TURBO_TOKEN }}
TURBO_TEAM: ${{ vars.TURBO_TEAM || github.repository_owner }}
run: pnpm build
- name: Lint
env:
TURBO_TOKEN: ${{ secrets.TURBO_TOKEN }}
TURBO_TEAM: ${{ vars.TURBO_TEAM || github.repository_owner }}
run: pnpm lint
- name: Lint Dependencies
env:
TURBO_TOKEN: ${{ secrets.TURBO_TOKEN }}
TURBO_TEAM: ${{ vars.TURBO_TEAM || github.repository_owner }}
run: pnpm lint:dependencies
- name: Lint Packages
env:
TURBO_TOKEN: ${{ secrets.TURBO_TOKEN }}
TURBO_TEAM: ${{ vars.TURBO_TEAM || github.repository_owner }}
run: pnpm lint:packages
- name: Lint Spell
env:
TURBO_TOKEN: ${{ secrets.TURBO_TOKEN }}
TURBO_TEAM: ${{ vars.TURBO_TEAM || github.repository_owner }}
run: pnpm lint:spell
- name: Lint Format
run: pnpm format:check
- name: Lint Types
env:
TURBO_TOKEN: ${{ secrets.TURBO_TOKEN }}
TURBO_TEAM: ${{ vars.TURBO_TEAM || github.repository_owner }}
run: pnpm lint:types
typecheck:
runs-on: starsling-ubuntu-24.04
permissions:
contents: read
concurrency:
group: ${{ github.workflow }}-typecheck-${{ github.event.pull_request.number || github.event.merge_group.head_ref || github.ref }}
cancel-in-progress: ${{ github.event_name == 'pull_request' }}
steps:
- uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6.0.1
with:
fetch-depth: 0
persist-credentials: false
- name: Cache turbo build setup
uses: actions/cache@9255dc7a253b0ccc959486e2bca901246202afeb # v5.0.1
with:
path: .turbo
key: ${{ runner.os }}-turbo-${{ github.sha }}
restore-keys: |
${{ runner.os }}-turbo-
- uses: pnpm/action-setup@41ff72655975bd51cab0327fa583b6e92b6d3061 # v4.2.0
- uses: actions/setup-node@395ad3262231945c25e8478fd5baf05154b1d79f # v6.1.0
with:
node-version-file: '.nvmrc'
registry-url: 'https://registry.npmjs.org'
cache: pnpm
- name: Install
run: pnpm install --frozen-lockfile
- name: Build
run: pnpm build
- name: Typecheck
run: pnpm typecheck
- name: Typecheck dist declarations
run: pnpm typecheck:dist
test:
runs-on: starsling-ubuntu-24.04
permissions:
contents: read
timeout-minutes: 30
concurrency:
group: ${{ github.workflow }}-test-${{ matrix.node-version }}-${{ github.event.pull_request.number || github.event.merge_group.head_ref || github.ref }}
cancel-in-progress: ${{ github.event_name == 'pull_request' }}
strategy:
fail-fast: false
matrix:
node-version: [22.x, 24.x]
steps:
- name: Skip tests in merge queue
if: github.event_name == 'merge_group'
run: echo "Skipping tests in merge queue"
- uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6.0.1
if: github.event_name != 'merge_group'
with:
fetch-depth: 0
persist-credentials: false
- name: Cache turbo build setup
if: github.event_name != 'merge_group'
uses: actions/cache@9255dc7a253b0ccc959486e2bca901246202afeb # v5.0.1
with:
path: .turbo
key: ${{ runner.os }}-turbo-${{ github.sha }}
restore-keys: |
${{ runner.os }}-turbo-
- uses: pnpm/action-setup@41ff72655975bd51cab0327fa583b6e92b6d3061 # v4.2.0
if: github.event_name != 'merge_group'
- uses: actions/setup-node@395ad3262231945c25e8478fd5baf05154b1d79f # v6.1.0
if: github.event_name != 'merge_group'
with:
node-version: ${{ matrix.node-version }}
registry-url: 'https://registry.npmjs.org'
cache: pnpm
- name: Install
if: github.event_name != 'merge_group'
run: pnpm install --frozen-lockfile
- name: Start Docker Containers
if: github.event_name != 'merge_group'
run: docker compose up -d --wait --wait-timeout 60
- name: Test
if: github.event_name != 'merge_group'
run: pnpm coverage
- name: Stop Docker Containers
if: github.event_name != 'merge_group'
run: docker compose down