diff --git a/.github/workflows/e2e_test.yml b/.github/workflows/e2e_test.yml new file mode 100644 index 0000000..c133530 --- /dev/null +++ b/.github/workflows/e2e_test.yml @@ -0,0 +1,81 @@ +name: E2E Test + +on: + push: + branches: + - main + workflow_dispatch: + + +jobs: + upload: + runs-on: ${{ matrix.os }} + strategy: + matrix: + os: [ubuntu-latest, windows-latest, macos-latest] + name: cache upload (${{ matrix.os }}) + steps: + - name: Create file to cache + run: | + mkdir test-cache + echo "foo" > test-cache/test.txt + - uses: actions/cache@v3 + with: + path: test-cache + key: ${{ matrix.os }}-runner-${{ github.run_number }}-${{ github.run_attempt }} + canary: + needs: upload + strategy: + fail-fast: false + matrix: + os: [ubuntu-latest, windows-latest, macos-latest] + runs-on: ${{ matrix.os }} + env: + CacheKey: ${{ matrix.os }}-runner-${{ github.run_number }}-${{ github.run_attempt }} + steps: + - name: checkout repo + uses: actions/checkout@v2 + - name: Restore Go modules cache + uses: actions/cache@v3 + with: + path: ~/go/pkg/mod + key: go-${{ runner.os }}-${{ hashFiles('go.mod') }} + restore-keys: | + go-${{ runner.os }}- + - name: Build the project + run: go build + - name: Install extension + env: + GITHUB_TOKEN: ${{ secrets.REPO_WRITE_TOKEN }} + run: gh extensions install . + - name: Print help + shell: bash + env: + GITHUB_TOKEN: ${{ secrets.REPO_WRITE_TOKEN }} + run: | + gh actions-cache --help + - name: List Command + shell: bash + env: + GITHUB_TOKEN: ${{ secrets.REPO_WRITE_TOKEN }} + run: | + cache_found=$(gh actions-cache list --key $CacheKey --limit 100 --branch $GITHUB_REF --order desc --sort created-at | grep $CacheKey) + echo $cache_found + [[ -z "$cache_found" ]] && exit 1 || echo "Cache List Successful" + - name: Delete Command + shell: bash + env: + GITHUB_TOKEN: ${{ secrets.REPO_WRITE_TOKEN }} + run: | + cache_delete=$(gh actions-cache delete $CacheKey --branch $GITHUB_REF --confirm | grep "Deleted 1 cache entry with key") + echo $cache_delete + [[ -z "$cache_delete" ]] && exit 1 || echo "Cache Delete Successful" + - name: Slack Notification on failure + if: failure() + uses: 8398a7/action-slack@a74b761b4089b5d730d813fbedcd2ec5d394f3af + with: + text: actions/gh-actions-cache E2E test failure + status: ${{ job.status }} + fields: repo,workflow,message,author,action,ref + env: + SLACK_WEBHOOK_URL: ${{ secrets.SLACK_WEBHOOK_URL }}