[go: up one dir, main page]

CIAO: before_merging/scheduled, pt 1: scaffolding

Stack

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.rst for the protocol and the environment, CHANGES.rst at the root of the repository for everything else).
  • Select suitable reviewers using the Reviewers field below.
  • Select as Assignee the next person who should take action on that MR
Edited by Arvid Jakobsson

Merge request reports

Loading