oss-fuzz/infra
jonathanmetzman 370fb73473
[build][infra] Improve build functions. (#6296)
Important functional changes involve mostly improvements to
the command line scripts (this doesn't affect the build infra, only
local use):

1. Make sure scripts use the same builder as builds requested by infra, otherwise builds
will be very slow and will fail for larger projects.
2. Allow users to specify --test-images to use base images with suffix "-testing"
3. Allow script users to specify --parallel for parallel builds.
4. Allow script users to specify --testing so that builds are uploaded to testing buckets.
5. Allow script users to specify --branch so that builds use specified branch instead of master.
6. Clone oss-fuzz with depth 1 for improved speed and space usage.
7. Use logging instead of writing to stderr or print.
8. Allow scripts to accept multiple projects.
9. Allow script to keep executing after failure to get build steps.
10. Change scripts to use python3.
11. Tag more so builds are easier to query.
12. Log the gcb page for each build.

Other changes include major refactoring:

1. Don't construct image names from scratch using format strings each time they are used.
Provide a helper function for this.
2. Provide a helper function,  get_env instead of constructing the env from scratch each time.
3. Move compile step into its own function: get_compile_step.
4. Move upload steps into their own helper function get_upload_steps.
5. Don't misuse the name image_project when we really mean cloud project.
6. Move cleanup step into its own helper function: get_cleanup_step.
7. Exit with returncode of main function from build_project.
8. Add unittests for build_project.
9. Make request_build share run_build code with build_project.
10. Use proper spacing in comments.
11. Test builds other than libfuzzer-ASAN-x86_64. Test other sanitizers, fuzzers and architectures
12. Make build_and_run_coverage share more code with build_project.
13. Move tests for build_and_run_coverage_test.py out of requst_coverage_test.py into their own file.
14. Use single quotes for strings.
15. Store state for a build in Build object instead of passing it everywhere.
16. Don't abuse project_yaml dict for storing project state. Use a Project object instead.
17. Better variable naming.
18. Use more classes instead of passing around arguments.
19. Use more f-strings.
20. Make scripts share main function.
21. Begin comments with uppercase and end with period.
22. Don't import functions or classes as dictated by style guide.
23. Share more test code in test_utils

Related: #6180.
2021-08-25 11:44:52 -07:00
..
base-images [Ubuntu upgrade] Remove support for prebuilt MSAN libraries. (#6280) 2021-08-25 15:36:05 +00:00
build [build][infra] Improve build functions. (#6296) 2021-08-25 11:44:52 -07:00
ci add swift (#6270) 2021-08-23 16:47:54 +00:00
cifuzz Don't upload builds in run_fuzzers. (#6151) 2021-08-17 06:36:06 +00:00
triage-party Store triage party image in oss-fuzz-base repo (#5584) 2021-04-07 11:11:52 +10:00
uploader Increase retry value to avoid build failures (#1468) 2018-06-02 09:12:31 -07:00
.dockerignore [NFC][CIFuzz] Rename test_files to test_data and delete unneeded testcases directory (#5448) 2021-03-19 11:49:38 -07:00
README.md Switch docs to new structure (#2663) 2019-08-07 07:37:16 -07:00
bisector.py [CIFuzz] Add support for external projects to helper.py (#6141) 2021-08-04 06:42:17 -07:00
bisector_test.py [infra][NFC] Use "testcase" instead of test_case for consistency. (#6159) 2021-08-03 18:05:00 -07:00
build_and_push_test_images.py Fix coverage command and misc fixes (#6262) 2021-08-23 10:18:11 +10:00
build_fuzzers.Dockerfile [cifuzz] Fuzz in cifuzz-base (#6142) 2021-08-05 13:27:24 -07:00
build_specified_commit.py [helper] Change logging from error to info (#6200) 2021-08-11 11:09:24 -07:00
build_specified_commit_test.py [helper] Change logging from error to info (#6200) 2021-08-11 11:09:24 -07:00
constants.py infra: add coverage sanitizer option (#6171) 2021-08-05 18:53:20 +00:00
helper.py [Ubuntu upgrade] Remove support for prebuilt MSAN libraries. (#6280) 2021-08-25 15:36:05 +00:00
helper_test.py New base builder without lang specific installation + swift base (#5986) 2021-08-20 09:52:44 +10:00
presubmit.py [infra][build] Switch to f-strings. (#6182) 2021-08-10 10:48:16 -07:00
pytest.ini [CIFuzz] Refactor in preparation for filestore (#5841) 2021-05-26 09:45:22 -07:00
repo_manager.py Don't upload builds in run_fuzzers. (#6151) 2021-08-17 06:36:06 +00:00
repo_manager_test.py [infra] Mark more tests as integration (#4869) 2020-12-18 10:44:12 -08:00
retry.py [CIFuzz] Refactor in preparation for filestore (#5841) 2021-05-26 09:45:22 -07:00
run_fuzzers.Dockerfile [cifuzz] Fuzz in cifuzz-base (#6142) 2021-08-05 13:27:24 -07:00
templates.py New base builder without lang specific installation + swift base (#5986) 2021-08-20 09:52:44 +10:00
test_repos.py [infra][NFC] Use "testcase" instead of test_case for consistency. (#6159) 2021-08-03 18:05:00 -07:00
utils.py [cifuzz] Fuzz in cifuzz-base (#6142) 2021-08-05 13:27:24 -07:00
utils_test.py [infra][tests][NFC] Change mocked function prefix from "mocked_" to "mock_" (#6198) 2021-08-12 11:25:57 -07:00

README.md

infra

OSS-Fuzz project infrastructure

Core infrastructure:

  • base-images - docker images for building fuzz targets & corresponding jenkins pipeline.

Continuous Integration infrastructure:

helper.py

script to automate common docker operations

Command Description
generate Generates skeleton files for a new project
build_image Builds a docker image for a given project
build_fuzzers Builds fuzz targets for a given project
run_fuzzer Runs a fuzz target in a docker container
coverage Runs fuzz target(s) in a docker container and generates a code coverage report. See Code Coverage doc
reproduce Runs a testcase to reproduce a crash
shell Starts a shell inside the docker image for a project