diff --git a/.github/workflows/docker-docr-cleanup.yml b/.github/workflows/docker-docr-cleanup.yml new file mode 100644 index 00000000000..2477edebabf --- /dev/null +++ b/.github/workflows/docker-docr-cleanup.yml @@ -0,0 +1,53 @@ +name: DOCR - Cleanup Container Images +on: + workflow_dispatch: + schedule: + - cron: '5 0 * * 3,6' # 12:05 UTC on Wednesdays and Saturdays (6 hour maintenance window) + +jobs: + remove: + name: Delete Old Images + runs-on: ubuntu-latest + strategy: + fail-fast: false + matrix: + repos: + - learn-api + variants: + - dev + - org + + steps: + - name: Install doctl + uses: digitalocean/action-doctl@v2 + with: + token: ${{ secrets.DIGITALOCEAN_ACCESS_TOKEN }} + + - name: Log in to DigitalOcean Container Registry with short-lived credentials + run: doctl registry login --expiry-seconds 1200 + + - name: Delete Images + uses: raisedadead/action-docr-cleanup@62b968c928fbb2dbce8b0caf11c0391f0921ea46 # v1 + with: + repository_name: '${{ matrix.variants }}/${{ matrix.repos }}' + days: '7' + keep_last: '3' + + # NOTE: We don't need to trigger garbage collection because we have a cron job that runs on news repo, which + # triggers garbage collection. This can be uncommented should a need arise. + + # clean: + # name: Do Garbage Collection + # runs-on: ubuntu-latest + # needs: remove + # steps: + # - name: Install doctl + # uses: digitalocean/action-doctl@v2 + # with: + # token: ${{ secrets.DIGITALOCEAN_ACCESS_TOKEN }} + + # - name: Log in to DigitalOcean Container Registry with short-lived credentials + # run: doctl registry login --expiry-seconds 1200 + + # - name: Trigger Garbage collection + # run: doctl registry garbage-collection start --include-untagged-manifests --force