---
# Copyright (c) Ansible Project
# GNU General Public License v3.0+ (see LICENSES/GPL-3.0-or-later.txt or https://www.gnu.org/licenses/gpl-3.0.txt)
# SPDX-License-Identifier: GPL-3.0-or-later

name: Helper Docker images for testing
on:
  # Run CI against all pushes (direct commits, also merged PRs), Pull Requests
  push:
    branches:
      - main
    paths:
      - .github/workflows/docker-images.yml
      - tests/images/**
  pull_request:
    branches:
      - main
    paths:
      - .github/workflows/docker-images.yml
      - tests/images/**
  # Run CI once per day (at 03:00 UTC)
  schedule:
    - cron: '0 3 * * *'

env:
  CONTAINER_REGISTRY: ghcr.io/ansible-collections

jobs:
  build:
    name: Build image ${{ matrix.name }}:${{ matrix.tag }}
    runs-on: ubuntu-24.04
    strategy:
      fail-fast: false
      matrix:
        include:
          - name: simple-1
            tag: tag
            tag-as-latest: true
          - name: simple-2
            tag: tag
            tag-as-latest: true
          - name: healthcheck
            tag: check
            tag-as-latest: true

    steps:
      - name: Check out repository
        uses: actions/checkout@v4
        with:
          persist-credentials: false

      - name: Install dependencies
        run: |
          sudo apt-get install podman buildah

      - name: Set up Go 1.22
        uses: actions/setup-go@v5
        with:
          go-version: '1.22'
          cache: false  # true (default) results in warnings since we don't use Go modules

      - name: Build ${{ matrix.name }} image
        run: |
          ./build.sh "${CONTAINER_REGISTRY}/${{ matrix.name }}:${{ matrix.tag }}"
        working-directory: tests/images/${{ matrix.name }}

      - name: Tag image as latest
        if: matrix.tag-as-latest && matrix.tag != 'latest'
        run: |
          podman tag "${CONTAINER_REGISTRY}/${{ matrix.name }}:${{ matrix.tag }}" "${CONTAINER_REGISTRY}/${{ matrix.name }}:latest"

      - name: Publish container image ${{ env.CONTAINER_REGISTRY }}/${{ matrix.name }}:${{ matrix.tag }}
        if: github.event_name != 'pull_request'
        uses: redhat-actions/push-to-registry@v2
        with:
          registry: ${{ env.CONTAINER_REGISTRY }}
          image: ${{ matrix.name }}
          tags: ${{ matrix.tag }}
          username: ${{ github.actor }}
          password: ${{ secrets.GITHUB_TOKEN }}

      - name: Publish container image ${{ env.CONTAINER_REGISTRY }}/${{ matrix.name }}:latest
        if: github.event_name != 'pull_request' && matrix.tag-as-latest && matrix.tag != 'latest'
        uses: redhat-actions/push-to-registry@v2
        with:
          registry: ${{ env.CONTAINER_REGISTRY }}
          image: ${{ matrix.name }}
          tags: latest
          username: ${{ github.actor }}
          password: ${{ secrets.GITHUB_TOKEN }}
