ci: share Bun setup across workflows

This commit is contained in:
Danila Poyarkov 2026-05-24 12:33:58 +03:00
parent abd795bd9a
commit 227ee97448
7 changed files with 47 additions and 60 deletions

36
.github/actions/setup-bun/action.yml vendored Normal file
View file

@ -0,0 +1,36 @@
name: Setup Bun workspace
description: Check out-independent Bun setup, cache, optional LFS pull, and install.
inputs:
install-args:
description: Arguments passed to bun install.
required: false
default: --frozen-lockfile
lfs:
description: Pull Git LFS files before installing dependencies.
required: false
default: 'false'
runs:
using: composite
steps:
- name: Pull LFS files
if: inputs.lfs == 'true'
shell: bash
run: |
git lfs install --force
git lfs pull
head -c 4 tests/fixtures/material3.fig | xxd
- uses: oven-sh/setup-bun@v2
- uses: actions/cache@v4
with:
path: ~/.bun/install/cache
key: bun-${{ runner.os }}-${{ hashFiles('bun.lock') }}
restore-keys: bun-${{ runner.os }}-
- name: Install dependencies
shell: bash
run: bun install ${{ inputs.install-args }}

View file

@ -18,9 +18,7 @@ jobs:
steps:
- uses: actions/checkout@v4
- uses: oven-sh/setup-bun@v2
- run: bun install --frozen-lockfile
- uses: ./.github/actions/setup-bun
- name: Format check
run: bun run format:check

View file

@ -36,8 +36,6 @@ jobs:
steps:
- uses: actions/checkout@v4
- uses: oven-sh/setup-bun@v2
- uses: dtolnay/rust-toolchain@stable
with:
targets: ${{ matrix.target }}
@ -53,13 +51,7 @@ jobs:
sudo apt-get update
sudo apt-get install -y libwebkit2gtk-4.1-dev libappindicator3-dev librsvg2-dev patchelf
- uses: actions/cache@v4
with:
path: ~/.bun/install/cache
key: bun-${{ runner.os }}-${{ hashFiles('bun.lock') }}
restore-keys: bun-${{ runner.os }}-
- run: bun install
- uses: ./.github/actions/setup-bun
- name: Extract release notes
id: changelog
@ -135,20 +127,12 @@ jobs:
steps:
- uses: actions/checkout@v4
- uses: oven-sh/setup-bun@v2
- uses: actions/setup-node@v4
with:
node-version: 24.x
registry-url: https://registry.npmjs.org/
- uses: actions/cache@v4
with:
path: ~/.bun/install/cache
key: bun-${{ runner.os }}-${{ hashFiles('bun.lock') }}
restore-keys: bun-${{ runner.os }}-
- run: bun install
- uses: ./.github/actions/setup-bun
- name: Build packages for publish
run: |

View file

@ -18,21 +18,9 @@ jobs:
steps:
- uses: actions/checkout@v4
- name: Pull LFS files
run: |
git lfs install --force
git lfs pull
head -c 4 tests/fixtures/material3.fig | xxd
- uses: oven-sh/setup-bun@v2
- uses: actions/cache@v4
- uses: ./.github/actions/setup-bun
with:
path: ~/.bun/install/cache
key: bun-${{ runner.os }}-${{ hashFiles('bun.lock') }}
restore-keys: bun-${{ runner.os }}-
- run: bun install --frozen-lockfile
lfs: 'true'
- name: Format check
run: bun run format:check

View file

@ -16,9 +16,7 @@ jobs:
steps:
- uses: actions/checkout@v4
- uses: oven-sh/setup-bun@v2
- run: bun install --frozen-lockfile
- uses: ./.github/actions/setup-bun
- run: bun run --filter @open-pencil/docs build

View file

@ -14,21 +14,9 @@ jobs:
steps:
- uses: actions/checkout@v4
- name: Pull LFS files
run: |
git lfs install --force
git lfs pull
head -c 4 tests/fixtures/material3.fig | xxd
- uses: oven-sh/setup-bun@v2
- uses: actions/cache@v4
- uses: ./.github/actions/setup-bun
with:
path: ~/.bun/install/cache
key: bun-${{ runner.os }}-${{ hashFiles('bun.lock') }}
restore-keys: bun-${{ runner.os }}-
- run: bun install --frozen-lockfile
lfs: 'true'
- name: Heavy fig roundtrip tests
run: bun test --timeout 180000 tests/engine/fig-roundtrip.test.ts

View file

@ -27,15 +27,10 @@ jobs:
with:
ref: ${{ github.event.pull_request.head.sha }}
- uses: oven-sh/setup-bun@v2
- uses: ./.github/actions/setup-bun
- uses: actions/cache@v4
with:
path: ~/.bun/install/cache
key: bun-${{ runner.os }}-${{ hashFiles('bun.lock') }}
restore-keys: bun-${{ runner.os }}-
- run: bun install --frozen-lockfile
- name: Format check
run: bun run format:check
- run: bun run build