name: Purge old images from main branch on: workflow_dispatch: schedule: - cron: "0 0/3 * * *" - cron: "0 1/3 * * *" - cron: "0 2/3 * * *" jobs: find-version: name: Delete version from main ref runs-on: ubuntu-22.04 outputs: version: ${{ steps.find.outputs.version }} permissions: id-token: write contents: read steps: - name: Checkout uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4.1.1 with: ref: ${{ github.head_ref }} - name: Login to AWS uses: aws-actions/configure-aws-credentials@e3dd6a429d7300a6a4c196c26e071d42e0343502 # v4.0.2 with: role-to-assume: arn:aws:iam::795746500882:role/GithubConstellationVersionsAPIRead aws-region: eu-central-1 - name: Determine stream id: stream run: | case "${{ github.event.schedule }}" in "0 0/3 * * *") echo "stream=debug" | tee -a "$GITHUB_OUTPUT" ;; "0 1/3 * * *") echo "stream=console" | tee -a "$GITHUB_OUTPUT" ;; "0 2/3 * * *") echo "stream=nightly" | tee -a "$GITHUB_OUTPUT" ;; *) echo "Unknown schedule: ${{ github.event.schedule }}" exit 1 ;; esac - name: List versions id: list uses: ./.github/actions/versionsapi with: command: list ref: main stream: ${{ steps.stream.outputs.stream }} - name: Find version to delete id: find shell: bash run: | versions=$(cat versionsapi_output.txt) echo "Found versions:" echo "${versions}" echo "Newest 10 versions shouldn't be deleted" deletable=$(echo "${versions}" | head -n -10) if [[ -z "${deletable}" ]]; then echo "No deletable versions found" exit 0 fi echo "Found deletable versions:" echo "${deletable}" ver=$(echo "${deletable}" | head -n 1) echo "Deleting oldest version: ${ver}" echo "version=${ver}" | tee -a "$GITHUB_OUTPUT" delete: name: Delete version if: needs.find-version.outputs.version != '' permissions: id-token: write contents: read uses: ./.github/workflows/versionsapi.yml needs: find-version secrets: inherit with: command: remove version_path: ${{ needs.find-version.outputs.version }}