build: enforce hermetic, reproducible local↔CI parity #1
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| name: CI - Build | |
| on: | |
| workflow_dispatch: | |
| pull_request: | |
| types: [opened, edited, synchronize] | |
| branches: [main] | |
| jobs: | |
| build: | |
| runs-on: ubuntu-latest | |
| permissions: | |
| contents: read | |
| steps: | |
| - name: Checkout | |
| uses: actions/checkout@v4 | |
| with: | |
| fetch-depth: 0 | |
| - name: Build hermetic image | |
| run: docker build -f Dockerfile.repro -t lingo-repro:20.12.2 . | |
| - name: Prepare pnpm store path | |
| run: echo "REPRO_PNPM_STORE=${{ runner.temp }}/pnpm-store" >> $GITHUB_ENV | |
| - name: Cache pnpm store | |
| uses: actions/cache@v3 | |
| with: | |
| path: ${{ env.REPRO_PNPM_STORE }} | |
| key: ${{ runner.os }}-pnpm-store-${{ hashFiles('**/pnpm-lock.yaml') }} | |
| restore-keys: | | |
| ${{ runner.os }}-pnpm-store- | |
| - name: Install deps (container) | |
| run: REPRO_PNPM_STORE="${{ env.REPRO_PNPM_STORE }}" bash scripts/repro/exec.sh pnpm install --frozen-lockfile | |
| - name: Build (container) | |
| run: REPRO_PNPM_STORE="${{ env.REPRO_PNPM_STORE }}" bash scripts/repro/exec.sh pnpm turbo build --force |