chore: delete untagged images (keeping 10) #5
Workflow file for this run
This file contains 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
name: Cleanup old images | |
on: | |
schedule: | |
- cron: '0 0 * * *' # 12am every day | |
workflow_dispatch: | |
pull_request: | |
permissions: | |
packages: write | |
jobs: | |
cleanup: | |
runs-on: ubuntu-latest | |
strategy: | |
fail-fast: false | |
matrix: | |
image: [lumina] | |
steps: | |
- name: Delete untagged images | |
uses: actions/delete-package-versions@0d39a63126868f5eefaa47169615edd3c0f61e20 # v4 | |
with: | |
package-name: eternal-linux/${{ matrix.image }} | |
package-type: container | |
min-versions-to-keep: 10 | |
delete-only-untagged-versions: 'true' | |
token: ${{ secrets.GITHUB_TOKEN }} | |
- name: Wait for rate limit reset | |
uses: actions/github-script@v3 | |
with: | |
github-token: ${{ secrets.GITHUB_TOKEN }} | |
script: | | |
const rateLimitInfo = github.getOctokit(context.token).rest.rateLimit.get().then(result => result.data.resources.core); | |
const resetTimestamp = new Date(rateLimitInfo.reset * 1000); | |
const sleepTime = resetTimestamp - new Date() + 5000; // add 5 seconds to be sure the rate limit has been reset | |
console.log(`Rate limit reset at ${resetTimestamp}`); | |
console.log(`Sleeping for ${sleepTime}ms`); | |
await new Promise(resolve => setTimeout(resolve, sleepTime)); | |
- name: Delete PR images | |
uses: actions/delete-package-versions@0d39a63126868f5eefaa47169615edd3c0f61e20 # v4 | |
with: | |
package-name: eternal-linux/${{ matrix.image }} | |
package-type: container | |
min-versions-to-keep: 50 | |
ignore-versions: '^(?!pr[0-9]{2}-).+$' | |
token: ${{ secrets.GITHUB_TOKEN }} |