diff --git a/.github/actions/setup-bun/action.yml b/.github/actions/setup-bun/action.yml new file mode 100644 index 000000000..d4958673e --- /dev/null +++ b/.github/actions/setup-bun/action.yml @@ -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 }} diff --git a/.github/workflows/app.yml b/.github/workflows/app.yml index e469287c7..b00eedae6 100644 --- a/.github/workflows/app.yml +++ b/.github/workflows/app.yml @@ -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 diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index b22b3c85f..5cbee50d4 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -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: | diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 98e3428e0..06ebda4d4 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -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 diff --git a/.github/workflows/docs.yml b/.github/workflows/docs.yml index dddff6e8d..9913724ff 100644 --- a/.github/workflows/docs.yml +++ b/.github/workflows/docs.yml @@ -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 diff --git a/.github/workflows/heavy-tests.yml b/.github/workflows/heavy-tests.yml index 30a41e06c..75704c1e0 100644 --- a/.github/workflows/heavy-tests.yml +++ b/.github/workflows/heavy-tests.yml @@ -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 diff --git a/.github/workflows/preview.yml b/.github/workflows/preview.yml index d09fb5894..108fc2836 100644 --- a/.github/workflows/preview.yml +++ b/.github/workflows/preview.yml @@ -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