cron-release-highest.ymlΒΆ

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}"