chore(deps-dev): bump the dev-dependencies group across 1 directory w… #1109
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
| # This workflow will build a golang project | |
| # For more information see: https://docs.github.com/en/actions/automating-builds-and-tests/building-and-testing-go | |
| name: Test | |
| on: | |
| push: | |
| paths-ignore: | |
| - "docs/**" | |
| - "*.md" | |
| pull_request: | |
| paths-ignore: | |
| - "docs/**" | |
| - "*.md" | |
| workflow_dispatch: | |
| jobs: | |
| test-nix: | |
| runs-on: ubuntu-latest | |
| steps: | |
| - uses: actions/checkout@v4 | |
| - name: Set up Go | |
| uses: actions/setup-go@v4 | |
| with: | |
| go-version: "1.24" | |
| - name: Install gotestsum | |
| run: go install gotest.tools/gotestsum@latest | |
| - name: Create Fake WebUI Sources | |
| run: | | |
| mkdir -p webui/dist | |
| # Create an empty gzip file for testing | |
| gzip -c /dev/null > webui/dist/index.html.gz | |
| - name: Build | |
| run: go build ./... | |
| - name: Test | |
| run: PATH=$(pwd):$PATH gotestsum ./... -- --race | |
| test-webui: | |
| runs-on: ubuntu-latest | |
| env: | |
| TZ: UTC | |
| steps: | |
| - uses: actions/checkout@v4 | |
| - name: Setup pnpm | |
| uses: pnpm/action-setup@v4 | |
| with: | |
| version: 9 | |
| - name: Setup Node | |
| uses: actions/setup-node@v4 | |
| with: | |
| node-version: "20" | |
| cache: pnpm | |
| cache-dependency-path: webui/pnpm-lock.yaml | |
| - name: Install dependencies | |
| run: cd webui && pnpm install --frozen-lockfile | |
| # Runs compile-i18n (paraglide) first, then vitest. | |
| - name: Test | |
| run: cd webui && pnpm test | |
| - name: Typecheck | |
| run: cd webui && pnpm run check | |
| test-e2e-web: | |
| runs-on: ubuntu-latest | |
| env: | |
| # Not RCLONE_*: rclone reads RCLONE_VERSION as its --version flag. | |
| E2E_RCLONE_VERSION: v1.69.1 | |
| steps: | |
| - uses: actions/checkout@v4 | |
| - name: Set up Go | |
| uses: actions/setup-go@v4 | |
| with: | |
| go-version: "1.24" | |
| - name: Setup pnpm | |
| uses: pnpm/action-setup@v4 | |
| with: | |
| version: 9 | |
| - name: Setup Node | |
| uses: actions/setup-node@v4 | |
| with: | |
| node-version: "20" | |
| cache: pnpm | |
| cache-dependency-path: webui/pnpm-lock.yaml | |
| - name: Install dependencies | |
| run: cd webui && pnpm install --frozen-lockfile | |
| - name: Build WebUI | |
| run: cd webui && pnpm run build | |
| - name: Build backrest binary (embeds the real WebUI) | |
| run: | | |
| mkdir -p webui/e2e/.cache | |
| go build -o webui/e2e/.cache/backrest ./cmd/backrest | |
| # Keyed on the file that pins RequiredResticVersion; global-setup | |
| # provisions restic into this directory on a cache miss. | |
| - name: Cache restic | |
| uses: actions/cache@v4 | |
| with: | |
| path: webui/e2e/.cache/restic-data | |
| key: restic-e2e-${{ hashFiles('internal/resticinstaller/resticinstaller.go') }} | |
| - name: Cache playwright browsers | |
| uses: actions/cache@v4 | |
| with: | |
| path: ~/.cache/ms-playwright | |
| key: playwright-${{ hashFiles('webui/pnpm-lock.yaml') }} | |
| - name: Install playwright chromium | |
| run: cd webui && pnpm exec playwright install --with-deps chromium | |
| # restic's rclone backend spawns the `rclone` binary; the rclone-repo | |
| # e2e spec skips itself if rclone is absent, so provision it for coverage. | |
| - name: Cache rclone | |
| id: cache-rclone | |
| uses: actions/cache@v4 | |
| with: | |
| path: webui/e2e/.cache/rclone-bin | |
| key: rclone-${{ env.E2E_RCLONE_VERSION }} | |
| - name: Install rclone | |
| run: | | |
| dest="$PWD/webui/e2e/.cache/rclone-bin" | |
| if [ ! -x "$dest/rclone" ]; then | |
| mkdir -p "$dest" | |
| zip="rclone-${E2E_RCLONE_VERSION}-linux-amd64" | |
| curl -fsSL "https://downloads.rclone.org/${E2E_RCLONE_VERSION}/${zip}.zip" -o /tmp/rclone.zip | |
| unzip -j -o /tmp/rclone.zip "${zip}/rclone" -d "$dest" | |
| chmod +x "$dest/rclone" | |
| fi | |
| echo "$dest" >> "$GITHUB_PATH" | |
| - name: Run e2e tests | |
| run: | | |
| cd webui | |
| E2E_SKIP_WEBUI_BUILD=1 E2E_BACKREST_BIN=$PWD/e2e/.cache/backrest pnpm run e2e | |
| - name: Upload playwright report | |
| uses: actions/upload-artifact@v4 | |
| if: failure() | |
| with: | |
| name: playwright-report | |
| path: | | |
| webui/playwright-report/ | |
| webui/test-results/ | |
| test-win: | |
| runs-on: windows-latest | |
| steps: | |
| - uses: actions/checkout@v3 | |
| - name: Set up Go | |
| uses: actions/setup-go@v4 | |
| with: | |
| go-version: "1.24" | |
| - name: Create Fake WebUI Sources | |
| run: | | |
| New-Item -Path .\webui\dist-windows\index.html -ItemType File -Force | |
| - name: Resolve latest restic version | |
| shell: powershell | |
| id: restic-version | |
| run: | | |
| $latest = Invoke-RestMethod -Uri "https://api.github.com/repos/restic/restic/releases/latest" | |
| $tag = $latest.tag_name | |
| if ($tag.StartsWith("v")) { | |
| $tag = $tag.Substring(1) | |
| } | |
| echo "RESTIC_VERSION=$tag" >> $env:GITHUB_ENV | |
| - name: Cache restic | |
| id: cache-restic | |
| uses: actions/cache@v3 | |
| with: | |
| path: restic-bin | |
| key: restic-windows-${{ env.RESTIC_VERSION }} | |
| - name: Download restic | |
| if: steps.cache-restic.outputs.cache-hit != 'true' | |
| shell: powershell | |
| run: | | |
| $tag = $env:RESTIC_VERSION | |
| $url = "https://github.com/restic/restic/releases/download/v$tag/restic_${tag}_windows_amd64.zip" | |
| $output = "restic.zip" | |
| $dest = "restic-bin" | |
| New-Item -ItemType Directory -Force -Path $dest | |
| Write-Host "Downloading $url..." | |
| Invoke-WebRequest -Uri $url -OutFile $output | |
| Expand-Archive $output -DestinationPath temp_extract -Force | |
| $extracted = Get-ChildItem -Recurse -Path temp_extract -Filter "restic*.exe" | Select-Object -First 1 | |
| if ($extracted) { | |
| Move-Item $extracted.FullName -Destination "$dest\restic.exe" -Force | |
| } else { | |
| Write-Error "Could not find restic.exe" | |
| } | |
| Remove-Item -Recurse -Force temp_extract | |
| Remove-Item -Force $output | |
| - name: Add restic to PATH | |
| run: echo "$PWD\restic-bin" >> $env:GITHUB_PATH | |
| - name: Build | |
| run: go build ./... | |
| - name: Test | |
| run: go test ./... |