Skip to content

Commit bb0bd38

Browse files
tstellarvbvictor
andauthored
[GitHub][CI] Add a new container to use for the abi tests (#166886)
This way we don't need to install dependencies every time we run the job and it allows us to use a PGO'd compiler which performs much better than the system compiler. --------- Co-authored-by: Baranov Victor <[email protected]>
1 parent ec75be1 commit bb0bd38

File tree

2 files changed

+46
-15
lines changed

2 files changed

+46
-15
lines changed

.github/workflows/build-ci-container-tooling.yml

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -36,6 +36,9 @@ jobs:
3636
test-command: 'cd $HOME && clang-format --version | grep version && git-clang-format -h | grep usage && black --version | grep black'
3737
- container-name: lint
3838
test-command: 'cd $HOME && clang-tidy --version | grep version && clang-tidy-diff.py -h | grep usage'
39+
- container-name: abi-tests
40+
test-command: 'cd $HOME && abi-compliance-checker --help'
41+
target: abi-tests
3942
steps:
4043
- name: Checkout LLVM
4144
uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0
@@ -52,7 +55,7 @@ jobs:
5255
with:
5356
container-name: ci-ubuntu-24.04-${{ matrix.container-name }}
5457
dockerfile: .github/workflows/containers/github-action-ci-tooling/Dockerfile
55-
target: ci-container-code-${{ matrix.container-name }}
58+
target: ci-container-${{ matrix.target || format('code-{0}', matrix.container-name) }}
5659
test-command: ${{ matrix.test-command }}
5760

5861
push-ci-container:

.github/workflows/containers/github-action-ci-tooling/Dockerfile

Lines changed: 42 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -47,6 +47,28 @@ RUN echo '%sudo ALL=(ALL) NOPASSWD:ALL' >> /etc/sudoers
4747
# as root in 'ci-container-code-format' and 'ci-container-code-lint' containers
4848

4949

50+
FROM base AS ci-container-build-tools
51+
ARG LLVM_VERSION
52+
ARG LLVM_VERSION_MAJOR
53+
54+
COPY --from=llvm-downloader /llvm-extract/LLVM-${LLVM_VERSION}-Linux-X64/bin/clang-${LLVM_VERSION_MAJOR} \
55+
${LLVM_SYSROOT}/bin/
56+
COPY --from=llvm-downloader /llvm-extract/LLVM-${LLVM_VERSION}-Linux-X64/lib/clang/${LLVM_VERSION_MAJOR}/include \
57+
${LLVM_SYSROOT}/lib/clang/${LLVM_VERSION_MAJOR}/include
58+
RUN ln -s ${LLVM_SYSROOT}/bin/clang-${LLVM_VERSION_MAJOR} ${LLVM_SYSROOT}/bin/clang && \
59+
ln -s ${LLVM_SYSROOT}/bin/clang ${LLVM_SYSROOT}/bin/clang++
60+
61+
RUN apt-get update && \
62+
DEBIAN_FRONTEND=noninteractive apt-get install -y \
63+
cmake \
64+
ninja-build && \
65+
apt-get clean && \
66+
rm -rf /var/lib/apt/lists/*
67+
68+
ENV CC=${LLVM_SYSROOT}/bin/clang
69+
ENV CXX=${LLVM_SYSROOT}/bin/clang++
70+
71+
5072
FROM base AS ci-container-code-format
5173
ARG LLVM_VERSION
5274

@@ -63,31 +85,37 @@ USER gha
6385
WORKDIR /home/gha
6486

6587

66-
FROM base AS ci-container-code-lint
88+
FROM ci-container-build-tools AS ci-container-code-lint
6789
ARG LLVM_VERSION
6890
ARG LLVM_VERSION_MAJOR
6991

7092
COPY --from=llvm-downloader /llvm-extract/LLVM-${LLVM_VERSION}-Linux-X64/bin/clang-tidy \
71-
/llvm-extract/LLVM-${LLVM_VERSION}-Linux-X64/bin/clang-${LLVM_VERSION_MAJOR} \
7293
${LLVM_SYSROOT}/bin/
73-
COPY --from=llvm-downloader /llvm-extract/LLVM-${LLVM_VERSION}-Linux-X64/lib/clang/${LLVM_VERSION_MAJOR}/include \
74-
${LLVM_SYSROOT}/lib/clang/${LLVM_VERSION_MAJOR}/include
7594
COPY clang-tools-extra/clang-tidy/tool/clang-tidy-diff.py ${LLVM_SYSROOT}/bin/clang-tidy-diff.py
7695

77-
RUN ln -s ${LLVM_SYSROOT}/bin/clang-${LLVM_VERSION_MAJOR} ${LLVM_SYSROOT}/bin/clang && \
78-
ln -s ${LLVM_SYSROOT}/bin/clang ${LLVM_SYSROOT}/bin/clang++
96+
# Install dependencies for 'pr-code-lint.yml' job
97+
COPY llvm/utils/git/requirements_linting.txt requirements_linting.txt
98+
RUN pip install -r requirements_linting.txt --break-system-packages && \
99+
rm requirements_linting.txt
100+
USER gha
101+
WORKDIR /home/gha
102+
79103

104+
FROM ci-container-build-tools as ci-container-abi-tests
80105

81106
RUN apt-get update && \
82107
DEBIAN_FRONTEND=noninteractive apt-get install -y \
83-
cmake \
84-
ninja-build && \
108+
abi-compliance-checker \
109+
abi-dumper \
110+
autoconf \
111+
pkg-config && \
85112
apt-get clean && \
86113
rm -rf /var/lib/apt/lists/*
87114

88-
# Install dependencies for 'pr-code-lint.yml' job
89-
COPY llvm/utils/git/requirements_linting.txt requirements_linting.txt
90-
RUN pip install -r requirements_linting.txt --break-system-packages && \
91-
rm requirements_linting.txt
92-
USER gha
93-
WORKDIR /home/gha
115+
RUN git clone https://github.com/universal-ctags/ctags.git && \
116+
cd ctags && \
117+
./autogen.sh && \
118+
./configure && \
119+
sudo make install && \
120+
rm -Rf ../ctags
121+

0 commit comments

Comments
 (0)