solidity/scripts/docker/buildpack-deps
2023-01-12 11:47:14 +01:00
..
Dockerfile.emscripten update docker images with z3 4.11.2 2022-11-24 14:46:49 +01:00
Dockerfile.ubuntu1604.clang.ossfuzz Bumping ubuntu images to use boost 1_74_0 2023-01-12 11:47:14 +01:00
Dockerfile.ubuntu2204 Reset label version for new image 2023-01-12 11:47:14 +01:00
Dockerfile.ubuntu2204.clang Reset label version for new image 2023-01-12 11:47:14 +01:00
emscripten.jam Update emscripten docker image to be based on emscripten 2.0.12 and boost 1.75.0. 2021-01-13 00:33:03 +01:00
README.md Update docker images for emscripten. 2022-08-25 17:09:46 +02:00

buildpack-deps docker images

The buildpack-deps docker images are used to compile and test solidity within our CI.

GitHub Workflow

The creation of the images are triggered by a single workflow, defined in .github/workflows/buildpack-deps.yml. For each resulting buildpack-deps docker image a strategy is defined in the workflow file - the image variant. The workflow gets triggered, if any Dockerfile defined in scripts/docker/buildpack-deps/Dockerfile.* were changed within the PR.

Versioning

The version of the docker images can be defined within the Dockerfile with LABEL version. A new docker image will only be created and pushed, if the new version is incremented by 1 compared with the version of the Dockerfile located in develop.

Build, Test & Push

Note that the whole workflow - including all defined strategies (image variants) - will be triggered, even if only a single Dockerfile was changed. The full workflow will only get executed, if the corresponding Dockerfile was changed. The execution of workflows of unchanged Dockerfiles will not continue and just return success. See scripts/ci/docker_upgrade.sh.

If the version check was successful, the docker image will be built using the Dockerfile located in scripts/docker/buildpack-deps/Dockerfile.*.

The resulting docker image will be tested by executing the corresponding scripts/ci/buildpack-deps_test_* scripts. Some of these scripts are symlinked to scripts/ci/build.sh, except the following two:

  • buildpack-deps-ubuntu1604.clang.ossfuzz => scripts/ci/build_ossfuzz.sh
  • buildpack-deps_test_emscripten.sh => scripts/ci/build_emscripten.sh

These scripts scripts/ci/build.sh and scripts/ci/build_ossfuzz.sh are also used by CircleCI, see .circleci/config.yml.

If the tests passed successfully, the docker image will get tagged by the version defined within the corresponding Dockerfile. Finally, a comment will be added to the PR that contains the full repository, version and repository digest of the freshly created docker image.

The files .circleci/config.yml and scripts/build_emscripten.sh need to be updated with the new hash posted in the comment.