diff --git a/.github/workflows/libcxx-build-containers.yml b/.github/workflows/libcxx-build-containers.yml new file mode 100644 index 0000000000000..e55a4f2a11b09 --- /dev/null +++ b/.github/workflows/libcxx-build-containers.yml @@ -0,0 +1,63 @@ +# 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' + + steps: + - uses: actions/checkout@v4 + + - name: Build the Linux builder image and the Android builder image + working-directory: libcxx/utils/ci + run: + - docker compose build actions-builder + - docker compose build android-buildkite-builder + + - 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: libcxx-linux-builder:${{ 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: libcxx-android-builder:${{ github.sha }}