# This file defines an action that builds the various Docker images used to run
# libc++ CI whenever modifications to those Docker files are pushed to `main`.
#
# The images are pushed to the LLVM package registry at https://github.com/orgs/llvm/packages
# and tagged appropriately. The selection of which Docker image version is used by the libc++
# CI nodes at any given point is controlled from the workflow files themselves.

name: Build Docker images for libc++ CI

permissions:
  contents: read
  packages: write

on:
  push:
    branches:
      - main
    paths:
      - 'libcxx/utils/ci/**'
      - '.github/workflows/libcxx-build-containers.yml'
  pull_request:
    branches:
      - main
    paths:
      - 'libcxx/utils/ci/**'
      - '.github/workflows/libcxx-build-containers.yml'

jobs:
  build-and-push:
    runs-on: ubuntu-latest
    if: github.repository_owner == 'llvm'
    permissions:
      packages: write

    steps:
    - uses: actions/checkout@v4

    - name: Build the Linux builder image
      working-directory: libcxx/utils/ci
      run: docker compose build actions-builder
      env:
        TAG: ${{ github.sha }}

    # - name: Build the Android builder image
    #   working-directory: libcxx/utils/ci
    #   run: docker compose build android-buildkite-builder
    #   env:
    #     TAG: ${{ github.sha }}

    - name: Log in to GitHub Container Registry
      uses: docker/login-action@v3
      with:
        registry: ghcr.io
        username: ${{ github.actor }}
        password: ${{ secrets.GITHUB_TOKEN }}

    - name: Push the Linux builder image
      if: github.event_name == 'push'
      working-directory: libcxx/utils/ci
      run: |
        docker compose push actions-builder
      env:
        TAG: ${{ github.sha }}

    # - name: Push the Android builder image
    #   if: github.event_name == 'push'
    #   working-directory: libcxx/utils/ci
    #   run: |
    #     docker compose push android-buildkite-builder
    #   env:
    #     TAG: ${{ github.sha }}
