cache/.github/workflows/gcs-integration-test.yml
2025-04-11 14:01:08 +05:30

127 lines
No EOL
3.4 KiB
YAML

name: GCS Integration Tests
on:
push:
branches: [main]
paths-ignore:
- '**.md'
pull_request:
branches: [main]
paths-ignore:
- '**.md'
workflow_dispatch:
jobs:
test-gcs-basic:
runs-on: ubuntu-latest
env:
GCS_BUCKET: ${{ secrets.GCS_TEST_BUCKET }}
steps:
- name: Checkout
uses: actions/checkout@v4
- name: Set up GCP credentials
uses: google-github-actions/auth@v2
with:
credentials_json: ${{ secrets.GCP_CREDENTIALS }}
- name: Generate test files
run: |
mkdir -p gcs-test-cache
echo "Test content $(date)" > gcs-test-cache/test1.txt
echo "More test content $(date)" > gcs-test-cache/test2.txt
- name: Save cache to GCS
id: cache-save
uses: ./
with:
path: gcs-test-cache
key: gcs-integration-${{ github.run_id }}
gcs-bucket: ${{ env.GCS_BUCKET }}
- name: Delete local cache
run: rm -rf gcs-test-cache
- name: Restore cache from GCS
id: cache-restore
uses: ./
with:
path: gcs-test-cache
key: gcs-integration-${{ github.run_id }}
gcs-bucket: ${{ env.GCS_BUCKET }}
- name: Verify cache contents
run: |
if [ ! -f "gcs-test-cache/test1.txt" ] || [ ! -f "gcs-test-cache/test2.txt" ]; then
echo "Cache files not restored correctly"
exit 1
fi
echo "Cache successfully restored from GCS"
test-gcs-cross-runner:
strategy:
matrix:
os: [ubuntu-latest, windows-latest, macOS-latest]
fail-fast: false
runs-on: ${{ matrix.os }}
env:
GCS_BUCKET: ${{ secrets.GCS_TEST_BUCKET }}
steps:
- name: Checkout
uses: actions/checkout@v4
- name: Set up GCP credentials
uses: google-github-actions/auth@v2
with:
credentials_json: ${{ secrets.GCP_CREDENTIALS }}
- name: Generate cross-platform files
shell: bash
run: |
mkdir -p cross-platform-cache
echo "Cross-platform test content ${{ runner.os }} $(date)" > cross-platform-cache/test-${{ runner.os }}.txt
- name: Save to GCS with cross-platform key
uses: ./
with:
path: cross-platform-cache
key: cross-platform-${{ github.run_id }}
gcs-bucket: ${{ env.GCS_BUCKET }}
gcs-path-prefix: cross-platform-tests
test-gcs-fallback:
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v4
- name: Generate fallback test files
run: |
mkdir -p fallback-cache
echo "Fallback test content $(date)" > fallback-cache/fallback.txt
- name: Test fallback to GitHub cache
uses: ./
with:
path: fallback-cache
key: fallback-test-${{ github.run_id }}
gcs-bucket: "this-bucket-does-not-exist-${{ github.run_id }}"
- name: Delete local cache
run: rm -rf fallback-cache
- name: Restore with fallback
id: restore-fallback
uses: ./
with:
path: fallback-cache
key: fallback-test-${{ github.run_id }}
gcs-bucket: "this-bucket-does-not-exist-${{ github.run_id }}"
- name: Verify fallback mechanism worked
run: |
if [ ! -f "fallback-cache/fallback.txt" ]; then
echo "Fallback mechanism did not work correctly"
exit 1
fi
echo "Successfully fell back to GitHub cache"