Skip to content

[libc++] Add Docker images to support incoming pre-merge CI transition #144597

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Open
wants to merge 1 commit into
base: main
Choose a base branch
from

Conversation

ldionne
Copy link
Member

@ldionne ldionne commented Jun 17, 2025

As described in 1, we are transitioning to the LLVM-wide pre-merge CI infrastructure. As part of this change, we need a way to specify which Docker image to use from the sources, and we can't do that from the workflow files directly due to a Kubernetes bug. Instead, the runner groups are going to pick up the Docker image specified in this json file as it appears on the main branch of the official LLVM Github repository.

As described in [1], we are transitioning to the LLVM-wide pre-merge
CI infrastructure. As part of this change, we need a way to specify
which Docker image to use from the sources, and we can't do that from
the workflow files directly due to a Kubernetes bug. Instead, the runner
groups are going to pick up the Docker image specified in this json file
as it appears on the `main` branch of the official LLVM Github repository.

[1]: https://discourse.llvm.org/t/rfc-migrating-libc-premerge-testing-to-new-llvm-premerge-testing-infrastructure
@ldionne ldionne requested review from cmtice and EricWF June 17, 2025 20:24
@llvmbot llvmbot added libc++ libc++ C++ Standard Library. Not GNU libstdc++. Not libc++abi. github:workflow labels Jun 17, 2025
@llvmbot
Copy link
Member

llvmbot commented Jun 17, 2025

@llvm/pr-subscribers-github-workflow

Author: Louis Dionne (ldionne)

Changes

As described in 1, we are transitioning to the LLVM-wide pre-merge CI infrastructure. As part of this change, we need a way to specify which Docker image to use from the sources, and we can't do that from the workflow files directly due to a Kubernetes bug. Instead, the runner groups are going to pick up the Docker image specified in this json file as it appears on the main branch of the official LLVM Github repository.


Full diff: https://github.com/llvm/llvm-project/pull/144597.diff

1 Files Affected:

  • (added) .github/workflows/libcxx-docker-images.yml (+12)
diff --git a/.github/workflows/libcxx-docker-images.yml b/.github/workflows/libcxx-docker-images.yml
new file mode 100644
index 0000000000000..9366d825ba415
--- /dev/null
+++ b/.github/workflows/libcxx-docker-images.yml
@@ -0,0 +1,12 @@
+# This file defines the Docker images used by various self-hosted runner groups used
+# in the libc++ pre-merge testing pipeline.
+#
+# The images are specified this way instead of being in the workflow file due to a
+# Kubernetes bug, as described in https://discourse.llvm.org/t/rfc-migrating-libc-premerge-testing-to-new-llvm-premerge-testing-infrastructure.
+#
+# When updating this file, the self-hosted runner sets are going to pick up the
+# specified image after a short delay. The Docker images used are always the
+# ones on the 'main' branch of the official LLVM GitHub repository.
+libcxx-runner-set-current: ghcr.io/llvm/libcxx-linux-builder:b060022103f551d8ca1dad84122ef73927c86512
+libcxx-runner-set-next: none
+libcxx-runner-set-release: ghcr.io/llvm/libcxx-linux-builder:d8a0709b1090350a7fe3604d8ab78c7d62f10698

@llvmbot
Copy link
Member

llvmbot commented Jun 17, 2025

@llvm/pr-subscribers-libcxx

Author: Louis Dionne (ldionne)

Changes

As described in 1, we are transitioning to the LLVM-wide pre-merge CI infrastructure. As part of this change, we need a way to specify which Docker image to use from the sources, and we can't do that from the workflow files directly due to a Kubernetes bug. Instead, the runner groups are going to pick up the Docker image specified in this json file as it appears on the main branch of the official LLVM Github repository.


Full diff: https://github.com/llvm/llvm-project/pull/144597.diff

1 Files Affected:

  • (added) .github/workflows/libcxx-docker-images.yml (+12)
diff --git a/.github/workflows/libcxx-docker-images.yml b/.github/workflows/libcxx-docker-images.yml
new file mode 100644
index 0000000000000..9366d825ba415
--- /dev/null
+++ b/.github/workflows/libcxx-docker-images.yml
@@ -0,0 +1,12 @@
+# This file defines the Docker images used by various self-hosted runner groups used
+# in the libc++ pre-merge testing pipeline.
+#
+# The images are specified this way instead of being in the workflow file due to a
+# Kubernetes bug, as described in https://discourse.llvm.org/t/rfc-migrating-libc-premerge-testing-to-new-llvm-premerge-testing-infrastructure.
+#
+# When updating this file, the self-hosted runner sets are going to pick up the
+# specified image after a short delay. The Docker images used are always the
+# ones on the 'main' branch of the official LLVM GitHub repository.
+libcxx-runner-set-current: ghcr.io/llvm/libcxx-linux-builder:b060022103f551d8ca1dad84122ef73927c86512
+libcxx-runner-set-next: none
+libcxx-runner-set-release: ghcr.io/llvm/libcxx-linux-builder:d8a0709b1090350a7fe3604d8ab78c7d62f10698

@ldionne
Copy link
Member Author

ldionne commented Jun 17, 2025

@cmtice Once this is checked in, individual Docker images can be obtained with:

curl -s https://raw.githubusercontent.com/llvm/llvm-project/main/.github/workflows/libcxx-docker-images.yml | yq '.libcxx-runner-set-current'

If you would rather use JSON instead, that's also OK but the benefit of yaml is that we can have comments in the file.

@cmtice
Copy link
Contributor

cmtice commented Jun 17, 2025

@ldionne I think we need this file in the llvm-zorg repository (where we configure the premerge runners): https://github.com/llvm/llvm-zorg/tree/main/premerge . Do you have access to that repo?

Copy link
Contributor

@boomanaiden154 boomanaiden154 left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This seems like a duplicate of what we have to put in the runner values YAML file that we have to have in llvm-zorg/premerge?

eg https://github.com/llvm/llvm-zorg/blob/main/premerge/linux_runners_values.yaml

@ldionne
Copy link
Member Author

ldionne commented Jun 18, 2025

Ah, interesting, I wasn't aware of that file. Do you think there is any way that we'd store these inside the monorepo? It's a huge simplification for contributors when everything is accessible from the monorepo -- historically this has been a pain point when we were still using buildbot and some of our configuration lived in llvm-zorg.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
github:workflow libc++ libc++ C++ Standard Library. Not GNU libstdc++. Not libc++abi.
Projects
None yet
Development

Successfully merging this pull request may close these issues.

4 participants