CI jobs are dispatched by a script which responds to both the ci-build-me
label and comments by MinaProtocol organization members containing exactly
!ci-build-me
. If your CI job has not started after adding the ci-build-me
label, please comment on the pull request with !ci-build-me
to attempt to
re-trigger the script.
If no CI jobs started, check that your membership to O(1) Labs/mina organisation
is public. If your membership is private, the jobs will not started and
!ci-build-me
won't have an impact.
If CI jobs are not running after applying both the ci-build-me
label and
comment, you may be able to find and fix the error in the script. The script
lives in frontend/ci-build-me/src/index.js
, and instructions for deploying
the new version are in the readme at frontend/ci-build-me/README.md
. You
should still follow normal procedure: submit a pull request and await approval
for the changes before attempting to deploy the fixed script.
If your CI error is related to a timeout logged by one of the integration test runners, this is a known issue and re-running the test in the Buildkite interface will usually succeed.
If an issue arises, please post an update in both development
on the Mina
Protocol discord and engineering-internal
on the O(1) Labs discord with the
details and links to the failures.
The CI runs its jobs in multiple Docker images. The images that it is using are
specified in buildkite/src/Constants/ContainerImages.dhall
: the CI uses all
Debian images prefixed by minaToolchainBullseye
.
These images are generated by the CI itself, in particular based on the content of the
dockerfiles
directory and the opam.export
file (which describes versions of
OCaml packages). If you PR modifies how the images are generated (for example by
changing a package version in opam.export
), then the CI will not automatically
use these new images and will potentially fail.
In this case, you should:
- Let the CI run once with the old images. Jobs may fail, but ensure that jobs
of the form
Docker: toolchain-*
succeed. This is the step that creates new Docker images from your PR. - Look for the newly generated images on
Google Cloud
where they have been automatically uploaded. Look for your branch name and
commit hash in the second column. You should find several images suffixed
with
-bullseye
and-focal
(Debian versions). - For each such image, retrieve its full name and hash by hovering its link and
clicking the
Copy full image name
tooltip that appears (or retrieve it on the image's page). - Edit
buildkite/src/Constants/ContainerImages.dhall
and replace the name of eachminaToolchain-*
image by the ones you retrieved. - Commit the change, the CI should now be using the new images.
If you have a bugfix for failing CI, or are seeing a CI failure across multiple PRs, the best people to contact are:
- @bkase (bkase#2492 on discord) (Europe - misc.)
- @lk86 (linuskrom#2287 on discord) (US West Coast)
- @OxO1 (awilson#6424 on discord) (US West Coast)
- @mrmr1993 (matthew#4797 on discord) (UK)