-
-
Notifications
You must be signed in to change notification settings - Fork 176
40 lines (36 loc) · 1.77 KB
/
delete_branch_cache.yml
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
# yamllint disable rule:line-length
# yaml-language-server: $schema=https://json.schemastore.org/github-workflow.json
---
# Taken from https://github.com/actions/cache/blob/main/tips-and-workarounds.md#force-deletion-of-caches-overriding-default-cache-eviction-policy
name: cleanup caches by a branch
on: # yamllint disable-line rule:truthy
pull_request:
types:
- closed
workflow_dispatch:
jobs:
cleanup:
runs-on: ubuntu-latest
steps:
- name: Cleanup
run: |
gh extension install actions/gh-actions-cache
set -x
REPO=${{ github.repository }}
# The github.ref should be refs/pull/XXX/merge, but for some reason, it was set to 'main' in an actual run. Debugging this would be a ginormous pain, since it can apparently only be properly done on an actual merge/close (when I tried testing it locally with a close, it *did* work!), and so we'll just set this manually and ignore it for now. Accidentally deleting the caches on main is unacceptable.
# BRANCH=${{ github.ref }}
BRANCH=${PR_TARGET_NAME}
echo "Fetching list of cache key"
cacheKeysForPR=$(gh actions-cache list -R $REPO -B $BRANCH | cut -f 1 )
## Setting this to not fail the workflow while deleting cache keys.
set +e
echo "Deleting caches..."
for cacheKey in $cacheKeysForPR
do
gh actions-cache delete $cacheKey -R $REPO -B $BRANCH --confirm
done
echo "Done"
env:
# Note that this can only run on branches from the repo; otherwise, we don't have write permissions so we can't delete the caches
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
PR_TARGET_NAME: ${{ format('refs/pull/{0}/merge', github.event.number) }}