CIAO: before_merging/scheduled, pt 1: scaffolding
Stack
- !12377 (merged): Generation check
- !12378 (merged): before_merging/scheduled -- scaffolding <- You are here
- !12382 (merged): before_merging/scheduled -- sanity, packaging
- !12397 (merged): before_merging/scheduled -- build
- !12490 (merged): before_merging/scheduled -- test (1)
What
Sets the ground work for the translation of before_merging and schedule_extended_test
by defining a code_verification pipeline.
Why
The scheduled pipeline is a subset of the before_merging pipeline where jobs run wit the rule Always. To make this more obvious and to avoid double work, we translate both pipelines in parallel.
As we go along, we can just stuff more jobs in the the code_verification pipeline
that generates both pipelines, and once all jobs are translated, we can remove all
calls to job_external that writes jobs to external files.
How
This MR takes all jobs that have already been defined in CIAO at the top-level, and moves their definition to the appropriate pipelines. This results in stub pipelines for before_merging and scheduled pipelines. These stubs only serve to group jobs of the same pipeline and to make sure that dependencies are to jobs defined for the given pipeline.
To do so, I had to split some jobs that were used multiple pipelines. While doing so, I also refined their rules such that the rules for the job is appropriate to the given pipelines. For example,
- a job that is included in the scheduled pipeline should not be conditional;
- job included in the before_merging pipeline should not have rules governing how it works on the scheduled pipeline;
- etc
Similarly, I removed optional dependencies on the trigger job for jobs that are not in the before_merging pipeline.
The trigger job only lives in the before_merging pipelines so we can remove those dependencies.
Manually testing the MR
This MR is best reviewed commit-per-commit for the OCaml part. Commits should have a message explaining any non-obvious changes.
For the generated YML, do review the result of this command (see previous MRs like !11501 (merged) for setup instructions for gci-tezos):
$ gci-tezos diff-full-config master . schedule_extended_tests
$ gci-tezos diff-full-config master . before_merging
$ gci-tezos diff-full-config master . test_release_tag,release_tag,non_release_tag,non_release_tag_test,beta_release_tag
The first command will show that this MR only strips irrelevant rules from the scheduled pipeline.
The second command shows that for the oc.build_arm64-* jobs on before_merging, I've removed an irrelevant rule on scheduled pipelines
and I've made the jobs unconditionally manual (I don't see the point of making the job manual based on a set of changes and this simplifies the config).
The third command shows that we only remove irrelevant trigger-dependencies for release_tag jobs.
Checklist
-
Document the interface of any function added or modified (see the coding guidelines) -
Document any change to the user interface, including configuration parameters (see node configuration) -
Provide automatic testing (see the testing guide). -
For new features and bug fixes, add an item in the appropriate changelog ( docs/protocols/alpha.rstfor the protocol and the environment,CHANGES.rstat the root of the repository for everything else). -
Select suitable reviewers using the Reviewersfield below. -
Select as Assigneethe next person who should take action on that MR