Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Add retry to clean-up packages GitHub action #404

Merged
merged 1 commit into from
Nov 10, 2023
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
52 changes: 52 additions & 0 deletions .github/actions/cleanup-stale/action.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,52 @@
name: Delete stale images

description: Delete stale images

inputs:
delay:
description: Delay before running the action (in seconds)
required: false
default: "0" # seconds
token:
description: A Github PAT token to fetch repository and delete packages (needs delete:packages permissions).
required: true

runs:
using: composite
steps:
- name: Delay # needed in case of retry to avoid triggering the rate limit of the Github API
if: ${{ inputs.delay != '0' }}
shell: bash
run: |
sleep ${{ inputs.delay }}
- name: Delete older than a month vnext images
uses: snok/container-retention-policy@v2
with:
image-names: device/*
cut-off: One month ago UTC
account-type: org
org-name: plgd-dev
filter-tags: vnext-*
skip-tags: main
token: ${{ inputs.token }}

- name: Set up Docker Buildx for delete untagged images action
uses: docker/setup-buildx-action@v3

- name: Login to GitHub Container Registry for delete untagged images action
uses: docker/login-action@v3
with:
registry: ghcr.io
username: ${{ github.actor }}
password: ${{ inputs.token }}

- name: Delete untagged images with no dependency
uses: Chizkiyahu/delete-untagged-ghcr-action@v3
with:
repository: ${{ github.repository }}
repository_owner: ${{ github.repository_owner }}
token: ${{ inputs.token }}
owner_type: org
untagged_only: true
except_untagged_multiplatform: true
46 changes: 19 additions & 27 deletions .github/workflows/ghcr-cleanup.yaml
Original file line number Diff line number Diff line change
@@ -1,42 +1,34 @@
name: Delete old ghcr images
on:
schedule:
- cron: "15 1 * * *" # every day at 1:15am
- cron: "0 1 * * *" # every day at 1:00am
workflow_dispatch:

jobs:
ghcr-cleanup:
if: ${{ github.event_name == 'schedule' || github.event_name == 'workflow_dispatch' }}
name: Delete old vnext images
name: Delete stale or untagged images
runs-on: ubuntu-latest
steps:
- name: Delete older than a month vnext images
uses: snok/container-retention-policy@v2
- name: Checkout local actions
uses: actions/checkout@v4
- name: Delete stale or untagged images (1)
id: run-1
continue-on-error: true
uses: ./.github/actions/cleanup-stale
with:
image-names: device/*
cut-off: One month ago UTC
account-type: org
org-name: plgd-dev
filter-tags: vnext-*
skip-tags: main,latest
token: ${{ secrets.GHCR_CLEANUP_PAT }}

- name: Set up Docker Buildx for delete untagged images action
uses: docker/setup-buildx-action@v3

- name: Login to GitHub Container Registry for delete untagged images action
uses: docker/login-action@v3
- name: Delete stale or untagged images (2)
id: run-2
if: ${{ steps.run-1.outcome == 'failure' }}
with:
registry: ghcr.io
username: ${{ github.actor }}
password: ${{ secrets.GHCR_CLEANUP_PAT }}

- name: Delete untagged images with no dependency
uses: Chizkiyahu/delete-untagged-ghcr-action@v3
token: ${{ secrets.GHCR_CLEANUP_PAT }}
delay: 60
continue-on-error: true
uses: ./.github/actions/cleanup-stale
- name: Delete stale or untagged images (3)
if: ${{ steps.run-2.outcome == 'failure' }}
uses: ./.github/actions/cleanup-stale
with:
repository: ${{ github.repository }}
repository_owner: ${{ github.repository_owner }}
token: ${{ secrets.GHCR_CLEANUP_PAT }}
owner_type: org
untagged_only: true
except_untagged_multiplatform: true
delay: 60