Skip to content

Commit 4b541c7

Browse files
authored
feat(ci): Enable parallel builds for Ubuntu 20.04 & 24.04 base images (#13964)
Part of: [b/441792502](b/441792502) ## Description This PR modifies the existing base image testing pipeline (`trial_build.py`) to support the Ubuntu 24.04 migration. It enables the parallel build and testing of base images for `latest`, `ubuntu-20-04`, and `ubuntu-24-04`. Instead of introducing a new, separate CI pipeline, this change integrates the multi-version logic directly into the established `trial_build.py` workflow. This approach ensures that both local development builds and remote CI builds are consistent and leverage the existing, robust testing infrastructure. ## Changes Made - **`build_and_push_test_images.py` Refactored**: - A `BASE_IMAGE_VERSIONS` list now serves as the single source of truth for all target Ubuntu versions. - The **GCB build function** (`gcb_build_and_push_images`) was updated to generate a single Google Cloud Build trigger with parallel steps for each image and version combination. - The **local build function** (`build_and_push_images`) was also updated to build all versions in parallel using `multiprocessing`, ensuring local and remote build parity. - **Dynamic Dockerfile Selection**: The script now intelligently selects the correct Dockerfile (e.g., `base-image/ubuntu-24-04.Dockerfile`) based on the target version, skipping any that do not exist. - **Consistent Versioned Tagging**: Helper functions were updated to apply the correct tags to the images (e.g., `gcr.io/oss-fuzz-base/base-image:ubuntu-24-04-testing`). ## How to Verify 1. Trigger the `trial_build.py` script against a set of projects. 2. Observe the Google Cloud Build logs. A single build should be triggered containing a large number of parallel steps, one for each image/version combination (e.g., `base-image:latest`, `base-image:ubuntu-20-04`, etc.). 3. Verify that the build completes successfully and that the test images are pushed to the Artifact Registry with the correct versioned tags.
1 parent 12dbbed commit 4b541c7

File tree

54 files changed

+1608
-578
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

54 files changed

+1608
-578
lines changed
Lines changed: 99 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,99 @@
1+
# Copyright 2023 Google LLC
2+
#
3+
# Licensed under the Apache License, Version 2.0 (the "License");
4+
# you may not use this file except in compliance with the License.
5+
# You may obtain a copy of the License at
6+
#
7+
# http://www.apache.org/licenses/LICENSE-2.0
8+
#
9+
# Unless required by applicable law or agreed to in writing, software
10+
# distributed under the License is distributed on an "AS IS" BASIS,
11+
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12+
# See the License for the specific language governing permissions and
13+
# limitations under the License.
14+
#
15+
################################################################################
16+
17+
name: 'Ubuntu Version Sync'
18+
19+
on:
20+
pull_request:
21+
types: [opened, synchronize, reopened]
22+
23+
jobs:
24+
check-sync:
25+
runs-on: ubuntu-latest
26+
steps:
27+
- name: 'Checkout code'
28+
uses: actions/checkout@v4
29+
with:
30+
# Fetch all history so we can diff against the base branch.
31+
fetch-depth: 0
32+
33+
- name: 'Run sync check'
34+
run: |
35+
set -e
36+
37+
MODIFIED_FILES=$(git diff --name-only ${{ github.event.pull_request.base.sha }}...${{ github.event.pull_request.head.sha }})
38+
echo "Checking for synchronized file changes..."
39+
echo "Modified files in this PR:"
40+
echo "$MODIFIED_FILES"
41+
42+
ERRORS=""
43+
44+
# Define the mapping of legacy files to their versioned counterparts.
45+
# Format: "legacy_file;versioned_file_pattern"
46+
# The pattern uses {version} which will be replaced with "ubuntu-20-04" and "ubuntu-24-04".
47+
# For Dockerfiles, the pattern is different from scripts.
48+
declare -A LEGACY_DOCKERFILES
49+
LEGACY_DOCKERFILES["infra/base-images/base-builder-fuzzbench/Dockerfile"]="infra/base-images/base-builder-fuzzbench/{version}.Dockerfile"
50+
LEGACY_DOCKERFILES["infra/base-images/base-builder-swift/Dockerfile"]="infra/base-images/base-builder-swift/{version}.Dockerfile"
51+
LEGACY_DOCKERFILES["infra/base-images/base-builder/Dockerfile"]="infra/base-images/base-builder/{version}.Dockerfile"
52+
LEGACY_DOCKERFILES["infra/base-images/base-clang/Dockerfile"]="infra/base-images/base-clang/{version}.Dockerfile"
53+
LEGACY_DOCKERFILES["infra/base-images/base-runner/Dockerfile"]="infra/base-images/base-runner/{version}.Dockerfile"
54+
55+
declare -A LEGACY_SCRIPTS
56+
LEGACY_SCRIPTS["infra/base-images/base-builder-fuzzbench/fuzzbench_install_dependencies"]="infra/base-images/base-builder-fuzzbench/fuzzbench_install_dependencies_{version}"
57+
LEGACY_SCRIPTS["infra/base-images/base-builder/install_deps.sh"]="infra/base-images/base-builder/install_deps_{version}.sh"
58+
LEGACY_SCRIPTS["infra/base-images/base-builder/install_swift.sh"]="infra/base-images/base-builder/install_swift_{version}.sh"
59+
LEGACY_SCRIPTS["infra/base-images/base-builder/precompile_honggfuzz"]="infra/base-images/base-builder/precompile_honggfuzz_{version}"
60+
LEGACY_SCRIPTS["infra/base-images/base-clang/checkout_build_install_llvm.sh"]="infra/base-images/base-clang/checkout_build_install_llvm_{version}.sh"
61+
LEGACY_SCRIPTS["infra/base-images/base-runner/install_deps.sh"]="infra/base-images/base-runner/install_deps_{version}.sh"
62+
63+
VERSIONS=("ubuntu-20-04" "ubuntu-24-04")
64+
65+
# Check Dockerfiles
66+
for legacy_file in "${{!LEGACY_DOCKERFILES[@]}}"; do
67+
if echo "$MODIFIED_FILES" | grep -q "^${legacy_file}$"; then
68+
echo "Legacy file changed: $legacy_file. Verifying counterparts..."
69+
for version in "${{VERSIONS[@]}}"; do
70+
pattern=${{LEGACY_DOCKERFILES[$legacy_file]}}
71+
versioned_file="${{pattern/{{version}}/$version}}"
72+
if ! echo "$MODIFIED_FILES" | grep -q "^${{versioned_file}}$"; then
73+
ERRORS+="\n- Legacy file '${legacy_file}' was changed, but its counterpart '${versioned_file}' was not."
74+
fi
75+
done
76+
fi
77+
done
78+
79+
# Check Scripts
80+
for legacy_file in "${{!LEGACY_SCRIPTS[@]}}"; do
81+
if echo "$MODIFIED_FILES" | grep -q "^${legacy_file}$"; then
82+
echo "Legacy script changed: $legacy_file. Verifying counterparts..."
83+
for version in "${{VERSIONS[@]}}"; do
84+
pattern=${{LEGACY_SCRIPTS[$legacy_file]}}
85+
versioned_file="${{pattern/{{version}}/$version}}"
86+
if ! echo "$MODIFIED_FILES" | grep -q "^${{versioned_file}}$"; then
87+
ERRORS+="\n- Legacy script '${legacy_file}' was changed, but its counterpart '${versioned_file}' was not."
88+
fi
89+
done
90+
fi
91+
done
92+
93+
if [ -n "$ERRORS" ]; then
94+
echo -e "\n\e[31mError: Found synchronization issues between legacy and versioned files.\e[0m"
95+
echo -e "Please update the following files to match their legacy counterparts or ensure they are included in this PR:$ERRORS"
96+
exit 1
97+
else
98+
echo -e "\n\e[32mSuccess: All modified legacy files are synchronized with their versioned counterparts.\e[0m"
99+
fi

infra/base-images/README.md

Lines changed: 23 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,28 @@ To build all images, run:
1111
infra/base-images/all.sh
1212
```
1313

14+
## Trial Builds for Testing Changes
15+
16+
When making changes to any of the base images, it's crucial to test them using the trial build system. This system is designed to build test versions of the images, identified by a `-testing` suffix, and use them to build a subset of OSS-Fuzz projects to ensure the changes don't cause regressions.
17+
18+
### Architecture Overview
19+
20+
The trial build system now supports building multiple Ubuntu base variants in parallel to accelerate testing. The supported variants are:
21+
- `latest` (based on the default `Dockerfile`)
22+
- `ubuntu-20-04` (based on `ubuntu-20-04.Dockerfile`)
23+
- `ubuntu-24-04` (based on `ubuntu-24-04.Dockerfile`)
24+
25+
When a trial build is triggered on a Pull Request that modifies files in `infra/base-images/`, the system initiates three separate, parallel builds in Google Cloud Build (GCB). Each of these builds is responsible for building all base images for a single Ubuntu variant. This parallel architecture allows for faster feedback on changes across different base OS versions.
26+
27+
### How to Trigger a Trial Build
28+
29+
1. Create a Pull Request with your changes to the base images.
30+
2. Once the PR is open, add a comment with the following command:
31+
```
32+
/gcbrun trial_build.py all
33+
```
34+
3. This command will be picked up by our CI system. It will first trigger a "coordinator" build, which then spawns the three parallel builds for the different Ubuntu variants. You can monitor the progress of these builds directly in the Google Cloud Build interface linked in your PR.
35+
1436
## Dependency Tree
1537
1638
The following diagram shows the dependency tree of the base images.
@@ -32,4 +54,4 @@ graph TD
3254
C --> L;
3355
H --> L;
3456
L --> M(base-runner-debug);
35-
```
57+
```

infra/base-images/all.sh

Lines changed: 51 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -14,15 +14,55 @@
1414
# limitations under the License.
1515
#
1616
################################################################################
17+
#
18+
# A script to build base images locally.
19+
#
20+
# This script is a wrapper around `docker build` that dynamically fetches the
21+
# official list of images from the Python source of truth, ensuring it never
22+
# goes out of date.
23+
#
24+
# Usage:
25+
# # Build the 'latest' version of all images.
26+
# ./all.sh
27+
#
28+
# # Build the 'ubuntu-24-04' version of all images.
29+
# ./all.sh ubuntu-24-04
30+
#
31+
################################################################################
32+
33+
# The first argument is the version tag, e.g., 'latest', 'ubuntu-20-04'.
34+
VERSION_TAG=${1:-latest}
35+
36+
# Get the directory where this script is located to find the helper script.
37+
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" >/dev/null 2>&1 && pwd)"
38+
39+
# Fetch the official list of images from the Python source of truth.
40+
# This avoids duplicating the image list and ensures this script is always
41+
# up-to-date.
42+
IMAGE_LIST=$(python3 "${SCRIPT_DIR}/list_images.py")
43+
44+
echo "Building version: ${VERSION_TAG}"
45+
echo "Images to build: ${IMAGE_LIST}"
46+
47+
# Loop through the official list of images and build each one.
48+
for image_name in ${IMAGE_LIST}; do
49+
image_dir="infra/base-images/${image_name}"
50+
51+
if [ "${VERSION_TAG}" == "latest" ]; then
52+
dockerfile="${image_dir}/Dockerfile"
53+
tag="gcr.io/oss-fuzz-base/${image_name}"
54+
else
55+
dockerfile="${image_dir}/${VERSION_TAG}.Dockerfile"
56+
tag="gcr.io/oss-fuzz-base/${image_name}:${VERSION_TAG}"
57+
fi
58+
59+
if [ ! -f "${dockerfile}" ]; then
60+
echo "Skipping build for ${image_name}:${VERSION_TAG} - Dockerfile not found at ${dockerfile}"
61+
continue
62+
fi
63+
64+
echo "Building ${tag} from ${dockerfile}..."
65+
docker build --pull -t "${tag}" -f "${dockerfile}" "${image_dir}"
66+
done
1767

18-
docker build --pull -t gcr.io/oss-fuzz-base/base-image "$@" infra/base-images/base-image
19-
docker build -t gcr.io/oss-fuzz-base/base-clang "$@" infra/base-images/base-clang
20-
docker build -t gcr.io/oss-fuzz-base/base-builder "$@" infra/base-images/base-builder
21-
docker build -t gcr.io/oss-fuzz-base/base-builder-go "$@" infra/base-images/base-builder-go
22-
docker build -t gcr.io/oss-fuzz-base/base-builder-jvm "$@" infra/base-images/base-builder-jvm
23-
docker build -t gcr.io/oss-fuzz-base/base-builder-python "$@" infra/base-images/base-builder-python
24-
docker build -t gcr.io/oss-fuzz-base/base-builder-rust "$@" infra/base-images/base-builder-rust
25-
docker build -t gcr.io/oss-fuzz-base/base-builder-ruby "$@" infra/base-images/base-builder-ruby
26-
docker build -t gcr.io/oss-fuzz-base/base-builder-swift "$@" infra/base-images/base-builder-swift
27-
docker build -t gcr.io/oss-fuzz-base/base-runner "$@" infra/base-images/base-runner
28-
docker build -t gcr.io/oss-fuzz-base/base-runner-debug "$@" infra/base-images/base-runner-debug
68+
echo "All builds for version ${VERSION_TAG} completed successfully."

infra/base-images/base-builder-fuzzbench/CHANGELOG.md

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -2,26 +2,26 @@
22

33
## Analysis Summary
44

5-
The `ubuntu20` and `ubuntu24` images for `oss-fuzz/base-builder-fuzzbench` were successfully built. These images install dependencies for FuzzBench, a service for evaluating fuzzers. The build process required several modifications to the `fuzzbench_install_dependencies` script to handle package version incompatibilities and differences between Ubuntu 20.04 and 24.04.
5+
The `ubuntu-20-04` and `ubuntu-24-04` images for `oss-fuzz/base-builder-fuzzbench` were successfully built. These images install dependencies for FuzzBench, a service for evaluating fuzzers. The build process required several modifications to the `fuzzbench_install_dependencies` script to handle package version incompatibilities and differences between Ubuntu 20.04 and 24.04.
66

77
## Build Status
88

99
| Image Tag | Dockerfile | Status |
1010
| --- | --- | --- |
11-
| `oss-fuzz/base-builder-fuzzbench:ubuntu20` | `ubuntu_20_04.Dockerfile` | Success |
12-
| `oss-fuzz/base-builder-fuzzbench:ubuntu24` | `ubuntu_24_04.Dockerfile` | Success |
11+
| `oss-fuzz/base-builder-fuzzbench:ubuntu-20-04` | `ubuntu-20-04.Dockerfile` | Success |
12+
| `oss-fuzz/base-builder-fuzzbench:ubuntu-24-04` | `ubuntu-24-04.Dockerfile` | Success |
1313

1414
## Package Comparison
1515

1616
### Key Differences (Ubuntu 20.04 vs. Ubuntu 24.04)
1717

18-
The `ubuntu24` image includes newer versions of many packages, including Python development libraries. The `fuzzbench_install_dependencies` script was updated to handle these differences.
18+
The `ubuntu-24-04` image includes newer versions of many packages, including Python development libraries. The `fuzzbench_install_dependencies` script was updated to handle these differences.
1919

2020
## Dockerfile Analysis
2121

2222
The Dockerfiles for both versions have the following key differences:
2323

24-
* **Base Image:** The `FROM` instruction in each Dockerfile points to the corresponding `oss-fuzz/base-builder` tag (`ubuntu20` or `ubuntu24`).
24+
* **Base Image:** The `FROM` instruction in each Dockerfile points to the corresponding `oss-fuzz/base-builder` tag (`ubuntu-20-04` or `ubuntu-24-04`).
2525
* **Dependency Installation:** The `fuzzbench_install_dependencies` script was modified to:
2626
* Update the `pytype` version to `2024.4.11`.
2727
* Update the `Orange3` package version to `3.39.0`.

infra/base-images/base-builder-fuzzbench/fuzzbench_install_dependencies_ubuntu_20_04

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,4 +19,4 @@ apt-get update && apt-get install -y gcc gfortran python-dev libopenblas-dev lib
1919
wget -O /tmp/requirements.txt https://raw.githubusercontent.com/google/fuzzbench/master/requirements.txt
2020
pip3 install pip --upgrade
2121
CFLAGS= CXXFLAGS= pip3 install -r /tmp/requirements.txt
22-
rm /tmp/requirements.txt
22+
rm /tmp/requirements.txt

infra/base-images/base-builder-fuzzbench/fuzzbench_install_dependencies_ubuntu_24_04

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -21,8 +21,6 @@ else
2121
apt-get update && apt-get install -y gcc gfortran python3-dev libopenblas-dev liblapack-dev cython3 libpq-dev
2222
fi
2323
wget -O /tmp/requirements.txt https://raw.githubusercontent.com/google/fuzzbench/master/requirements.txt
24-
sed -i 's/pytype==2022.10.13/pytype==2024.4.11/' /tmp/requirements.txt
25-
sed -i 's/Orange3==3.33.0/Orange3==3.39.0/' /tmp/requirements.txt
2624
pip3 install pip --upgrade
2725
CFLAGS= CXXFLAGS= pip3 install -r /tmp/requirements.txt
2826
rm /tmp/requirements.txt

infra/base-images/base-builder-fuzzbench/ubuntu-24-04.Dockerfile

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -17,8 +17,8 @@
1717
FROM gcr.io/oss-fuzz-base/base-builder:ubuntu-24-04
1818

1919
# Copy/Run this now to make the cache more resilient.
20-
COPY fuzzbench_install_dependencies /usr/local/bin
21-
RUN fuzzbench_install_dependencies
20+
COPY fuzzbench_install_dependencies_ubuntu_24_04 /usr/local/bin
21+
RUN fuzzbench_install_dependencies_ubuntu_24_04
2222

2323
ENV OSS_FUZZ_ON_DEMAND=1
2424

infra/base-images/base-builder-go/CHANGELOG.md

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -2,14 +2,14 @@
22

33
## Analysis Summary
44

5-
The `ubuntu20` and `ubuntu24` images for `oss-fuzz/base-builder-go` were successfully built. These images install the Go programming language and related fuzzing tools on top of the `base-builder` image. The build process for both versions is nearly identical, with the primary difference being the base image used.
5+
The `ubuntu-20-04` and `ubuntu-24-04` images for `oss-fuzz/base-builder-go` were successfully built. These images install the Go programming language and related fuzzing tools on top of the `base-builder` image. The build process for both versions is nearly identical, with the primary difference being the base image used.
66

77
## Build Status
88

99
| Image Tag | Dockerfile | Status |
1010
| --- | --- | --- |
11-
| `oss-fuzz/base-builder-go:ubuntu20` | `ubuntu_20_04.Dockerfile` | Success |
12-
| `oss-fuzz/base-builder-go:ubuntu24` | `ubuntu_24_04.Dockerfile` | Success |
11+
| `oss-fuzz/base-builder-go:ubuntu-20-04` | `ubuntu-20-04.Dockerfile` | Success |
12+
| `oss-fuzz/base-builder-go:ubuntu-24-04` | `ubuntu-24-04.Dockerfile` | Success |
1313

1414
## Package Comparison
1515

@@ -21,6 +21,6 @@ There are no significant package differences introduced in this build stage, as
2121

2222
The Dockerfiles for both versions are very similar and perform the following actions:
2323

24-
* **Base Image:** The `FROM` instruction in each Dockerfile points to the corresponding `oss-fuzz/base-builder` tag (`ubuntu20` or `ubuntu24`).
24+
* **Base Image:** The `FROM` instruction in each Dockerfile points to the corresponding `oss-fuzz/base-builder` tag (`ubuntu-20-04` or `ubuntu-24-04`).
2525
* **Go Installation:** The `install_go.sh` script is used to download and install Go.
2626
* **Go Fuzzing Tools:** The Dockerfiles install several Go-based fuzzing tools, including `go114-fuzz-build` and `go-118-fuzz-build`.

infra/base-images/base-builder-javascript/CHANGELOG.md

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -2,14 +2,14 @@
22

33
## Analysis Summary
44

5-
The `ubuntu20` and `ubuntu24` images for `oss-fuzz/base-builder-javascript` were successfully built. These images install Node.js and other JavaScript-related tools on top of the `base-builder` image. The build process for both versions is straightforward and relies on the `install_javascript.sh` script, which is compatible with both base images.
5+
The `ubuntu-20-04` and `ubuntu-24-04` images for `oss-fuzz/base-builder-javascript` were successfully built. These images install Node.js and other JavaScript-related tools on top of the `base-builder` image. The build process for both versions is straightforward and relies on the `install_javascript.sh` script, which is compatible with both base images.
66

77
## Build Status
88

99
| Image Tag | Dockerfile | Status |
1010
| --- | --- | --- |
11-
| `oss-fuzz/base-builder-javascript:ubuntu20` | `ubuntu_20_04.Dockerfile` | Success |
12-
| `oss-fuzz/base-builder-javascript:ubuntu24` | `ubuntu_24_04.Dockerfile` | Success |
11+
| `oss-fuzz/base-builder-javascript:ubuntu-20-04` | `ubuntu-20-04.Dockerfile` | Success |
12+
| `oss-fuzz/base-builder-javascript:ubuntu-24-04` | `ubuntu-24-04.Dockerfile` | Success |
1313

1414
## Package Comparison
1515

@@ -21,5 +21,5 @@ The primary difference is the version of Node.js installed, which is Node.js 20.
2121

2222
The Dockerfiles for both versions are very similar and perform the following actions:
2323

24-
* **Base Image:** The `FROM` instruction in each Dockerfile points to the corresponding `oss-fuzz/base-builder` tag (`ubuntu20` or `ubuntu24`).
24+
* **Base Image:** The `FROM` instruction in each Dockerfile points to the corresponding `oss-fuzz/base-builder` tag (`ubuntu-20-04` or `ubuntu-24-04`).
2525
* **Node.js Installation:** The `install_javascript.sh` script is used to add the Node.js repository and install Node.js.

infra/base-images/base-builder-jvm/CHANGELOG.md

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -2,14 +2,14 @@
22

33
## Analysis Summary
44

5-
The `ubuntu20` and `ubuntu24` images for `oss-fuzz/base-builder-jvm` were successfully built. These images install the Java Development Kit (JDK) and the Jazzer fuzzer on top of the `base-builder` image. The `ubuntu24` build required fixing syntax errors in the Dockerfile, specifically missing line continuation characters (`\`). After these corrections, both builds completed successfully.
5+
The `ubuntu-20-04` and `ubuntu-24-04` images for `oss-fuzz/base-builder-jvm` were successfully built. These images install the Java Development Kit (JDK) and the Jazzer fuzzer on top of the `base-builder` image. The `ubuntu-24-04` build required fixing syntax errors in the Dockerfile, specifically missing line continuation characters (`\`). After these corrections, both builds completed successfully.
66

77
## Build Status
88

99
| Image Tag | Dockerfile | Status |
1010
| --- | --- | --- |
11-
| `oss-fuzz/base-builder-jvm:ubuntu20` | `ubuntu_20_04.Dockerfile` | Success |
12-
| `oss-fuzz/base-builder-jvm:ubuntu24` | `ubuntu_24_04.Dockerfile` | Success |
11+
| `oss-fuzz/base-builder-jvm:ubuntu-20-04` | `ubuntu-20-04.Dockerfile` | Success |
12+
| `oss-fuzz/base-builder-jvm:ubuntu-24-04` | `ubuntu-24-04.Dockerfile` | Success |
1313

1414
## Package Comparison
1515

@@ -21,7 +21,7 @@ The primary difference is the Java version installed. Both versions install Open
2121

2222
The Dockerfiles for both versions have the following key differences:
2323

24-
* **Base Image:** The `FROM` instruction in each Dockerfile points to the corresponding `oss-fuzz/base-builder` tag (`ubuntu20` or `ubuntu24`).
24+
* **Base Image:** The `FROM` instruction in each Dockerfile points to the corresponding `oss-fuzz/base-builder` tag (`ubuntu-20-04` or `ubuntu-24-04`).
2525
* **Java Installation:** The `install_java.sh` script is used to download and install OpenJDK 17 and 15.
2626
* **Jazzer Installation:** Both versions clone the Jazzer repository and build it using Bazel.
27-
* **Dockerfile Syntax:** The `ubuntu24` Dockerfile had syntax errors that were corrected.
27+
* **Dockerfile Syntax:** The `ubuntu-24-04` Dockerfile had syntax errors that were corrected.

0 commit comments

Comments
 (0)