forked from NVIDIA/cuda-quantum
-
Notifications
You must be signed in to change notification settings - Fork 0
134 lines (121 loc) · 4.48 KB
/
clean_caches.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
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
on:
workflow_dispatch:
inputs:
cache_type:
type: choice
description: What kind of caches to delete. Note that *all* caches of that type will be deleted.
options:
- branch
- tar
- selective
required: false
default: selective
cache_keys:
type: string
description: Space separated string of cache keys to delete.
required: false
workflow_run:
workflows:
- CI
- Deployments
types:
- completed
delete:
pull_request_target:
types:
- closed
name: Clean GitHub caches
jobs:
automatic_cleanup:
name: Clean up GitHub caches produced by other workflows
if: github.event_name == 'workflow_run'
permissions: write-all
runs-on: ubuntu-latest
steps:
- name: Download cache keys
id: artifacts
run: |
artifacts_url=${{ github.event.workflow_run.artifacts_url }}
artifacts=$(gh api $artifacts_url -q '.artifacts[] | {name: .name, url: .archive_download_url}')
for artifact in `echo "$artifacts"`; do
name=`echo $artifact | jq -r '.name'`
if [ "${name#cache_key}" != "${name}" ]; then
url=`echo $artifact | jq -r '.url'`
gh api $url > cache_keys.zip
unzip -d cache_keys cache_keys.zip
for file in `find cache_keys/ -type f`; do
keys+=" `cat $file`"
done
rm -rf cache_keys cache_keys.zip
fi
done
echo "cache_keys='$(echo $keys)'" >> $GITHUB_OUTPUT
env:
GH_TOKEN: ${{ github.token }}
- run: |
gh extension install actions/gh-actions-cache
for key in `echo ${{ steps.artifacts.outputs.cache_keys }}`; do
(gh actions-cache delete $key -R ${{ github.repository }} --confirm && echo "Deleted cache $key") \
|| echo "Cache $key not found"
done
env:
GH_TOKEN: ${{ github.token }}
selective_cleanup:
name: Clean up selective GitHub caches
if: (github.event_name == 'workflow_dispatch' && inputs.cache_keys != '' )
runs-on: ubuntu-latest
permissions: write-all
steps:
- run: |
gh extension install actions/gh-actions-cache
for key in ${{ inputs.cache_keys }}; do
(gh actions-cache delete $key -R ${{ github.repository }} --confirm && echo "Deleted cache $key") \
|| echo "Cache $key not found"
done
env:
GH_TOKEN: ${{ github.token }}
tar_cleanup:
name: Clean up Github caches with tar archives
if: (github.event_name == 'workflow_dispatch' && inputs.cache_type == 'tar' )
runs-on: ubuntu-latest
permissions: write-all
steps:
- run: |
gh extension install actions/gh-actions-cache
keys=$(gh actions-cache list -R ${{ github.repository }} --key tar- | cut -f 1 )
for key in $keys; do
(gh actions-cache delete $key -R ${{ github.repository }} --confirm && echo "Deleted cache $key") \
|| echo "Cache $key not found"
done
env:
GH_TOKEN: ${{ github.token }}
branch_cleanup:
name: Clean up branch specific GitHub caches
if: (github.event_name == 'workflow_dispatch' && inputs.cache_type == 'branch' ) || (github.event_name == 'delete' && github.event.ref_type == 'branch')
runs-on: ubuntu-latest
permissions: write-all
steps:
- run: |
gh extension install actions/gh-actions-cache
keys=$(gh actions-cache list -R ${{ github.repository }} -B ${{ github.event.ref }} | cut -f 1 )
for key in $keys; do
(gh actions-cache delete $key -R ${{ github.repository }} --confirm && echo "Deleted cache $key") \
|| echo "Cache $key not found"
done
env:
GH_TOKEN: ${{ github.token }}
pr_cleanup:
name: Clean up PR related GitHub caches
if: github.event_name == 'pull_request_target'
runs-on: ubuntu-latest
permissions: write-all
steps:
- run: |
gh extension install actions/gh-actions-cache
keys=$(gh actions-cache list -R ${{ github.repository }} -B refs/pull/${{ github.event.number }}/merge | cut -f 1 )
for key in $keys; do
(gh actions-cache delete $key -R ${{ github.repository }} --confirm && echo "Deleted cache $key") \
|| echo "Cache $key not found"
done
env:
GH_TOKEN: ${{ github.token }}