[llvm] [libc++] Add a Github action to build libc++'s Docker images (PR #110020)
Louis Dionne via llvm-commits
llvm-commits at lists.llvm.org
Thu Nov 14 23:31:58 PST 2024
https://github.com/ldionne updated https://github.com/llvm/llvm-project/pull/110020
>From fbd5238c956d70e3cf869600a2a9080baa7837d9 Mon Sep 17 00:00:00 2001
From: Louis Dionne <ldionne.2 at gmail.com>
Date: Wed, 25 Sep 2024 14:02:35 -0400
Subject: [PATCH 1/2] [libc++] Add a Github action to build libc++'s Docker
images
This patch adds a Github action that runs whenever changes to the
libc++ Docker images are pushed to `main`. The action will rebuild
the Docker images and push them to LLVM's container registry so that
we can then point to those images from our CI nodes.
---
.../workflows/libcxx-build-containers.yaml | 51 +++++++++++++++++++
1 file changed, 51 insertions(+)
create mode 100644 .github/workflows/libcxx-build-containers.yaml
diff --git a/.github/workflows/libcxx-build-containers.yaml b/.github/workflows/libcxx-build-containers.yaml
new file mode 100644
index 00000000000000..e4ff2141f1357e
--- /dev/null
+++ b/.github/workflows/libcxx-build-containers.yaml
@@ -0,0 +1,51 @@
+# 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 by the libc++ maintainers using a mechanism that
+# is not publicly visible for safety purposes.
+
+name: Build Docker images for libc++ CI
+
+permissions:
+ contents: read
+ packages: write
+
+on:
+ push:
+ branches:
+ - main
+ paths:
+ - 'libcxx/utils/ci/**'
+
+jobs:
+ build-and-push:
+ runs-on: ubuntu-latest
+ if: github.repository_owner == 'llvm'
+
+ steps:
+ - uses: actions/checkout at v4
+
+ - name: Log in to GitHub Container Registry
+ uses: docker/login-action at v3
+ with:
+ registry: ghcr.io
+ username: ${{ github.actor }}
+ password: ${{ secrets.GITHUB_TOKEN }}
+
+ - name: Build and push the Linux builder image
+ working-directory: libcxx/utils/ci
+ run:
+ - docker compose build actions-builder
+ - docker compose push actions-builder
+ env:
+ TAG: libcxx-linux-builder:${{ github.sha }}
+
+ - name: Build and push the Android builder image
+ working-directory: libcxx/utils/ci
+ run:
+ - docker compose build android-buildkite-builder
+ - docker compose push android-buildkite-builder
+ env:
+ TAG: libcxx-android-builder:${{ github.sha }}
>From 45482ba63c1a9183c478f1b7fba0ca0497877638 Mon Sep 17 00:00:00 2001
From: Louis Dionne <ldionne.2 at gmail.com>
Date: Fri, 15 Nov 2024 08:31:37 +0100
Subject: [PATCH 2/2] Address review comments and update after docker-in-docker
changes
---
.github/workflows/libcxx-build-containers.yaml | 15 +++++++++------
1 file changed, 9 insertions(+), 6 deletions(-)
diff --git a/.github/workflows/libcxx-build-containers.yaml b/.github/workflows/libcxx-build-containers.yaml
index e4ff2141f1357e..c2f83e707b6fae 100644
--- a/.github/workflows/libcxx-build-containers.yaml
+++ b/.github/workflows/libcxx-build-containers.yaml
@@ -3,8 +3,7 @@
#
# 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 by the libc++ maintainers using a mechanism that
-# is not publicly visible for safety purposes.
+# CI nodes at any given point is controlled from the workflow files themselves.
name: Build Docker images for libc++ CI
@@ -27,6 +26,12 @@ jobs:
steps:
- uses: actions/checkout at 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 at v3
with:
@@ -34,18 +39,16 @@ jobs:
username: ${{ github.actor }}
password: ${{ secrets.GITHUB_TOKEN }}
- - name: Build and push the Linux builder image
+ - name: Push the Linux builder image
working-directory: libcxx/utils/ci
run:
- - docker compose build actions-builder
- docker compose push actions-builder
env:
TAG: libcxx-linux-builder:${{ github.sha }}
- - name: Build and push the Android builder image
+ - name: Push the Android builder image
working-directory: libcxx/utils/ci
run:
- - docker compose build android-buildkite-builder
- docker compose push android-buildkite-builder
env:
TAG: libcxx-android-builder:${{ github.sha }}
More information about the llvm-commits
mailing list