[llvm] workflows: Rewrite build-ci-container to work on larger runners (PR #117353)
Tom Stellard via llvm-commits
llvm-commits at lists.llvm.org
Fri Nov 22 10:02:47 PST 2024
https://github.com/tstellar updated https://github.com/llvm/llvm-project/pull/117353
>From eac6c1bcb47d8faf7a58b85915dc7c2c91df6f6c Mon Sep 17 00:00:00 2001
From: Tom Stellard <tstellar at redhat.com>
Date: Fri, 22 Nov 2024 09:39:23 -0800
Subject: [PATCH 1/2] workflows: Rewrite build-ci-container to work on larger
runners
Also switch them over to the new depot runners.
---
.github/workflows/build-ci-container.yml | 52 ++-----------------
.../github-action-ci/stage1.Dockerfile | 25 ++++++++-
2 files changed, 27 insertions(+), 50 deletions(-)
diff --git a/.github/workflows/build-ci-container.yml b/.github/workflows/build-ci-container.yml
index 28fc7de2ee0654..67e3a54f02b0ff 100644
--- a/.github/workflows/build-ci-container.yml
+++ b/.github/workflows/build-ci-container.yml
@@ -22,8 +22,10 @@ jobs:
# run this on the self-hosted runners and don't have to do it this way to
# avoid timeouts.
build-ci-container-stage1:
+ permissions:
+ packages: write
if: github.repository_owner == 'llvm'
- runs-on: ubuntu-latest
+ runs-on: depot-ubuntu-24.04-16
steps:
- name: Checkout LLVM
uses: actions/checkout at v4
@@ -40,22 +42,6 @@ jobs:
working-directory: ./.github/workflows/containers/github-action-ci/
run: |
podman build -t stage1-toolchain --target stage1-toolchain -f stage1.Dockerfile .
- - name: Save container image
- run: |
- podman save stage1-toolchain > stage1-toolchain.tar
- - name: Upload container image
- uses: actions/upload-artifact at v4
- with:
- name: stage1-toolchain
- path: stage1-toolchain.tar
- retention-days: 1
- build-ci-container-stage2:
- if: github.repository_owner == 'llvm'
- runs-on: ubuntu-latest
- needs: build-ci-container-stage1
- permissions:
- packages: write
- steps:
- name: Write Variables
id: vars
run: |
@@ -64,38 +50,6 @@ jobs:
echo "container-name=$container_name" >> $GITHUB_OUTPUT
echo "container-name-tag=$container_name:$tag" >> $GITHUB_OUTPUT
- - name: Checkout LLVM
- uses: actions/checkout at v4
- with:
- sparse-checkout: .github/workflows/containers/github-action-ci/
-
- - name: Change podman Root Direcotry
- run: |
- mkdir -p ~/.config/containers
- sudo mkdir -p /mnt/podman
- sudo chown `whoami`:`whoami` /mnt/podman
- cp ./.github/workflows/containers/github-action-ci/storage.conf ~/.config/containers/storage.conf
- podman info
-
- # Download the container image into /mnt/podman rather than
- # $GITHUB_WORKSPACE to avoid space limitations on the default drive
- # and use the permissions setup for /mnt/podman.
- - name: Download stage1-toolchain
- uses: actions/download-artifact at v4
- with:
- name: stage1-toolchain
- path: /mnt/podman
-
- - name: Load stage1-toolchain
- run: |
- podman load -i /mnt/podman/stage1-toolchain.tar
-
- - name: Build Container
- working-directory: ./.github/workflows/containers/github-action-ci/
- run: |
- podman build -t ${{ steps.vars.outputs.container-name-tag }} -f stage2.Dockerfile .
- podman tag ${{ steps.vars.outputs.container-name-tag }} ${{ steps.vars.outputs.container-name }}:latest
-
- name: Test Container
run: |
for image in ${{ steps.vars.outputs.container-name-tag }} ${{ steps.vars.outputs.container-name }}; do
diff --git a/.github/workflows/containers/github-action-ci/stage1.Dockerfile b/.github/workflows/containers/github-action-ci/stage1.Dockerfile
index 3e2c1ab11d58bf..132ef214ada5d8 100644
--- a/.github/workflows/containers/github-action-ci/stage1.Dockerfile
+++ b/.github/workflows/containers/github-action-ci/stage1.Dockerfile
@@ -39,4 +39,27 @@ RUN cmake -B ./build -G Ninja ./llvm \
-DCLANG_DEFAULT_LINKER="lld" \
-DBOOTSTRAP_CLANG_PGO_TRAINING_DATA_SOURCE_DIR=/llvm-project-llvmorg-$LLVM_VERSION/llvm
-RUN ninja -C ./build stage2-instrumented-clang stage2-instrumented-lld
+RUN ninja -C ./build stage2-instrumented-clang stage2-instrumented-lld stage2-clang-bolt stage2-install-distribution && ninja -C ./build install-distribution && rm -rf ./build
+
+FROM base
+
+COPY --from=stage1-toolchain $LLVM_SYSROOT $LLVM_SYSROOT
+
+# Need to install curl for hendrikmuhs/ccache-action
+# Need nodejs for some of the GitHub actions.
+# Need perl-modules for clang analyzer tests.
+# Need git for SPIRV-Tools tests.
+RUN apt-get update && \
+ apt-get install -y \
+ binutils \
+ cmake \
+ curl \
+ git \
+ libstdc++-11-dev \
+ ninja-build \
+ nodejs \
+ perl-modules \
+ python3-psutil
+
+ENV LLVM_SYSROOT=$LLVM_SYSROOT
+ENV PATH=${LLVM_SYSROOT}/bin:${PATH}
>From 62fac26ae201095ee771aa9c0208faccdc97e955 Mon Sep 17 00:00:00 2001
From: Tom Stellard <tstellar at redhat.com>
Date: Fri, 22 Nov 2024 10:02:08 -0800
Subject: [PATCH 2/2] Remove unneeded target
---
.github/workflows/containers/github-action-ci/stage1.Dockerfile | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/.github/workflows/containers/github-action-ci/stage1.Dockerfile b/.github/workflows/containers/github-action-ci/stage1.Dockerfile
index 132ef214ada5d8..b5403356bb612b 100644
--- a/.github/workflows/containers/github-action-ci/stage1.Dockerfile
+++ b/.github/workflows/containers/github-action-ci/stage1.Dockerfile
@@ -39,7 +39,7 @@ RUN cmake -B ./build -G Ninja ./llvm \
-DCLANG_DEFAULT_LINKER="lld" \
-DBOOTSTRAP_CLANG_PGO_TRAINING_DATA_SOURCE_DIR=/llvm-project-llvmorg-$LLVM_VERSION/llvm
-RUN ninja -C ./build stage2-instrumented-clang stage2-instrumented-lld stage2-clang-bolt stage2-install-distribution && ninja -C ./build install-distribution && rm -rf ./build
+RUN ninja -C ./build stage2-instrumented-clang stage2-clang-bolt stage2-install-distribution && ninja -C ./build install-distribution && rm -rf ./build
FROM base
More information about the llvm-commits
mailing list