Skip to content
Snippets Groups Projects

Update branching process

Merged Dylan Aïssi requested to merge wip/daissi/branching-update into master
1 file
+ 8
8
Compare changes
  • Side-by-side
  • Inline
@@ -319,27 +319,27 @@ in `~/.ssh/config`
The previous sections showed the steps to launch the branching through Gitlab CI. This section provides additional
information to developers on the use of this particular CI.
![Stages Overview](/images/Stages.png)
![Release branching jobs queued in the pipeline](/images/Stages.png)
This is an overview of all the release branching jobs queued in the pipeline
![Stages Dependency Overview](/images/Job_Dependencies.png)
![Release branching jobs in the pipeline with dependencies](/images/Job_Dependencies.png)
This is an example of the same jobs, with their dependencies chalked out. There are multiple jobs that depend on one another. This is to ensure that jobs, that depend on certain outputs or tasks to be completed, are run only after.
![Dependent Run Overview](/images/Dependent_Run.png)
![Release branching jobs in the pipeline with dependencies, one job is still waiting on its dependency](/images/Dependent_Run.png)
This example highlights the dependency in action. A job is only run *after* its parent dependency job is run successfully. Jobs that do not have a connecting line are independent jobs that are run in parallel. In this exmaple, most jobs in the `branch` stage are *independent* and run in *parallel*
![Manual Job Overview](/images/Manual_Job_Summary.png)
![Pipeline job blocked on manual dependency](/images/Manual_Job_Summary.png)
This example highlights *Manual Jobs* and their dependencies. *Manual Jobs* are differentiated with the *Play* Button. A *Manual Job* is to be run manually by a user. In the context of this document, a manual job constitutes of certain commands that the user is expected to run by hand on respective servers. Most manual jobs, in this case, are to be run on the **OBS Backend** server. For each manual job, the exact commands will be displayed in the job's console view.
![Manual Job Run Detail](/images/Manual_Job_Run_Detail.png)
![Log of manual job showing commands user has to run](/images/Manual_Job_Run_Detail.png)
This example highlights the exact set of commands that should be manually run. Most commands to be manually run, are to be run on specific servers, which will be mentioned in the console output for the particular job.
![Manual Job Run Dependency Chain](/images/Manual_Job_Run_Dependency_Chain.png)
![Dependency chain with manual job](/images/Manual_Job_Run_Dependency_Chain.png)
Most manual jobs are made dependent on other job. This is to ensure that steps are performed in a particular order. In the above example, the dependency is defined as: `obs_prjconf => obs_reprepro => obs_clone_binary`, where `obs_prjconf` runs a certain set of tasks, which are needed by `obs_reprepro`. Similarly `obs_reprepro` performs a certain set of tasks which are a pre-requisite for `obs_clone_binary`. The job chain is strictly defined and users should ensure to successfully run the manual jobs on respective servers, before progressing to the next job.
@@ -347,11 +347,11 @@ Most manual jobs are made dependent on other job. This is to ensure that steps a
There can be scenarios during the *Release Branching* wherein the user would be required to re-run the entire pipeline. Under such situation, it can be desired to have certain specific jobs to be skipped from the consecutive pipeline run. For example, in first run, `branch-create-mass-branches` was run and it created all the branches in respect to the `NEXT_RELEASE`. For such cases, on consecutive run, it is desired to skip the `branch-create-mass-branches` job. Below is an example on how to invoke the pipeline while defining a set of jobs to be skipped.
![FORCE_SKIP_JOB_INVOKE](/images/FORCE_SKIP_JOB_INVOKE.png)
![Run pipeline page with FORCE_SKIP_JOB variable set](/images/FORCE_SKIP_JOB_INVOKE.png)
In the above example screenshot, we specify that the `branch-create-mass-branches` and `branch-update-tests-projects` jobs be skipped. The important bit is to pass the `FORCE_JOB_SKIP` variable with the required values.
![FORCE_SKIP_JOB](/images/FORCE_SKIP_JOB.png)
![Pipeline with jobs skipped](/images/FORCE_SKIP_JOB.png)
As was specified in the previous job invocaton, this example pipeline job run has the `branch-create-mass-branches` and `branch-update-tests-projects` skipped.
Loading