name: "🚀 Release missing tag" run-name: "${{ github.event_name == 'schedule' && '⏰ ' || '' }}🚀 Release missing tag" on: schedule: - cron: "0 0 * * *" workflow_dispatch: concurrency: group: infinito-release cancel-in-progress: false permissions: contents: read env: REGISTRY: ghcr.io jobs: check-and-trigger: name: 🔎 Backfill highest missing release tag runs-on: ubuntu-26.04 permissions: contents: read packages: read actions: write steps: - name: ⬇️ Checkout repository (with tags) uses: actions/checkout@v7.0.0 with: fetch-depth: 0 fetch-tags: true - name: 🔍 Resolve image metadata id: vars shell: bash run: | set -euo pipefail source scripts/meta/env/load.sh owner="$(scripts/meta/resolve/repository/owner.sh)" repo_prefix="$(scripts/meta/resolve/repository/name.sh)" { echo "owner=${owner}" echo "repo_prefix=${repo_prefix}" echo "distros=${INFINITO_DISTROS}" } >> "$GITHUB_OUTPUT" - name: 🔑 Login to GHCR (for manifest checks) uses: docker/login-action@af1e73f918a031802d376d3c8bbc3fe56130a9b0 # v4.4.0 with: registry: ${{ env.REGISTRY }} username: ${{ github.actor }} password: ${{ secrets.GITHUB_TOKEN }} - name: 🤔 Determine highest version tag with missing release image id: pick shell: bash env: OWNER: ${{ steps.vars.outputs.owner }} REPO_PREFIX: ${{ steps.vars.outputs.repo_prefix }} INFINITO_DISTROS: ${{ steps.vars.outputs.distros }} run: | set -euo pipefail tag="$(scripts/meta/resolve/missing/highest_release_tag.sh)" echo "tag=${tag}" >> "$GITHUB_OUTPUT" - name: ✅ Ensure GitHub CLI is available shell: bash run: | set -euo pipefail if command -v gh >/dev/null 2>&1; then exit 0 fi ./scripts/install/apt.sh gh - name: ⚡ Trigger release workflow for missing tag if: ${{ steps.pick.outputs.tag != '' }} env: GH_TOKEN: ${{ secrets.GITHUB_TOKEN }} TAG: ${{ steps.pick.outputs.tag }} run: gh workflow run call-release-version.yml -f tag="${TAG}"