Skip to content

WIP : Allow CI/CD jobs to be locked

Thong Kuah requested to merge kuahyeow/gitlab-ce:lock_ci_build into master

What does this MR do?

Enable CI/CD to lock jobs -so that jobs with the same lock string may not be run concurrently

Are there points in the code the reviewer needs to double check?

Why was this MR needed?

There are some situations where we want to define a CI/CD pipeline so that e.g. deployments to production don't happen concurrently and can only deploy to production one at a time.

Screenshots (if relevant)

Does this MR meet the acceptance criteria?

What are the relevant issue numbers?

https://gitlab.com/gitlab-org/gitlab-ce/issues/20481

Tasks

  • Extend CI.yml
  • Check PopulatePipelineService creates jobs with the new lock attribute
  • Add new database column to Ci::Build
  • Prevent jobs from being picked up if there is another running job for the same project of the same stage
  • Show that a job is locked due to another running job, (see app/views/projects/jobs/show.html.haml)
  • Update doc/ci/yaml/README.md
  • Invalid values for lock string ?
  • Consider refactoring can_pick?
Edited by Thong Kuah

Merge request reports