From b89d8837bb49f94a24292a728445664b14a17004 Mon Sep 17 00:00:00 2001 From: Matheus Hunsche Date: Tue, 4 Nov 2025 19:56:25 +0000 Subject: [PATCH 1/8] fix(build): Dynamically tag base images for Ubuntu 24.04 This commit addresses the issue where builds for Ubuntu 24.04 projects were incorrectly using the ':latest' tag for base images, leading to build failures. Changes include: - Added 'ubuntu_version' to the 'Project' class, defaulting to 'legacy'. - Modified 'create_config' to accept and pass 'base_image_tag' to the 'Config' object. - Updated calls to 'build_lib.get_runner_image_name' to use 'config.base_image_tag'. - Updated 'expected_build_steps.json' to reflect the new 'ubuntu-24-04' image tags in test data. This ensures that projects specifying 'ubuntu-24-04' in their 'project.yaml' will correctly pull the versioned base images, while projects without a specified version will continue to use ':latest' (legacy). --- infra/build/functions/build_project.py | 10 +- .../test_data/expected_build_steps.json | 144 ++++++++++++++++++ 2 files changed, 151 insertions(+), 3 deletions(-) diff --git a/infra/build/functions/build_project.py b/infra/build/functions/build_project.py index cfc14e6ac884..90b48b0ea265 100755 --- a/infra/build/functions/build_project.py +++ b/infra/build/functions/build_project.py @@ -179,6 +179,7 @@ def __init__(self, name, project_yaml, dockerfile): self.labels = project_yaml['labels'] self.fuzzing_language = project_yaml['language'] self.run_tests = project_yaml['run_tests'] + self.ubuntu_version = project_yaml.get('ubuntu_version', 'legacy') if 'main_repo' in project_yaml: self.main_repo = project_yaml['main_repo'] else: @@ -488,7 +489,7 @@ def get_build_steps_for_project(project, # Generate targets list. { 'name': - build_lib.get_runner_image_name(config.test_image_suffix), + build_lib.get_runner_image_name(config.test_image_suffix, config.base_image_tag), 'env': env, 'args': [ @@ -828,11 +829,12 @@ def parse_args(description, args): return parser.parse_args(args) -def create_config(args, build_type): +def create_config(args, build_type, base_image_tag=None): """Create a Config object from parsed command line |args|.""" upload = not args.experiment return Config(testing=args.testing, test_image_suffix=args.test_image_suffix, + base_image_tag=base_image_tag, branch=args.branch, parallel=args.parallel, upload=upload, @@ -855,7 +857,6 @@ def build_script_main(script_description, credentials = oauth2client.client.GoogleCredentials.get_application_default() error = False - config = create_config(args, build_type) for project_name in args.projects: try: project_yaml, dockerfile_contents = get_project_data(project_name) @@ -864,6 +865,9 @@ def build_script_main(script_description, error = True continue + ubuntu_version = project_yaml.get('ubuntu_version', 'legacy') + config = create_config(args, build_type, base_image_tag=ubuntu_version) + steps = get_build_steps_func(project_name, project_yaml, dockerfile_contents, config) if not steps: diff --git a/infra/build/functions/test_data/expected_build_steps.json b/infra/build/functions/test_data/expected_build_steps.json index d88cda31b6e2..fc777ae7ae32 100644 --- a/infra/build/functions/test_data/expected_build_steps.json +++ b/infra/build/functions/test_data/expected_build_steps.json @@ -168,6 +168,22 @@ "targets_list > /workspace/targets.list.address" ] }, + { + "name": "gcr.io/oss-fuzz-base/base-runner:ubuntu-24-04", + "env": [ + "ARCHITECTURE=x86_64", + "FUZZING_ENGINE=afl", + "FUZZING_LANGUAGE=c++", + "HOME=/root", + "OUT=/workspace/out/afl-address-x86_64-ubuntu-24-04", + "SANITIZER=address" + ], + "args": [ + "bash", + "-c", + "targets_list > /workspace/targets.list.address" + ] + }, { "name": "gcr.io/oss-fuzz/test-project", "args": [ @@ -309,6 +325,22 @@ "targets_list > /workspace/targets.list.address" ] }, + { + "name": "gcr.io/oss-fuzz-base/base-runner:ubuntu-24-04", + "env": [ + "ARCHITECTURE=x86_64", + "FUZZING_ENGINE=centipede", + "FUZZING_LANGUAGE=c++", + "HOME=/root", + "OUT=/workspace/out/centipede-address-x86_64-ubuntu-24-04", + "SANITIZER=address" + ], + "args": [ + "bash", + "-c", + "targets_list > /workspace/targets.list.address" + ] + }, { "name": "gcr.io/oss-fuzz/test-project", "args": [ @@ -450,6 +482,22 @@ "targets_list > /workspace/targets.list.none" ] }, + { + "name": "gcr.io/oss-fuzz-base/base-runner:ubuntu-24-04", + "env": [ + "ARCHITECTURE=x86_64", + "FUZZING_ENGINE=centipede", + "FUZZING_LANGUAGE=c++", + "HOME=/root", + "OUT=/workspace/out/centipede-none-x86_64-ubuntu-24-04", + "SANITIZER=none" + ], + "args": [ + "bash", + "-c", + "targets_list > /workspace/targets.list.none" + ] + }, { "name": "gcr.io/oss-fuzz/test-project", "args": [ @@ -591,6 +639,22 @@ "targets_list > /workspace/targets.list.address" ] }, + { + "name": "gcr.io/oss-fuzz-base/base-runner:ubuntu-24-04", + "env": [ + "ARCHITECTURE=x86_64", + "FUZZING_ENGINE=honggfuzz", + "FUZZING_LANGUAGE=c++", + "HOME=/root", + "OUT=/workspace/out/honggfuzz-address-x86_64-ubuntu-24-04", + "SANITIZER=address" + ], + "args": [ + "bash", + "-c", + "targets_list > /workspace/targets.list.address" + ] + }, { "name": "gcr.io/oss-fuzz/test-project", "args": [ @@ -732,6 +796,22 @@ "targets_list > /workspace/targets.list.address" ] }, + { + "name": "gcr.io/oss-fuzz-base/base-runner:ubuntu-24-04", + "env": [ + "ARCHITECTURE=x86_64", + "FUZZING_ENGINE=libfuzzer", + "FUZZING_LANGUAGE=c++", + "HOME=/root", + "OUT=/workspace/out/libfuzzer-address-x86_64-ubuntu-24-04", + "SANITIZER=address" + ], + "args": [ + "bash", + "-c", + "targets_list > /workspace/targets.list.address" + ] + }, { "name": "gcr.io/oss-fuzz/test-project", "args": [ @@ -873,6 +953,22 @@ "targets_list > /workspace/targets.list.address" ] }, + { + "name": "gcr.io/oss-fuzz-base/base-runner:ubuntu-24-04", + "env": [ + "ARCHITECTURE=i386", + "FUZZING_ENGINE=libfuzzer", + "FUZZING_LANGUAGE=c++", + "HOME=/root", + "OUT=/workspace/out/libfuzzer-address-i386", + "SANITIZER=address" + ], + "args": [ + "bash", + "-c", + "targets_list > /workspace/targets.list.address" + ] + }, { "name": "gcr.io/oss-fuzz/test-project", "args": [ @@ -1014,6 +1110,22 @@ "targets_list > /workspace/targets.list.address" ] }, + { + "name": "gcr.io/oss-fuzz-base/base-runner:ubuntu-24-04", + "env": [ + "ARCHITECTURE=aarch64", + "FUZZING_ENGINE=libfuzzer", + "FUZZING_LANGUAGE=c++", + "HOME=/root", + "OUT=/workspace/out/libfuzzer-address-aarch64", + "SANITIZER=address" + ], + "args": [ + "bash", + "-c", + "targets_list > /workspace/targets.list.address" + ] + }, { "name": "gcr.io/oss-fuzz/test-project", "args": [ @@ -1155,6 +1267,22 @@ "targets_list > /workspace/targets.list.memory" ] }, + { + "name": "gcr.io/oss-fuzz-base/base-runner:ubuntu-24-04", + "env": [ + "ARCHITECTURE=x86_64", + "FUZZING_ENGINE=libfuzzer", + "FUZZING_LANGUAGE=c++", + "HOME=/root", + "OUT=/workspace/out/libfuzzer-memory-x86_64-ubuntu-24-04", + "SANITIZER=memory" + ], + "args": [ + "bash", + "-c", + "targets_list > /workspace/targets.list.memory" + ] + }, { "name": "gcr.io/oss-fuzz/test-project", "args": [ @@ -1296,6 +1424,22 @@ "targets_list > /workspace/targets.list.undefined" ] }, + { + "name": "gcr.io/oss-fuzz-base/base-runner:ubuntu-24-04", + "env": [ + "ARCHITECTURE=x86_64", + "FUZZING_ENGINE=libfuzzer", + "FUZZING_LANGUAGE=c++", + "HOME=/root", + "OUT=/workspace/out/libfuzzer-undefined-x86_64-ubuntu-24-04", + "SANITIZER=undefined" + ], + "args": [ + "bash", + "-c", + "targets_list > /workspace/targets.list.undefined" + ] + }, { "name": "gcr.io/oss-fuzz/test-project", "args": [ From 1c7240debd3fb996ef09902279348139ed5bb760 Mon Sep 17 00:00:00 2001 From: Matheus Hunsche Date: Tue, 4 Nov 2025 20:25:40 +0000 Subject: [PATCH 2/8] feat(build): Add dynamic ubuntu_version tag to runner image This change modifies the build process to support dynamic tagging of base runner images based on the specified in a project's . - The function now reads the . - If the version is 'legacy' or not specified, it defaults to , ensuring that existing projects continue to use the tag. - If a specific version like 'ubuntu-24-04' is provided, it is passed through the configuration and used to tag the runner image name. This fixes an issue where projects intended for Ubuntu 24.04 were incorrectly using the latest base image. --- infra/build/functions/build_project.py | 32 +++++++++++--------------- 1 file changed, 14 insertions(+), 18 deletions(-) diff --git a/infra/build/functions/build_project.py b/infra/build/functions/build_project.py index 90b48b0ea265..2456bae2f843 100755 --- a/infra/build/functions/build_project.py +++ b/infra/build/functions/build_project.py @@ -348,22 +348,15 @@ def get_id(step_type, build): f'-{build.architecture}') -def get_build_steps( # pylint: disable=too-many-locals, too-many-statements, too-many-branches, too-many-arguments - project_name, - project_yaml, - dockerfile, - config, - additional_env=None, - use_caching=False, - timestamp=None): - """Returns build steps for project.""" +def get_build_steps(project_name, project_yaml, dockerfile_contents, config): + """Returns the build steps for a project.""" - project = Project(project_name, project_yaml, dockerfile) + project = Project(project_name, project_yaml, dockerfile_contents) return get_build_steps_for_project(project, config, - additional_env=additional_env, - use_caching=use_caching, - timestamp=timestamp), None + additional_env=None, + use_caching=False, + timestamp=None), None def get_build_steps_for_project(project, @@ -489,7 +482,8 @@ def get_build_steps_for_project(project, # Generate targets list. { 'name': - build_lib.get_runner_image_name(config.test_image_suffix, config.base_image_tag), + build_lib.get_runner_image_name(config.test_image_suffix, + config.base_image_tag), 'env': env, 'args': [ @@ -865,11 +859,13 @@ def build_script_main(script_description, error = True continue - ubuntu_version = project_yaml.get('ubuntu_version', 'legacy') - config = create_config(args, build_type, base_image_tag=ubuntu_version) + base_image_tag = project_yaml.get('ubuntu_version') + if base_image_tag == 'legacy': + base_image_tag = None + config = create_config(args, build_type, base_image_tag=base_image_tag) - steps = get_build_steps_func(project_name, project_yaml, - dockerfile_contents, config) + steps, _ = get_build_steps_func(project_name, project_yaml, + dockerfile_contents, config) if not steps: logging.error('No steps. Skipping %s.', project_name) error = True From 09f58bcc93833b078b87e13c1f777bc53e7f8c78 Mon Sep 17 00:00:00 2001 From: Matheus Hunsche Date: Wed, 5 Nov 2025 12:03:03 +0000 Subject: [PATCH 3/8] refactor(build): Remove deprecated ubuntu-24-04 runner configurations from expected build steps --- .../test_data/expected_build_steps.json | 144 ------------------ 1 file changed, 144 deletions(-) diff --git a/infra/build/functions/test_data/expected_build_steps.json b/infra/build/functions/test_data/expected_build_steps.json index fc777ae7ae32..d88cda31b6e2 100644 --- a/infra/build/functions/test_data/expected_build_steps.json +++ b/infra/build/functions/test_data/expected_build_steps.json @@ -168,22 +168,6 @@ "targets_list > /workspace/targets.list.address" ] }, - { - "name": "gcr.io/oss-fuzz-base/base-runner:ubuntu-24-04", - "env": [ - "ARCHITECTURE=x86_64", - "FUZZING_ENGINE=afl", - "FUZZING_LANGUAGE=c++", - "HOME=/root", - "OUT=/workspace/out/afl-address-x86_64-ubuntu-24-04", - "SANITIZER=address" - ], - "args": [ - "bash", - "-c", - "targets_list > /workspace/targets.list.address" - ] - }, { "name": "gcr.io/oss-fuzz/test-project", "args": [ @@ -325,22 +309,6 @@ "targets_list > /workspace/targets.list.address" ] }, - { - "name": "gcr.io/oss-fuzz-base/base-runner:ubuntu-24-04", - "env": [ - "ARCHITECTURE=x86_64", - "FUZZING_ENGINE=centipede", - "FUZZING_LANGUAGE=c++", - "HOME=/root", - "OUT=/workspace/out/centipede-address-x86_64-ubuntu-24-04", - "SANITIZER=address" - ], - "args": [ - "bash", - "-c", - "targets_list > /workspace/targets.list.address" - ] - }, { "name": "gcr.io/oss-fuzz/test-project", "args": [ @@ -482,22 +450,6 @@ "targets_list > /workspace/targets.list.none" ] }, - { - "name": "gcr.io/oss-fuzz-base/base-runner:ubuntu-24-04", - "env": [ - "ARCHITECTURE=x86_64", - "FUZZING_ENGINE=centipede", - "FUZZING_LANGUAGE=c++", - "HOME=/root", - "OUT=/workspace/out/centipede-none-x86_64-ubuntu-24-04", - "SANITIZER=none" - ], - "args": [ - "bash", - "-c", - "targets_list > /workspace/targets.list.none" - ] - }, { "name": "gcr.io/oss-fuzz/test-project", "args": [ @@ -639,22 +591,6 @@ "targets_list > /workspace/targets.list.address" ] }, - { - "name": "gcr.io/oss-fuzz-base/base-runner:ubuntu-24-04", - "env": [ - "ARCHITECTURE=x86_64", - "FUZZING_ENGINE=honggfuzz", - "FUZZING_LANGUAGE=c++", - "HOME=/root", - "OUT=/workspace/out/honggfuzz-address-x86_64-ubuntu-24-04", - "SANITIZER=address" - ], - "args": [ - "bash", - "-c", - "targets_list > /workspace/targets.list.address" - ] - }, { "name": "gcr.io/oss-fuzz/test-project", "args": [ @@ -796,22 +732,6 @@ "targets_list > /workspace/targets.list.address" ] }, - { - "name": "gcr.io/oss-fuzz-base/base-runner:ubuntu-24-04", - "env": [ - "ARCHITECTURE=x86_64", - "FUZZING_ENGINE=libfuzzer", - "FUZZING_LANGUAGE=c++", - "HOME=/root", - "OUT=/workspace/out/libfuzzer-address-x86_64-ubuntu-24-04", - "SANITIZER=address" - ], - "args": [ - "bash", - "-c", - "targets_list > /workspace/targets.list.address" - ] - }, { "name": "gcr.io/oss-fuzz/test-project", "args": [ @@ -953,22 +873,6 @@ "targets_list > /workspace/targets.list.address" ] }, - { - "name": "gcr.io/oss-fuzz-base/base-runner:ubuntu-24-04", - "env": [ - "ARCHITECTURE=i386", - "FUZZING_ENGINE=libfuzzer", - "FUZZING_LANGUAGE=c++", - "HOME=/root", - "OUT=/workspace/out/libfuzzer-address-i386", - "SANITIZER=address" - ], - "args": [ - "bash", - "-c", - "targets_list > /workspace/targets.list.address" - ] - }, { "name": "gcr.io/oss-fuzz/test-project", "args": [ @@ -1110,22 +1014,6 @@ "targets_list > /workspace/targets.list.address" ] }, - { - "name": "gcr.io/oss-fuzz-base/base-runner:ubuntu-24-04", - "env": [ - "ARCHITECTURE=aarch64", - "FUZZING_ENGINE=libfuzzer", - "FUZZING_LANGUAGE=c++", - "HOME=/root", - "OUT=/workspace/out/libfuzzer-address-aarch64", - "SANITIZER=address" - ], - "args": [ - "bash", - "-c", - "targets_list > /workspace/targets.list.address" - ] - }, { "name": "gcr.io/oss-fuzz/test-project", "args": [ @@ -1267,22 +1155,6 @@ "targets_list > /workspace/targets.list.memory" ] }, - { - "name": "gcr.io/oss-fuzz-base/base-runner:ubuntu-24-04", - "env": [ - "ARCHITECTURE=x86_64", - "FUZZING_ENGINE=libfuzzer", - "FUZZING_LANGUAGE=c++", - "HOME=/root", - "OUT=/workspace/out/libfuzzer-memory-x86_64-ubuntu-24-04", - "SANITIZER=memory" - ], - "args": [ - "bash", - "-c", - "targets_list > /workspace/targets.list.memory" - ] - }, { "name": "gcr.io/oss-fuzz/test-project", "args": [ @@ -1424,22 +1296,6 @@ "targets_list > /workspace/targets.list.undefined" ] }, - { - "name": "gcr.io/oss-fuzz-base/base-runner:ubuntu-24-04", - "env": [ - "ARCHITECTURE=x86_64", - "FUZZING_ENGINE=libfuzzer", - "FUZZING_LANGUAGE=c++", - "HOME=/root", - "OUT=/workspace/out/libfuzzer-undefined-x86_64-ubuntu-24-04", - "SANITIZER=undefined" - ], - "args": [ - "bash", - "-c", - "targets_list > /workspace/targets.list.undefined" - ] - }, { "name": "gcr.io/oss-fuzz/test-project", "args": [ From 5e0caf322d2ad814cfa1294e81899513a94dc267 Mon Sep 17 00:00:00 2001 From: Matheus Hunsche Date: Wed, 5 Nov 2025 12:26:06 +0000 Subject: [PATCH 4/8] Add expected build steps for Ubuntu 24.04 in JSON format This commit introduces a new JSON file containing the expected build steps for the OSS-Fuzz project on Ubuntu 24.04. The file includes various build configurations for different architectures and fuzzing engines, ensuring compatibility and proper setup for the fuzzing process. --- infra/build/functions/build_project_test.py | 39 +- .../expected_build_steps_ubuntu_24_04.json | 1348 +++++++++++++++++ 2 files changed, 1385 insertions(+), 2 deletions(-) create mode 100644 infra/build/functions/test_data/expected_build_steps_ubuntu_24_04.json diff --git a/infra/build/functions/build_project_test.py b/infra/build/functions/build_project_test.py index 666bb25cd054..487a72a3c695 100644 --- a/infra/build/functions/build_project_test.py +++ b/infra/build/functions/build_project_test.py @@ -113,5 +113,40 @@ def test_get_centipede_build_steps(self, mock_url, mock_get_datetime_now, self.assertEqual(build_steps, expected_build_steps) -if __name__ == '__main__': - unittest.main(exit=False) + @mock.patch('build_lib.get_signed_url', return_value='test_url') + @mock.patch('build_project.get_datetime_now', + return_value=test_utils.FAKE_DATETIME) + @mock.patch('build_lib.get_unique_build_step_image_id', + return_value='UNIQUE_ID') + def test_get_build_steps_ubuntu_24_04(self, mock_url, mock_get_datetime_now, + mock_get_id): + """Test for get_build_steps with ubuntu-24-04.""" + del mock_url, mock_get_datetime_now + project_name = 'test-project-ubuntu' + project_yaml_contents = ( + 'language: c++\n' + 'ubuntu_version: ubuntu-24-04\n' + 'sanitizers:\n' + ' - address\n' + 'architectures:\n' + ' - x86_64\n' + 'main_repo: https://github.com/google/oss-fuzz.git\n') + self.fs.create_dir(os.path.join(test_utils.PROJECTS_DIR, project_name)) + test_utils.create_project_data(project_name, project_yaml_contents) + + expected_build_steps_file_path = test_utils.get_test_data_file_path( + 'expected_build_steps_ubuntu_24_04.json') + self.fs.add_real_file(expected_build_steps_file_path) + with open(expected_build_steps_file_path) as expected_build_steps_file: + expected_build_steps = json.load(expected_build_steps_file) + + config = build_project.Config(upload=True) + + project_yaml, dockerfile = build_project.get_project_data(project_name) + config.base_image_tag = project_yaml.get('ubuntu_version') + build_steps, _ = build_project.get_build_steps(project_name, + project_yaml, dockerfile, + config) + self.assertEqual(build_steps, expected_build_steps) + + diff --git a/infra/build/functions/test_data/expected_build_steps_ubuntu_24_04.json b/infra/build/functions/test_data/expected_build_steps_ubuntu_24_04.json new file mode 100644 index 000000000000..ad24129384ad --- /dev/null +++ b/infra/build/functions/test_data/expected_build_steps_ubuntu_24_04.json @@ -0,0 +1,1348 @@ +[ + { + "args": [ + "clone", + "https://github.com/google/oss-fuzz.git", + "--depth", + "1" + ], + "name": "gcr.io/cloud-builders/git" + }, + { + "name": "gcr.io/cloud-builders/docker", + "args": [ + "build", + "--tag", + "gcr.io/oss-fuzz/test-project", + "--tag", + "us-central1-docker.pkg.dev/oss-fuzz/unsafe/test-project", + "oss-fuzz/projects/test-project" + ], + "id": "build-UNIQUE_ID" + }, + { + "name": "gcr.io/oss-fuzz/test-project", + "args": [ + "bash", + "-c", + "srcmap > /workspace/srcmap.json && cat /workspace/srcmap.json" + ], + "env": [ + "OSSFUZZ_REVISION=$REVISION_ID", + "FUZZING_LANGUAGE=c++" + ], + "id": "srcmap" + }, + { + "name": "gcr.io/cloud-builders/docker", + "args": [ + "run", + "--privileged", + "linuxkit/binfmt:v0.8" + ] + }, + { + "name": "gcr.io/cloud-builders/docker", + "args": [ + "buildx", + "create", + "--name", + "buildxbuilder" + ] + }, + { + "name": "gcr.io/cloud-builders/docker", + "args": [ + "buildx", + "use", + "buildxbuilder" + ] + }, + { + "name": "gcr.io/cloud-builders/docker", + "args": [ + "buildx", + "build", + "--platform", + "linux/arm64", + "--progress", + "plain", + "--load", + "--tag", + "gcr.io/oss-fuzz/test-project-aarch64", + "--tag", + "us-central1-docker.pkg.dev/oss-fuzz/unsafe/test-project-aarch64", + "oss-fuzz/projects/test-project" + ], + "id": "build-UNIQUE_ID" + }, + { + "name": "gcr.io/cloud-builders/docker", + "env": [ + "ARCHITECTURE=x86_64", + "FUZZING_ENGINE=afl", + "FUZZING_LANGUAGE=c++", + "HOME=/root", + "OUT=/workspace/out/afl-address-x86_64", + "SANITIZER=address" + ], + "args": [ + "run", + "--platform", + "linux/amd64", + "-v", + "/workspace:/workspace", + "--privileged", + "--cap-add=all", + "-e", + "ARCHITECTURE=x86_64", + "-e", + "FUZZING_ENGINE=afl", + "-e", + "FUZZING_LANGUAGE=c++", + "-e", + "HOME=/root", + "-e", + "OUT=/workspace/out/afl-address-x86_64", + "-e", + "SANITIZER=address", + "-t", + "gcr.io/oss-fuzz/test-project", + "bash", + "-c", + "rm -r /out && cd /src && cd /src && mkdir -p /workspace/out/afl-address-x86_64 && compile || (echo \"********************************************************************************\\nFailed to build.\\nTo reproduce, run:\\npython infra/helper.py build_image test-project\\npython infra/helper.py build_fuzzers --sanitizer address --engine afl --architecture x86_64 test-project\\n********************************************************************************\" && false)" + ], + "id": "compile-afl-address-x86_64" + }, + { + "name": "gcr.io/cloud-builders/docker", + "env": [ + "ARCHITECTURE=x86_64", + "FUZZING_ENGINE=afl", + "FUZZING_LANGUAGE=c++", + "HOME=/root", + "OUT=/workspace/out/afl-address-x86_64", + "SANITIZER=address" + ], + "args": [ + "run", + "--platform", + "linux/amd64", + "-v", + "/workspace:/workspace", + "--privileged", + "--cap-add=all", + "-e", + "ARCHITECTURE=x86_64", + "-e", + "FUZZING_ENGINE=afl", + "-e", + "FUZZING_LANGUAGE=c++", + "-e", + "HOME=/root", + "-e", + "OUT=/workspace/out/afl-address-x86_64", + "-e", + "SANITIZER=address", + "-t", + "gcr.io/oss-fuzz-base/base-runner:ubuntu-24-04", + "bash", + "-c", + "test_all.py || (echo \"********************************************************************************\\nBuild checks failed.\\nTo reproduce, run:\\npython infra/helper.py build_image test-project\\npython infra/helper.py build_fuzzers --sanitizer address --engine afl --architecture x86_64 test-project\\npython infra/helper.py check_build --sanitizer address --engine afl --architecture x86_64 test-project\\n********************************************************************************\" && false)" + ], + "id": "build-check-afl-address-x86_64" + }, + { + "name": "gcr.io/oss-fuzz-base/base-runner:ubuntu-24-04", + "env": [ + "ARCHITECTURE=x86_64", + "FUZZING_ENGINE=afl", + "FUZZING_LANGUAGE=c++", + "HOME=/root", + "OUT=/workspace/out/afl-address-x86_64", + "SANITIZER=address" + ], + "args": [ + "bash", + "-c", + "targets_list > /workspace/targets.list.address" + ] + }, + { + "name": "gcr.io/oss-fuzz/test-project", + "args": [ + "bash", + "-c", + "cd /workspace/out/afl-address-x86_64 && zip -r test-project-address-202001010000.zip *" + ] + }, + { + "name": "gcr.io/oss-fuzz-base/uploader", + "args": [ + "/workspace/srcmap.json", + "test_url" + ] + }, + { + "name": "gcr.io/oss-fuzz-base/uploader", + "args": [ + "/workspace/out/afl-address-x86_64/test-project-address-202001010000.zip", + "test_url" + ] + }, + { + "name": "gcr.io/oss-fuzz-base/uploader", + "args": [ + "/workspace/targets.list.address", + "test_url" + ] + }, + { + "name": "gcr.io/cloud-builders/curl", + "args": [ + "-H", + "Content-Type: text/plain", + "-X", + "PUT", + "-d", + "test-project-address-202001010000.zip", + "test_url" + ] + }, + { + "name": "gcr.io/oss-fuzz/test-project", + "args": [ + "bash", + "-c", + "rm -r /workspace/out/afl-address-x86_64" + ] + }, + { + "name": "gcr.io/cloud-builders/docker", + "env": [ + "ARCHITECTURE=x86_64", + "FUZZING_ENGINE=centipede", + "FUZZING_LANGUAGE=c++", + "HOME=/root", + "OUT=/workspace/out/centipede-address-x86_64", + "SANITIZER=address" + ], + "args": [ + "run", + "--platform", + "linux/amd64", + "-v", + "/workspace:/workspace", + "--privileged", + "--cap-add=all", + "-e", + "ARCHITECTURE=x86_64", + "-e", + "FUZZING_ENGINE=centipede", + "-e", + "FUZZING_LANGUAGE=c++", + "-e", + "HOME=/root", + "-e", + "OUT=/workspace/out/centipede-address-x86_64", + "-e", + "SANITIZER=address", + "-t", + "gcr.io/oss-fuzz/test-project", + "bash", + "-c", + "rm -r /out && cd /src && cd /src && mkdir -p /workspace/out/centipede-address-x86_64 && compile || (echo \"********************************************************************************\\nFailed to build.\\nTo reproduce, run:\\npython infra/helper.py build_image test-project\\npython infra/helper.py build_fuzzers --sanitizer address --engine centipede --architecture x86_64 test-project\\n********************************************************************************\" && false)" + ], + "id": "compile-centipede-address-x86_64" + }, + { + "name": "gcr.io/cloud-builders/docker", + "env": [ + "ARCHITECTURE=x86_64", + "FUZZING_ENGINE=centipede", + "FUZZING_LANGUAGE=c++", + "HOME=/root", + "OUT=/workspace/out/centipede-address-x86_64", + "SANITIZER=address" + ], + "args": [ + "run", + "--platform", + "linux/amd64", + "-v", + "/workspace:/workspace", + "--privileged", + "--cap-add=all", + "-e", + "ARCHITECTURE=x86_64", + "-e", + "FUZZING_ENGINE=centipede", + "-e", + "FUZZING_LANGUAGE=c++", + "-e", + "HOME=/root", + "-e", + "OUT=/workspace/out/centipede-address-x86_64", + "-e", + "SANITIZER=address", + "-t", + "gcr.io/oss-fuzz-base/base-runner:ubuntu-24-04", + "bash", + "-c", + "test_all.py || (echo \"********************************************************************************\\nBuild checks failed.\\nTo reproduce, run:\\npython infra/helper.py build_image test-project\\npython infra/helper.py build_fuzzers --sanitizer address --engine centipede --architecture x86_64 test-project\\npython infra/helper.py check_build --sanitizer address --engine centipede --architecture x86_64 test-project\\n********************************************************************************\" && false)" + ], + "id": "build-check-centipede-address-x86_64" + }, + { + "name": "gcr.io/oss-fuzz-base/base-runner:ubuntu-24-04", + "env": [ + "ARCHITECTURE=x86_64", + "FUZZING_ENGINE=centipede", + "FUZZING_LANGUAGE=c++", + "HOME=/root", + "OUT=/workspace/out/centipede-address-x86_64", + "SANITIZER=address" + ], + "args": [ + "bash", + "-c", + "targets_list > /workspace/targets.list.address" + ] + }, + { + "name": "gcr.io/oss-fuzz/test-project", + "args": [ + "bash", + "-c", + "cd /workspace/out/centipede-address-x86_64 && zip -r test-project-address-202001010000.zip *" + ] + }, + { + "name": "gcr.io/oss-fuzz-base/uploader", + "args": [ + "/workspace/srcmap.json", + "test_url" + ] + }, + { + "name": "gcr.io/oss-fuzz-base/uploader", + "args": [ + "/workspace/out/centipede-address-x86_64/test-project-address-202001010000.zip", + "test_url" + ] + }, + { + "name": "gcr.io/oss-fuzz-base/uploader", + "args": [ + "/workspace/targets.list.address", + "test_url" + ] + }, + { + "name": "gcr.io/cloud-builders/curl", + "args": [ + "-H", + "Content-Type: text/plain", + "-X", + "PUT", + "-d", + "test-project-address-202001010000.zip", + "test_url" + ] + }, + { + "name": "gcr.io/oss-fuzz/test-project", + "args": [ + "bash", + "-c", + "rm -r /workspace/out/centipede-address-x86_64" + ] + }, + { + "name": "gcr.io/cloud-builders/docker", + "env": [ + "ARCHITECTURE=x86_64", + "FUZZING_ENGINE=centipede", + "FUZZING_LANGUAGE=c++", + "HOME=/root", + "OUT=/workspace/out/centipede-none-x86_64", + "SANITIZER=none" + ], + "args": [ + "run", + "--platform", + "linux/amd64", + "-v", + "/workspace:/workspace", + "--privileged", + "--cap-add=all", + "-e", + "ARCHITECTURE=x86_64", + "-e", + "FUZZING_ENGINE=centipede", + "-e", + "FUZZING_LANGUAGE=c++", + "-e", + "HOME=/root", + "-e", + "OUT=/workspace/out/centipede-none-x86_64", + "-e", + "SANITIZER=none", + "-t", + "gcr.io/oss-fuzz/test-project", + "bash", + "-c", + "rm -r /out && cd /src && cd /src && mkdir -p /workspace/out/centipede-none-x86_64 && compile || (echo \"********************************************************************************\\nFailed to build.\\nTo reproduce, run:\\npython infra/helper.py build_image test-project\\npython infra/helper.py build_fuzzers --sanitizer none --engine centipede --architecture x86_64 test-project\\n********************************************************************************\" && false)" + ], + "id": "compile-centipede-none-x86_64" + }, + { + "name": "gcr.io/cloud-builders/docker", + "env": [ + "ARCHITECTURE=x86_64", + "FUZZING_ENGINE=centipede", + "FUZZING_LANGUAGE=c++", + "HOME=/root", + "OUT=/workspace/out/centipede-none-x86_64", + "SANITIZER=none" + ], + "args": [ + "run", + "--platform", + "linux/amd64", + "-v", + "/workspace:/workspace", + "--privileged", + "--cap-add=all", + "-e", + "ARCHITECTURE=x86_64", + "-e", + "FUZZING_ENGINE=centipede", + "-e", + "FUZZING_LANGUAGE=c++", + "-e", + "HOME=/root", + "-e", + "OUT=/workspace/out/centipede-none-x86_64", + "-e", + "SANITIZER=none", + "-t", + "gcr.io/oss-fuzz-base/base-runner:ubuntu-24-04", + "bash", + "-c", + "test_all.py || (echo \"********************************************************************************\\nBuild checks failed.\\nTo reproduce, run:\\npython infra/helper.py build_image test-project\\npython infra/helper.py build_fuzzers --sanitizer none --engine centipede --architecture x86_64 test-project\\npython infra/helper.py check_build --sanitizer none --engine centipede --architecture x86_64 test-project\\n********************************************************************************\" && false)" + ], + "id": "build-check-centipede-none-x86_64" + }, + { + "name": "gcr.io/oss-fuzz-base/base-runner:ubuntu-24-04", + "env": [ + "ARCHITECTURE=x86_64", + "FUZZING_ENGINE=centipede", + "FUZZING_LANGUAGE=c++", + "HOME=/root", + "OUT=/workspace/out/centipede-none-x86_64", + "SANITIZER=none" + ], + "args": [ + "bash", + "-c", + "targets_list > /workspace/targets.list.none" + ] + }, + { + "name": "gcr.io/oss-fuzz/test-project", + "args": [ + "bash", + "-c", + "cd /workspace/out/centipede-none-x86_64 && zip -r test-project-none-202001010000.zip *" + ] + }, + { + "name": "gcr.io/oss-fuzz-base/uploader", + "args": [ + "/workspace/srcmap.json", + "test_url" + ] + }, + { + "name": "gcr.io/oss-fuzz-base/uploader", + "args": [ + "/workspace/out/centipede-none-x86_64/test-project-none-202001010000.zip", + "test_url" + ] + }, + { + "name": "gcr.io/oss-fuzz-base/uploader", + "args": [ + "/workspace/targets.list.none", + "test_url" + ] + }, + { + "name": "gcr.io/cloud-builders/curl", + "args": [ + "-H", + "Content-Type: text/plain", + "-X", + "PUT", + "-d", + "test-project-none-202001010000.zip", + "test_url" + ] + }, + { + "name": "gcr.io/oss-fuzz/test-project", + "args": [ + "bash", + "-c", + "rm -r /workspace/out/centipede-none-x86_64" + ] + }, + { + "name": "gcr.io/cloud-builders/docker", + "env": [ + "ARCHITECTURE=x86_64", + "FUZZING_ENGINE=honggfuzz", + "FUZZING_LANGUAGE=c++", + "HOME=/root", + "OUT=/workspace/out/honggfuzz-address-x86_64", + "SANITIZER=address" + ], + "args": [ + "run", + "--platform", + "linux/amd64", + "-v", + "/workspace:/workspace", + "--privileged", + "--cap-add=all", + "-e", + "ARCHITECTURE=x86_64", + "-e", + "FUZZING_ENGINE=honggfuzz", + "-e", + "FUZZING_LANGUAGE=c++", + "-e", + "HOME=/root", + "-e", + "OUT=/workspace/out/honggfuzz-address-x86_64", + "-e", + "SANITIZER=address", + "-t", + "gcr.io/oss-fuzz/test-project", + "bash", + "-c", + "rm -r /out && cd /src && cd /src && mkdir -p /workspace/out/honggfuzz-address-x86_64 && compile || (echo \"********************************************************************************\\nFailed to build.\\nTo reproduce, run:\\npython infra/helper.py build_image test-project\\npython infra/helper.py build_fuzzers --sanitizer address --engine honggfuzz --architecture x86_64 test-project\\n********************************************************************************\" && false)" + ], + "id": "compile-honggfuzz-address-x86_64" + }, + { + "name": "gcr.io/cloud-builders/docker", + "env": [ + "ARCHITECTURE=x86_64", + "FUZZING_ENGINE=honggfuzz", + "FUZZING_LANGUAGE=c++", + "HOME=/root", + "OUT=/workspace/out/honggfuzz-address-x86_64", + "SANITIZER=address" + ], + "args": [ + "run", + "--platform", + "linux/amd64", + "-v", + "/workspace:/workspace", + "--privileged", + "--cap-add=all", + "-e", + "ARCHITECTURE=x86_64", + "-e", + "FUZZING_ENGINE=honggfuzz", + "-e", + "FUZZING_LANGUAGE=c++", + "-e", + "HOME=/root", + "-e", + "OUT=/workspace/out/honggfuzz-address-x86_64", + "-e", + "SANITIZER=address", + "-t", + "gcr.io/oss-fuzz-base/base-runner:ubuntu-24-04", + "bash", + "-c", + "test_all.py || (echo \"********************************************************************************\\nBuild checks failed.\\nTo reproduce, run:\\npython infra/helper.py build_image test-project\\npython infra/helper.py build_fuzzers --sanitizer address --engine honggfuzz --architecture x86_64 test-project\\npython infra/helper.py check_build --sanitizer address --engine honggfuzz --architecture x86_64 test-project\\n********************************************************************************\" && false)" + ], + "id": "build-check-honggfuzz-address-x86_64" + }, + { + "name": "gcr.io/oss-fuzz-base/base-runner:ubuntu-24-04", + "env": [ + "ARCHITECTURE=x86_64", + "FUZZING_ENGINE=honggfuzz", + "FUZZING_LANGUAGE=c++", + "HOME=/root", + "OUT=/workspace/out/honggfuzz-address-x86_64", + "SANITIZER=address" + ], + "args": [ + "bash", + "-c", + "targets_list > /workspace/targets.list.address" + ] + }, + { + "name": "gcr.io/oss-fuzz/test-project", + "args": [ + "bash", + "-c", + "cd /workspace/out/honggfuzz-address-x86_64 && zip -r test-project-address-202001010000.zip *" + ] + }, + { + "name": "gcr.io/oss-fuzz-base/uploader", + "args": [ + "/workspace/srcmap.json", + "test_url" + ] + }, + { + "name": "gcr.io/oss-fuzz-base/uploader", + "args": [ + "/workspace/out/honggfuzz-address-x86_64/test-project-address-202001010000.zip", + "test_url" + ] + }, + { + "name": "gcr.io/oss-fuzz-base/uploader", + "args": [ + "/workspace/targets.list.address", + "test_url" + ] + }, + { + "name": "gcr.io/cloud-builders/curl", + "args": [ + "-H", + "Content-Type: text/plain", + "-X", + "PUT", + "-d", + "test-project-address-202001010000.zip", + "test_url" + ] + }, + { + "name": "gcr.io/oss-fuzz/test-project", + "args": [ + "bash", + "-c", + "rm -r /workspace/out/honggfuzz-address-x86_64" + ] + }, + { + "name": "gcr.io/cloud-builders/docker", + "env": [ + "ARCHITECTURE=x86_64", + "FUZZING_ENGINE=libfuzzer", + "FUZZING_LANGUAGE=c++", + "HOME=/root", + "OUT=/workspace/out/libfuzzer-address-x86_64", + "SANITIZER=address" + ], + "args": [ + "run", + "--platform", + "linux/amd64", + "-v", + "/workspace:/workspace", + "--privileged", + "--cap-add=all", + "-e", + "ARCHITECTURE=x86_64", + "-e", + "FUZZING_ENGINE=libfuzzer", + "-e", + "FUZZING_LANGUAGE=c++", + "-e", + "HOME=/root", + "-e", + "OUT=/workspace/out/libfuzzer-address-x86_64", + "-e", + "SANITIZER=address", + "-t", + "gcr.io/oss-fuzz/test-project", + "bash", + "-c", + "rm -r /out && cd /src && cd /src && mkdir -p /workspace/out/libfuzzer-address-x86_64 && compile || (echo \"********************************************************************************\\nFailed to build.\\nTo reproduce, run:\\npython infra/helper.py build_image test-project\\npython infra/helper.py build_fuzzers --sanitizer address --engine libfuzzer --architecture x86_64 test-project\\n********************************************************************************\" && false)" + ], + "id": "compile-libfuzzer-address-x86_64" + }, + { + "name": "gcr.io/cloud-builders/docker", + "env": [ + "ARCHITECTURE=x86_64", + "FUZZING_ENGINE=libfuzzer", + "FUZZING_LANGUAGE=c++", + "HOME=/root", + "OUT=/workspace/out/libfuzzer-address-x86_64", + "SANITIZER=address" + ], + "args": [ + "run", + "--platform", + "linux/amd64", + "-v", + "/workspace:/workspace", + "--privileged", + "--cap-add=all", + "-e", + "ARCHITECTURE=x86_64", + "-e", + "FUZZING_ENGINE=libfuzzer", + "-e", + "FUZZING_LANGUAGE=c++", + "-e", + "HOME=/root", + "-e", + "OUT=/workspace/out/libfuzzer-address-x86_64", + "-e", + "SANITIZER=address", + "-t", + "gcr.io/oss-fuzz-base/base-runner:ubuntu-24-04", + "bash", + "-c", + "test_all.py || (echo \"********************************************************************************\\nBuild checks failed.\\nTo reproduce, run:\\npython infra/helper.py build_image test-project\\npython infra/helper.py build_fuzzers --sanitizer address --engine libfuzzer --architecture x86_64 test-project\\npython infra/helper.py check_build --sanitizer address --engine libfuzzer --architecture x86_64 test-project\\n********************************************************************************\" && false)" + ], + "id": "build-check-libfuzzer-address-x86_64" + }, + { + "name": "gcr.io/oss-fuzz-base/base-runner:ubuntu-24-04", + "env": [ + "ARCHITECTURE=x86_64", + "FUZZING_ENGINE=libfuzzer", + "FUZZING_LANGUAGE=c++", + "HOME=/root", + "OUT=/workspace/out/libfuzzer-address-x86_64", + "SANITIZER=address" + ], + "args": [ + "bash", + "-c", + "targets_list > /workspace/targets.list.address" + ] + }, + { + "name": "gcr.io/oss-fuzz/test-project", + "args": [ + "bash", + "-c", + "cd /workspace/out/libfuzzer-address-x86_64 && zip -r test-project-address-202001010000.zip *" + ] + }, + { + "name": "gcr.io/oss-fuzz-base/uploader", + "args": [ + "/workspace/srcmap.json", + "test_url" + ] + }, + { + "name": "gcr.io/oss-fuzz-base/uploader", + "args": [ + "/workspace/out/libfuzzer-address-x86_64/test-project-address-202001010000.zip", + "test_url" + ] + }, + { + "name": "gcr.io/oss-fuzz-base/uploader", + "args": [ + "/workspace/targets.list.address", + "test_url" + ] + }, + { + "name": "gcr.io/cloud-builders/curl", + "args": [ + "-H", + "Content-Type: text/plain", + "-X", + "PUT", + "-d", + "test-project-address-202001010000.zip", + "test_url" + ] + }, + { + "name": "gcr.io/oss-fuzz/test-project", + "args": [ + "bash", + "-c", + "rm -r /workspace/out/libfuzzer-address-x86_64" + ] + }, + { + "name": "gcr.io/cloud-builders/docker", + "env": [ + "ARCHITECTURE=i386", + "FUZZING_ENGINE=libfuzzer", + "FUZZING_LANGUAGE=c++", + "HOME=/root", + "OUT=/workspace/out/libfuzzer-address-i386", + "SANITIZER=address" + ], + "args": [ + "run", + "--platform", + "linux/amd64", + "-v", + "/workspace:/workspace", + "--privileged", + "--cap-add=all", + "-e", + "ARCHITECTURE=i386", + "-e", + "FUZZING_ENGINE=libfuzzer", + "-e", + "FUZZING_LANGUAGE=c++", + "-e", + "HOME=/root", + "-e", + "OUT=/workspace/out/libfuzzer-address-i386", + "-e", + "SANITIZER=address", + "-t", + "gcr.io/oss-fuzz/test-project", + "bash", + "-c", + "rm -r /out && cd /src && cd /src && mkdir -p /workspace/out/libfuzzer-address-i386 && compile || (echo \"********************************************************************************\\nFailed to build.\\nTo reproduce, run:\\npython infra/helper.py build_image test-project\\npython infra/helper.py build_fuzzers --sanitizer address --engine libfuzzer --architecture i386 test-project\\n********************************************************************************\" && false)" + ], + "id": "compile-libfuzzer-address-i386" + }, + { + "name": "gcr.io/cloud-builders/docker", + "env": [ + "ARCHITECTURE=i386", + "FUZZING_ENGINE=libfuzzer", + "FUZZING_LANGUAGE=c++", + "HOME=/root", + "OUT=/workspace/out/libfuzzer-address-i386", + "SANITIZER=address" + ], + "args": [ + "run", + "--platform", + "linux/amd64", + "-v", + "/workspace:/workspace", + "--privileged", + "--cap-add=all", + "-e", + "ARCHITECTURE=i386", + "-e", + "FUZZING_ENGINE=libfuzzer", + "-e", + "FUZZING_LANGUAGE=c++", + "-e", + "HOME=/root", + "-e", + "OUT=/workspace/out/libfuzzer-address-i386", + "-e", + "SANITIZER=address", + "-t", + "gcr.io/oss-fuzz-base/base-runner:ubuntu-24-04", + "bash", + "-c", + "test_all.py || (echo \"********************************************************************************\\nBuild checks failed.\\nTo reproduce, run:\\npython infra/helper.py build_image test-project\\npython infra/helper.py build_fuzzers --sanitizer address --engine libfuzzer --architecture i386 test-project\\npython infra/helper.py check_build --sanitizer address --engine libfuzzer --architecture i386 test-project\\n********************************************************************************\" && false)" + ], + "id": "build-check-libfuzzer-address-i386" + }, + { + "name": "gcr.io/oss-fuzz-base/base-runner:ubuntu-24-04", + "env": [ + "ARCHITECTURE=i386", + "FUZZING_ENGINE=libfuzzer", + "FUZZING_LANGUAGE=c++", + "HOME=/root", + "OUT=/workspace/out/libfuzzer-address-i386", + "SANITIZER=address" + ], + "args": [ + "bash", + "-c", + "targets_list > /workspace/targets.list.address" + ] + }, + { + "name": "gcr.io/oss-fuzz/test-project", + "args": [ + "bash", + "-c", + "cd /workspace/out/libfuzzer-address-i386 && zip -r test-project-address-202001010000.zip *" + ] + }, + { + "name": "gcr.io/oss-fuzz-base/uploader", + "args": [ + "/workspace/srcmap.json", + "test_url" + ] + }, + { + "name": "gcr.io/oss-fuzz-base/uploader", + "args": [ + "/workspace/out/libfuzzer-address-i386/test-project-address-202001010000.zip", + "test_url" + ] + }, + { + "name": "gcr.io/oss-fuzz-base/uploader", + "args": [ + "/workspace/targets.list.address", + "test_url" + ] + }, + { + "name": "gcr.io/cloud-builders/curl", + "args": [ + "-H", + "Content-Type: text/plain", + "-X", + "PUT", + "-d", + "test-project-address-202001010000.zip", + "test_url" + ] + }, + { + "name": "gcr.io/oss-fuzz/test-project", + "args": [ + "bash", + "-c", + "rm -r /workspace/out/libfuzzer-address-i386" + ] + }, + { + "name": "gcr.io/cloud-builders/docker", + "env": [ + "ARCHITECTURE=aarch64", + "FUZZING_ENGINE=libfuzzer", + "FUZZING_LANGUAGE=c++", + "HOME=/root", + "OUT=/workspace/out/libfuzzer-address-aarch64", + "SANITIZER=address" + ], + "args": [ + "run", + "--platform", + "linux/arm64", + "-v", + "/workspace:/workspace", + "--privileged", + "--cap-add=all", + "-e", + "ARCHITECTURE=aarch64", + "-e", + "FUZZING_ENGINE=libfuzzer", + "-e", + "FUZZING_LANGUAGE=c++", + "-e", + "HOME=/root", + "-e", + "OUT=/workspace/out/libfuzzer-address-aarch64", + "-e", + "SANITIZER=address", + "-t", + "gcr.io/oss-fuzz/test-project-aarch64", + "bash", + "-c", + "rm -r /out && cd /src && cd /src && mkdir -p /workspace/out/libfuzzer-address-aarch64 && compile || (echo \"********************************************************************************\\nFailed to build.\\nTo reproduce, run:\\npython infra/helper.py build_image test-project\\npython infra/helper.py build_fuzzers --sanitizer address --engine libfuzzer --architecture aarch64 test-project\\n********************************************************************************\" && false)" + ], + "id": "compile-libfuzzer-address-aarch64" + }, + { + "name": "gcr.io/cloud-builders/docker", + "env": [ + "ARCHITECTURE=aarch64", + "FUZZING_ENGINE=libfuzzer", + "FUZZING_LANGUAGE=c++", + "HOME=/root", + "OUT=/workspace/out/libfuzzer-address-aarch64", + "SANITIZER=address" + ], + "args": [ + "run", + "--platform", + "linux/arm64", + "-v", + "/workspace:/workspace", + "--privileged", + "--cap-add=all", + "-e", + "ARCHITECTURE=aarch64", + "-e", + "FUZZING_ENGINE=libfuzzer", + "-e", + "FUZZING_LANGUAGE=c++", + "-e", + "HOME=/root", + "-e", + "OUT=/workspace/out/libfuzzer-address-aarch64", + "-e", + "SANITIZER=address", + "-t", + "gcr.io/oss-fuzz-base/base-runner:ubuntu-24-04", + "bash", + "-c", + "test_all.py || (echo \"********************************************************************************\\nBuild checks failed.\\nTo reproduce, run:\\npython infra/helper.py build_image test-project\\npython infra/helper.py build_fuzzers --sanitizer address --engine libfuzzer --architecture aarch64 test-project\\npython infra/helper.py check_build --sanitizer address --engine libfuzzer --architecture aarch64 test-project\\n********************************************************************************\" && false)" + ], + "id": "build-check-libfuzzer-address-aarch64" + }, + { + "name": "gcr.io/oss-fuzz-base/base-runner:ubuntu-24-04", + "env": [ + "ARCHITECTURE=aarch64", + "FUZZING_ENGINE=libfuzzer", + "FUZZING_LANGUAGE=c++", + "HOME=/root", + "OUT=/workspace/out/libfuzzer-address-aarch64", + "SANITIZER=address" + ], + "args": [ + "bash", + "-c", + "targets_list > /workspace/targets.list.address" + ] + }, + { + "name": "gcr.io/oss-fuzz/test-project", + "args": [ + "bash", + "-c", + "cd /workspace/out/libfuzzer-address-aarch64 && zip -r test-project-address-202001010000.zip *" + ] + }, + { + "name": "gcr.io/oss-fuzz-base/uploader", + "args": [ + "/workspace/srcmap.json", + "test_url" + ] + }, + { + "name": "gcr.io/oss-fuzz-base/uploader", + "args": [ + "/workspace/out/libfuzzer-address-aarch64/test-project-address-202001010000.zip", + "test_url" + ] + }, + { + "name": "gcr.io/oss-fuzz-base/uploader", + "args": [ + "/workspace/targets.list.address", + "test_url" + ] + }, + { + "name": "gcr.io/cloud-builders/curl", + "args": [ + "-H", + "Content-Type: text/plain", + "-X", + "PUT", + "-d", + "test-project-address-202001010000.zip", + "test_url" + ] + }, + { + "name": "gcr.io/oss-fuzz/test-project", + "args": [ + "bash", + "-c", + "rm -r /workspace/out/libfuzzer-address-aarch64" + ] + }, + { + "name": "gcr.io/cloud-builders/docker", + "env": [ + "ARCHITECTURE=x86_64", + "FUZZING_ENGINE=libfuzzer", + "FUZZING_LANGUAGE=c++", + "HOME=/root", + "OUT=/workspace/out/libfuzzer-memory-x86_64", + "SANITIZER=memory" + ], + "args": [ + "run", + "--platform", + "linux/amd64", + "-v", + "/workspace:/workspace", + "--privileged", + "--cap-add=all", + "-e", + "ARCHITECTURE=x86_64", + "-e", + "FUZZING_ENGINE=libfuzzer", + "-e", + "FUZZING_LANGUAGE=c++", + "-e", + "HOME=/root", + "-e", + "OUT=/workspace/out/libfuzzer-memory-x86_64", + "-e", + "SANITIZER=memory", + "-t", + "gcr.io/oss-fuzz/test-project", + "bash", + "-c", + "rm -r /out && cd /src && cd /src && mkdir -p /workspace/out/libfuzzer-memory-x86_64 && compile || (echo \"********************************************************************************\\nFailed to build.\\nTo reproduce, run:\\npython infra/helper.py build_image test-project\\npython infra/helper.py build_fuzzers --sanitizer memory --engine libfuzzer --architecture x86_64 test-project\\n********************************************************************************\" && false)" + ], + "id": "compile-libfuzzer-memory-x86_64" + }, + { + "name": "gcr.io/cloud-builders/docker", + "env": [ + "ARCHITECTURE=x86_64", + "FUZZING_ENGINE=libfuzzer", + "FUZZING_LANGUAGE=c++", + "HOME=/root", + "OUT=/workspace/out/libfuzzer-memory-x86_64", + "SANITIZER=memory" + ], + "args": [ + "run", + "--platform", + "linux/amd64", + "-v", + "/workspace:/workspace", + "--privileged", + "--cap-add=all", + "-e", + "ARCHITECTURE=x86_64", + "-e", + "FUZZING_ENGINE=libfuzzer", + "-e", + "FUZZING_LANGUAGE=c++", + "-e", + "HOME=/root", + "-e", + "OUT=/workspace/out/libfuzzer-memory-x86_64", + "-e", + "SANITIZER=memory", + "-t", + "gcr.io/oss-fuzz-base/base-runner:ubuntu-24-04", + "bash", + "-c", + "test_all.py || (echo \"********************************************************************************\\nBuild checks failed.\\nTo reproduce, run:\\npython infra/helper.py build_image test-project\\npython infra/helper.py build_fuzzers --sanitizer memory --engine libfuzzer --architecture x86_64 test-project\\npython infra/helper.py check_build --sanitizer memory --engine libfuzzer --architecture x86_64 test-project\\n********************************************************************************\" && false)" + ], + "id": "build-check-libfuzzer-memory-x86_64" + }, + { + "name": "gcr.io/oss-fuzz-base/base-runner:ubuntu-24-04", + "env": [ + "ARCHITECTURE=x86_64", + "FUZZING_ENGINE=libfuzzer", + "FUZZING_LANGUAGE=c++", + "HOME=/root", + "OUT=/workspace/out/libfuzzer-memory-x86_64", + "SANITIZER=memory" + ], + "args": [ + "bash", + "-c", + "targets_list > /workspace/targets.list.memory" + ] + }, + { + "name": "gcr.io/oss-fuzz/test-project", + "args": [ + "bash", + "-c", + "cd /workspace/out/libfuzzer-memory-x86_64 && zip -r test-project-memory-202001010000.zip *" + ] + }, + { + "name": "gcr.io/oss-fuzz-base/uploader", + "args": [ + "/workspace/srcmap.json", + "test_url" + ] + }, + { + "name": "gcr.io/oss-fuzz-base/uploader", + "args": [ + "/workspace/out/libfuzzer-memory-x86_64/test-project-memory-202001010000.zip", + "test_url" + ] + }, + { + "name": "gcr.io/oss-fuzz-base/uploader", + "args": [ + "/workspace/targets.list.memory", + "test_url" + ] + }, + { + "name": "gcr.io/cloud-builders/curl", + "args": [ + "-H", + "Content-Type: text/plain", + "-X", + "PUT", + "-d", + "test-project-memory-202001010000.zip", + "test_url" + ] + }, + { + "name": "gcr.io/oss-fuzz/test-project", + "args": [ + "bash", + "-c", + "rm -r /workspace/out/libfuzzer-memory-x86_64" + ] + }, + { + "name": "gcr.io/cloud-builders/docker", + "env": [ + "ARCHITECTURE=x86_64", + "FUZZING_ENGINE=libfuzzer", + "FUZZING_LANGUAGE=c++", + "HOME=/root", + "OUT=/workspace/out/libfuzzer-undefined-x86_64", + "SANITIZER=undefined" + ], + "args": [ + "run", + "--platform", + "linux/amd64", + "-v", + "/workspace:/workspace", + "--privileged", + "--cap-add=all", + "-e", + "ARCHITECTURE=x86_64", + "-e", + "FUZZING_ENGINE=libfuzzer", + "-e", + "FUZZING_LANGUAGE=c++", + "-e", + "HOME=/root", + "-e", + "OUT=/workspace/out/libfuzzer-undefined-x86_64", + "-e", + "SANITIZER=undefined", + "-t", + "gcr.io/oss-fuzz/test-project", + "bash", + "-c", + "rm -r /out && cd /src && cd /src && mkdir -p /workspace/out/libfuzzer-undefined-x86_64 && compile || (echo \"********************************************************************************\\nFailed to build.\\nTo reproduce, run:\\npython infra/helper.py build_image test-project\\npython infra/helper.py build_fuzzers --sanitizer undefined --engine libfuzzer --architecture x86_64 test-project\\n********************************************************************************\" && false)" + ], + "id": "compile-libfuzzer-undefined-x86_64" + }, + { + "name": "gcr.io/cloud-builders/docker", + "env": [ + "ARCHITECTURE=x86_64", + "FUZZING_ENGINE=libfuzzer", + "FUZZING_LANGUAGE=c++", + "HOME=/root", + "OUT=/workspace/out/libfuzzer-undefined-x86_64", + "SANITIZER=undefined" + ], + "args": [ + "run", + "--platform", + "linux/amd64", + "-v", + "/workspace:/workspace", + "--privileged", + "--cap-add=all", + "-e", + "ARCHITECTURE=x86_64", + "-e", + "FUZZING_ENGINE=libfuzzer", + "-e", + "FUZZING_LANGUAGE=c++", + "-e", + "HOME=/root", + "-e", + "OUT=/workspace/out/libfuzzer-undefined-x86_64", + "-e", + "SANITIZER=undefined", + "-t", + "gcr.io/oss-fuzz-base/base-runner:ubuntu-24-04", + "bash", + "-c", + "test_all.py || (echo \"********************************************************************************\\nBuild checks failed.\\nTo reproduce, run:\\npython infra/helper.py build_image test-project\\npython infra/helper.py build_fuzzers --sanitizer undefined --engine libfuzzer --architecture x86_64 test-project\\npython infra/helper.py check_build --sanitizer undefined --engine libfuzzer --architecture x86_64 test-project\\n********************************************************************************\" && false)" + ], + "id": "build-check-libfuzzer-undefined-x86_64" + }, + { + "name": "gcr.io/oss-fuzz-base/base-runner:ubuntu-24-04", + "env": [ + "ARCHITECTURE=x86_64", + "FUZZING_ENGINE=libfuzzer", + "FUZZING_LANGUAGE=c++", + "HOME=/root", + "OUT=/workspace/out/libfuzzer-undefined-x86_64", + "SANITIZER=undefined" + ], + "args": [ + "bash", + "-c", + "targets_list > /workspace/targets.list.undefined" + ] + }, + { + "name": "gcr.io/oss-fuzz/test-project", + "args": [ + "bash", + "-c", + "cd /workspace/out/libfuzzer-undefined-x86_64 && zip -r test-project-undefined-202001010000.zip *" + ] + }, + { + "name": "gcr.io/oss-fuzz-base/uploader", + "args": [ + "/workspace/srcmap.json", + "test_url" + ] + }, + { + "name": "gcr.io/oss-fuzz-base/uploader", + "args": [ + "/workspace/out/libfuzzer-undefined-x86_64/test-project-undefined-202001010000.zip", + "test_url" + ] + }, + { + "name": "gcr.io/oss-fuzz-base/uploader", + "args": [ + "/workspace/targets.list.undefined", + "test_url" + ] + }, + { + "name": "gcr.io/cloud-builders/curl", + "args": [ + "-H", + "Content-Type: text/plain", + "-X", + "PUT", + "-d", + "test-project-undefined-202001010000.zip", + "test_url" + ] + }, + { + "name": "gcr.io/oss-fuzz/test-project", + "args": [ + "bash", + "-c", + "rm -r /workspace/out/libfuzzer-undefined-x86_64" + ] + } +] \ No newline at end of file From b2abf3412cb31b3448347e11645ebc2e99e6a5a0 Mon Sep 17 00:00:00 2001 From: Matheus Hunsche Date: Wed, 5 Nov 2025 12:32:43 +0000 Subject: [PATCH 5/8] test(build): Update unit tests for Ubuntu 24.04 with additional sanitizers and architectures --- infra/build/functions/build_project_test.py | 55 +++++++++++++++++---- 1 file changed, 45 insertions(+), 10 deletions(-) diff --git a/infra/build/functions/build_project_test.py b/infra/build/functions/build_project_test.py index 487a72a3c695..090cb36ee9ae 100644 --- a/infra/build/functions/build_project_test.py +++ b/infra/build/functions/build_project_test.py @@ -112,6 +112,41 @@ def test_get_centipede_build_steps(self, mock_url, mock_get_datetime_now, config) self.assertEqual(build_steps, expected_build_steps) + # @mock.patch('build_lib.get_signed_url', return_value='test_url') + # @mock.patch('build_project.get_datetime_now', + # return_value=test_utils.FAKE_DATETIME) + # @mock.patch('build_lib.get_unique_build_step_image_id', + # return_value='UNIQUE_ID') + # def test_get_build_steps_ubuntu_24_04(self, mock_url, mock_get_datetime_now, + # mock_get_id): + # """Test for get_build_steps with ubuntu-24-04.""" + # del mock_url, mock_get_datetime_now + # project_name = 'test-project-ubuntu' + # project_yaml_contents = ( + # 'language: c++\n' + # 'ubuntu_version: ubuntu-24-04\n' + # 'sanitizers:\n' + # ' - address\n' + # 'architectures:\n' + # ' - x86_64\n' + # 'main_repo: https://github.com/google/oss-fuzz.git\n') + # self.fs.create_dir(os.path.join(test_utils.PROJECTS_DIR, project_name)) + # test_utils.create_project_data(project_name, project_yaml_contents) + + # expected_build_steps_file_path = test_utils.get_test_data_file_path( + # 'expected_build_steps_ubuntu_24_04.json') + # self.fs.add_real_file(expected_build_steps_file_path) + # with open(expected_build_steps_file_path) as expected_build_steps_file: + # expected_build_steps = json.load(expected_build_steps_file) + + # config = build_project.Config(upload=True) + + # project_yaml, dockerfile = build_project.get_project_data(project_name) + # config.base_image_tag = project_yaml.get('ubuntu_version') + # build_steps, _ = build_project.get_build_steps(project_name, + # project_yaml, dockerfile, + # config) + # self.assertEqual(build_steps, expected_build_steps) @mock.patch('build_lib.get_signed_url', return_value='test_url') @mock.patch('build_project.get_datetime_now', @@ -122,17 +157,19 @@ def test_get_build_steps_ubuntu_24_04(self, mock_url, mock_get_datetime_now, mock_get_id): """Test for get_build_steps with ubuntu-24-04.""" del mock_url, mock_get_datetime_now - project_name = 'test-project-ubuntu' project_yaml_contents = ( 'language: c++\n' - 'ubuntu_version: ubuntu-24-04\n' 'sanitizers:\n' ' - address\n' + ' - memory\n' + ' - undefined\n' 'architectures:\n' ' - x86_64\n' + ' - i386\n' + ' - aarch64\n' 'main_repo: https://github.com/google/oss-fuzz.git\n') - self.fs.create_dir(os.path.join(test_utils.PROJECTS_DIR, project_name)) - test_utils.create_project_data(project_name, project_yaml_contents) + self.fs.create_dir(test_utils.PROJECT_DIR) + test_utils.create_project_data(test_utils.PROJECT, project_yaml_contents) expected_build_steps_file_path = test_utils.get_test_data_file_path( 'expected_build_steps_ubuntu_24_04.json') @@ -141,12 +178,10 @@ def test_get_build_steps_ubuntu_24_04(self, mock_url, mock_get_datetime_now, expected_build_steps = json.load(expected_build_steps_file) config = build_project.Config(upload=True) - - project_yaml, dockerfile = build_project.get_project_data(project_name) - config.base_image_tag = project_yaml.get('ubuntu_version') - build_steps, _ = build_project.get_build_steps(project_name, + project_yaml, dockerfile = build_project.get_project_data( + test_utils.PROJECT) + config.base_image_tag = "ubuntu-24-04" + build_steps, _ = build_project.get_build_steps(test_utils.PROJECT, project_yaml, dockerfile, config) self.assertEqual(build_steps, expected_build_steps) - - From 77f48b0b1cd83a9e8a6ebd3ccc15ca2a88b3ed3f Mon Sep 17 00:00:00 2001 From: Matheus Hunsche Date: Wed, 5 Nov 2025 12:51:19 +0000 Subject: [PATCH 6/8] refactor(build): Rename 'ubuntu_version' to 'base_os_version' for consistency --- infra/build/functions/build_lib.py | 2 +- infra/build/functions/build_project.py | 4 +-- infra/build/functions/build_project_test.py | 39 ++------------------- 3 files changed, 5 insertions(+), 40 deletions(-) diff --git a/infra/build/functions/build_lib.py b/infra/build/functions/build_lib.py index 87362d1a3544..bf75cad60353 100644 --- a/infra/build/functions/build_lib.py +++ b/infra/build/functions/build_lib.py @@ -707,7 +707,7 @@ def get_runner_image_name(test_image_suffix, base_image_tag=None): # Only add a tag if it's specified and not 'legacy', as 'legacy' implies # 'latest', which is the default behavior. if base_image_tag and base_image_tag != 'legacy': - image += ':' + base_image_tag + image += f":{base_image_tag}" return image diff --git a/infra/build/functions/build_project.py b/infra/build/functions/build_project.py index 2456bae2f843..130c9d6754c6 100755 --- a/infra/build/functions/build_project.py +++ b/infra/build/functions/build_project.py @@ -179,7 +179,7 @@ def __init__(self, name, project_yaml, dockerfile): self.labels = project_yaml['labels'] self.fuzzing_language = project_yaml['language'] self.run_tests = project_yaml['run_tests'] - self.ubuntu_version = project_yaml.get('ubuntu_version', 'legacy') + self.base_os_version = project_yaml.get('base_os_version', 'legacy') if 'main_repo' in project_yaml: self.main_repo = project_yaml['main_repo'] else: @@ -859,7 +859,7 @@ def build_script_main(script_description, error = True continue - base_image_tag = project_yaml.get('ubuntu_version') + base_image_tag = project_yaml.get('base_os_version', 'legacy') if base_image_tag == 'legacy': base_image_tag = None config = create_config(args, build_type, base_image_tag=base_image_tag) diff --git a/infra/build/functions/build_project_test.py b/infra/build/functions/build_project_test.py index 090cb36ee9ae..dc15696db5ee 100644 --- a/infra/build/functions/build_project_test.py +++ b/infra/build/functions/build_project_test.py @@ -112,42 +112,6 @@ def test_get_centipede_build_steps(self, mock_url, mock_get_datetime_now, config) self.assertEqual(build_steps, expected_build_steps) - # @mock.patch('build_lib.get_signed_url', return_value='test_url') - # @mock.patch('build_project.get_datetime_now', - # return_value=test_utils.FAKE_DATETIME) - # @mock.patch('build_lib.get_unique_build_step_image_id', - # return_value='UNIQUE_ID') - # def test_get_build_steps_ubuntu_24_04(self, mock_url, mock_get_datetime_now, - # mock_get_id): - # """Test for get_build_steps with ubuntu-24-04.""" - # del mock_url, mock_get_datetime_now - # project_name = 'test-project-ubuntu' - # project_yaml_contents = ( - # 'language: c++\n' - # 'ubuntu_version: ubuntu-24-04\n' - # 'sanitizers:\n' - # ' - address\n' - # 'architectures:\n' - # ' - x86_64\n' - # 'main_repo: https://github.com/google/oss-fuzz.git\n') - # self.fs.create_dir(os.path.join(test_utils.PROJECTS_DIR, project_name)) - # test_utils.create_project_data(project_name, project_yaml_contents) - - # expected_build_steps_file_path = test_utils.get_test_data_file_path( - # 'expected_build_steps_ubuntu_24_04.json') - # self.fs.add_real_file(expected_build_steps_file_path) - # with open(expected_build_steps_file_path) as expected_build_steps_file: - # expected_build_steps = json.load(expected_build_steps_file) - - # config = build_project.Config(upload=True) - - # project_yaml, dockerfile = build_project.get_project_data(project_name) - # config.base_image_tag = project_yaml.get('ubuntu_version') - # build_steps, _ = build_project.get_build_steps(project_name, - # project_yaml, dockerfile, - # config) - # self.assertEqual(build_steps, expected_build_steps) - @mock.patch('build_lib.get_signed_url', return_value='test_url') @mock.patch('build_project.get_datetime_now', return_value=test_utils.FAKE_DATETIME) @@ -159,6 +123,7 @@ def test_get_build_steps_ubuntu_24_04(self, mock_url, mock_get_datetime_now, del mock_url, mock_get_datetime_now project_yaml_contents = ( 'language: c++\n' + 'base_os_version: ubuntu-24-04\n' 'sanitizers:\n' ' - address\n' ' - memory\n' @@ -180,7 +145,7 @@ def test_get_build_steps_ubuntu_24_04(self, mock_url, mock_get_datetime_now, config = build_project.Config(upload=True) project_yaml, dockerfile = build_project.get_project_data( test_utils.PROJECT) - config.base_image_tag = "ubuntu-24-04" + config.base_image_tag = project_yaml.get('base_os_version') build_steps, _ = build_project.get_build_steps(test_utils.PROJECT, project_yaml, dockerfile, config) From f5149d203cc21db08339e6218ae309a38feae4ea Mon Sep 17 00:00:00 2001 From: Matheus Hunsche Date: Wed, 5 Nov 2025 13:02:31 +0000 Subject: [PATCH 7/8] refactor(build): Update get_build_steps function signature for clarity and consistency test(build): Add unittest.main() call to enable test execution from command line --- infra/build/functions/build_project.py | 19 +++++++++++++------ infra/build/functions/build_project_test.py | 3 +++ 2 files changed, 16 insertions(+), 6 deletions(-) diff --git a/infra/build/functions/build_project.py b/infra/build/functions/build_project.py index 130c9d6754c6..bf100196a65c 100755 --- a/infra/build/functions/build_project.py +++ b/infra/build/functions/build_project.py @@ -348,15 +348,22 @@ def get_id(step_type, build): f'-{build.architecture}') -def get_build_steps(project_name, project_yaml, dockerfile_contents, config): - """Returns the build steps for a project.""" +def get_build_steps( # pylint: disable=too-many-locals, too-many-statements, too-many-branches, too-many-arguments + project_name, + project_yaml, + dockerfile, + config, + additional_env=None, + use_caching=False, + timestamp=None): + """Returns build steps for project.""" - project = Project(project_name, project_yaml, dockerfile_contents) + project = Project(project_name, project_yaml, dockerfile) return get_build_steps_for_project(project, config, - additional_env=None, - use_caching=False, - timestamp=None), None + additional_env=additional_env, + use_caching=use_caching, + timestamp=timestamp), None def get_build_steps_for_project(project, diff --git a/infra/build/functions/build_project_test.py b/infra/build/functions/build_project_test.py index dc15696db5ee..522f7d27dba6 100644 --- a/infra/build/functions/build_project_test.py +++ b/infra/build/functions/build_project_test.py @@ -150,3 +150,6 @@ def test_get_build_steps_ubuntu_24_04(self, mock_url, mock_get_datetime_now, project_yaml, dockerfile, config) self.assertEqual(build_steps, expected_build_steps) + +if __name__ == '__main__': + unittest.main(exit=False) From 240be3f50d82f39abd526d54c026a4e7aa6315d0 Mon Sep 17 00:00:00 2001 From: Matheus Hunsche Date: Wed, 5 Nov 2025 13:04:24 +0000 Subject: [PATCH 8/8] test(build): Add blank line for improved readability in unit tests --- infra/build/functions/build_project_test.py | 1 + 1 file changed, 1 insertion(+) diff --git a/infra/build/functions/build_project_test.py b/infra/build/functions/build_project_test.py index 522f7d27dba6..985ce7301db6 100644 --- a/infra/build/functions/build_project_test.py +++ b/infra/build/functions/build_project_test.py @@ -151,5 +151,6 @@ def test_get_build_steps_ubuntu_24_04(self, mock_url, mock_get_datetime_now, config) self.assertEqual(build_steps, expected_build_steps) + if __name__ == '__main__': unittest.main(exit=False)