From ba042ad224f0951ce594cf90bd84c32732864ec8 Mon Sep 17 00:00:00 2001 From: Cojocaru David Date: Tue, 22 Apr 2025 22:34:03 +0300 Subject: [PATCH] chore: clean up workflow steps and improve reliability --- .github/workflows/astro.yml | 69 ++++++++++++++----------------------- 1 file changed, 26 insertions(+), 43 deletions(-) diff --git a/.github/workflows/astro.yml b/.github/workflows/astro.yml index a0a71c3..e4d028f 100644 --- a/.github/workflows/astro.yml +++ b/.github/workflows/astro.yml @@ -1,78 +1,61 @@ -# Sample workflow for building and deploying an Astro site to GitHub Pages -# -# To get started with Astro see: https://docs.astro.build/en/getting-started/ -# name: Deploy Astro site to Pages on: - # Runs on pushes targeting the default branch push: branches: ["master"] - - # Allows you to run this workflow manually from the Actions tab workflow_dispatch: -# Sets permissions of the GITHUB_TOKEN to allow deployment to GitHub Pages permissions: contents: read pages: write id-token: write -# Allow only one concurrent deployment, skipping runs queued between the run in-progress and latest queued. -# However, do NOT cancel in-progress runs as we want to allow these production deployments to complete. concurrency: group: "pages" cancel-in-progress: false env: - BUILD_PATH: "." # default value when not using subfolders - # BUILD_PATH: subfolder + BUILD_PATH: "." jobs: build: name: Build runs-on: ubuntu-latest steps: - - name: Checkout + - name: Checkout repository uses: actions/checkout@v4 - - name: Detect package manager - id: detect-package-manager - run: | - if [ -f "${{ github.workspace }}/yarn.lock" ]; then - echo "manager=yarn" >> $GITHUB_OUTPUT - echo "command=install" >> $GITHUB_OUTPUT - echo "runner=yarn" >> $GITHUB_OUTPUT - echo "lockfile=yarn.lock" >> $GITHUB_OUTPUT - exit 0 - elif [ -f "${{ github.workspace }}/package.json" ]; then - echo "manager=npm" >> $GITHUB_OUTPUT - echo "command=ci" >> $GITHUB_OUTPUT - echo "runner=npx --no-install" >> $GITHUB_OUTPUT - echo "lockfile=package-lock.json" >> $GITHUB_OUTPUT - exit 0 - else - echo "Unable to determine package manager" - exit 1 - fi - - name: Setup Node - uses: actions/setup-node@v4 + + - name: Setup Bun v2 + uses: oven-sh/setup-bun@v2 with: - node-version: "20" - cache: ${{ steps.detect-package-manager.outputs.manager }} - cache-dependency-path: ${{ env.BUILD_PATH }}/${{ steps.detect-package-manager.outputs.lockfile }} - - name: Setup Pages + bun-version: latest + + - name: Cache Bun dependencies + uses: actions/cache@v4 + with: + path: | + ~/.bun/install/cache + ${{ env.BUILD_PATH }}/node_modules + key: ${{ runner.os }}-bun-${{ hashFiles('**/bun.lockb') }} + restore-keys: | + ${{ runner.os }}-bun- + + - name: Setup GitHub Pages id: pages uses: actions/configure-pages@v5 - - name: Install dependencies - run: ${{ steps.detect-package-manager.outputs.manager }} ${{ steps.detect-package-manager.outputs.command }} + + - name: Install dependencies (with Bun) + run: bun install working-directory: ${{ env.BUILD_PATH }} - - name: Build with Astro + + - name: Build Astro site (with Bun) run: | - ${{ steps.detect-package-manager.outputs.runner }} astro build \ + bun run astro build \ --site "${{ steps.pages.outputs.origin }}" \ --base "${{ steps.pages.outputs.base_path }}" working-directory: ${{ env.BUILD_PATH }} - - name: Upload artifact + + - name: Upload build artifact uses: actions/upload-pages-artifact@v3 with: path: ${{ env.BUILD_PATH }}/dist