Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
28 changes: 6 additions & 22 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -39,11 +39,6 @@ jobs:
- name: Trust the container workspace
run: git config --global --add safe.directory "${GITHUB_WORKSPACE}"

- name: Install formatter dependencies
run: |
apt-get update
DEBIAN_FRONTEND=noninteractive apt-get install -y --no-install-recommends lbzip2

- name: Format
run: bash -e tools/format.sh

Expand All @@ -56,27 +51,10 @@ jobs:
timeout-minutes: 30
container:
image: ci.trafficserver.apache.org/proxy-verifier/ubuntu:24.04
env:
RAT_VERSION: 0.17
RAT_SHA256: 401939ebe5a52c6ed524029897bf914eaaba503d36c069ebcdbd8847a9e7cf93
steps:
- name: Check out repository
uses: actions/checkout@v6

- name: Install Java
run: |
apt-get update
DEBIAN_FRONTEND=noninteractive apt-get install -y --no-install-recommends default-jre-headless

- name: Download Apache RAT
run: |
rat_jar="${RUNNER_TEMP}/apache-rat-${RAT_VERSION}.jar"
curl --fail --location --silent --show-error \
--output "${rat_jar}" \
"https://repo.maven.apache.org/maven2/org/apache/rat/apache-rat/${RAT_VERSION}/apache-rat-${RAT_VERSION}.jar"
echo "${RAT_SHA256} ${rat_jar}" | sha256sum --check
echo "RAT_JAR=${rat_jar}" >> "${GITHUB_ENV}"

- name: Run Apache RAT
run: |
java -jar "${RAT_JAR}" \
Expand All @@ -101,6 +79,9 @@ jobs:
timeout-minutes: 60
container:
image: ci.trafficserver.apache.org/proxy-verifier/ubuntu:24.04
env:
CC: clang-20
CXX: clang++-20
steps:
- name: Check out repository
uses: actions/checkout@v6
Expand Down Expand Up @@ -128,6 +109,9 @@ jobs:
timeout-minutes: 60
container:
image: ci.trafficserver.apache.org/proxy-verifier/ubuntu:24.04
env:
CC: gcc-14
CXX: g++-14
steps:
- name: Check out repository
uses: actions/checkout@v6
Expand Down
26 changes: 22 additions & 4 deletions docker/ubuntu_24.04/Dockerfile
Original file line number Diff line number Diff line change
Expand Up @@ -8,21 +8,29 @@ FROM docker.io/library/ubuntu:24.04 AS dev-base
SHELL ["/bin/bash", "-o", "pipefail", "-c"]

ARG DEBIAN_FRONTEND=noninteractive
ARG RAT_VERSION=0.17
ARG RAT_SHA256=401939ebe5a52c6ed524029897bf914eaaba503d36c069ebcdbd8847a9e7cf93

ENV PATH="/opt/pv-venv/bin:${PATH}" \
PV_DEPS_ROOT="/opt/pv_libs"
ENV CC="gcc-14" \
CXX="g++-14" \
PATH="/opt/pv-venv/bin:${PATH}" \
PV_DEPS_ROOT="/opt/pv_libs" \
RAT_JAR="/opt/apache-rat/apache-rat-${RAT_VERSION}.jar"

RUN <<'EOF'
set -eux

apt-get update
apt-get install -y --no-install-recommends \
ca-certificates \
clang-20 \
curl \
default-jre-headless \
diffutils \
g++ \
gcc \
g++-14 \
gcc-14 \
git \
lbzip2 \
libc6-dev \
libffi-dev \
libssl-dev \
Expand All @@ -41,6 +49,16 @@ PROFILE
rm -rf /var/lib/apt/lists/*
EOF

RUN <<'EOF'
set -eux

mkdir -p "$(dirname "${RAT_JAR}")"
curl --fail --location --silent --show-error \
--output "${RAT_JAR}" \
"https://repo.maven.apache.org/maven2/org/apache/rat/apache-rat/${RAT_VERSION}/apache-rat-${RAT_VERSION}.jar"
echo "${RAT_SHA256} ${RAT_JAR}" | sha256sum --check
EOF

FROM dev-base AS deps-builder

RUN <<'EOF'
Expand Down
29 changes: 23 additions & 6 deletions tools/CI-IMAGES.md
Original file line number Diff line number Diff line change
Expand Up @@ -7,10 +7,13 @@

# Proxy Verifier CI Images

The Ubuntu CI image provides the Proxy Verifier build and AuTest toolchain plus
prebuilt OpenSSL, nghttp2, and nghttp3 libraries under `/opt/pv_libs`. CI can
therefore use the `dev-external` CMake preset without rebuilding those
dependencies for every pull request.
The Ubuntu CI image provides GCC 14, Clang 20, the Proxy Verifier build and
AuTest toolchain, the formatting and license-audit system packages, and a
checksum-verified Apache RAT JAR. It also provides prebuilt OpenSSL, nghttp2,
and nghttp3 libraries under `/opt/pv_libs`. CI can therefore use the
`dev-external` CMake preset without rebuilding those dependencies or installing
system packages for every pull request. Python dependencies remain managed by
the repository's locked `uv` environments and are not baked into the image.

These images are for development and CI workflows, not deployment. Use the
statically linked binaries attached to Proxy Verifier releases for deployment.
Expand Down Expand Up @@ -92,7 +95,14 @@ docker run --rm --platform linux/amd64 \
cmake --version
ninja --version
uv --version
/opt/pv_libs/openssl/bin/openssl version
gcc-14 --version
g++-14 --version
clang-20 --version
clang++-20 --version
java -version
test -r "${RAT_JAR}"
java -jar "${RAT_JAR}" --help >/dev/null
LD_LIBRARY_PATH=/opt/pv_libs/openssl/lib /opt/pv_libs/openssl/bin/openssl version
find /opt/pv_libs -mindepth 1 -maxdepth 1 -type d -printf "%f\n" | sort
'
```
Expand Down Expand Up @@ -144,7 +154,14 @@ docker run --rm --platform linux/arm64 \
cmake --version
ninja --version
uv --version
/opt/pv_libs/openssl/bin/openssl version
gcc-14 --version
g++-14 --version
clang-20 --version
clang++-20 --version
java -version
test -r "${RAT_JAR}"
java -jar "${RAT_JAR}" --help >/dev/null
LD_LIBRARY_PATH=/opt/pv_libs/openssl/lib /opt/pv_libs/openssl/bin/openssl version
find /opt/pv_libs -mindepth 1 -maxdepth 1 -type d -printf "%f\n" | sort
'
```
Expand Down