How to enable or disable GitLab CI/CD

To effectively use GitLab CI/CD, you need:

  • A valid .gitlab-ci.yml file present at the root directory of your project.
  • A runner properly set up.

You can read our quick start guide to get you started.

If you are using an external CI/CD server like Jenkins or Drone CI, it is advised to disable GitLab CI/CD in order to not have any conflicts with the commits status API.

GitLab CI/CD is exposed by using the /pipelines and /jobs pages of a project. Disabling GitLab CI/CD in a project does not delete any previous jobs. In fact, the /pipelines and /jobs pages can still be accessed, although it’s hidden from the left sidebar menu.

GitLab CI/CD is enabled by default on new installations and can be disabled either:

  • Individually under each project’s settings.
  • Site-wide by modifying the settings in gitlab.yml and gitlab.rb for source and Omnibus installations respectively.

This only applies to pipelines run as part of GitLab CI/CD. This doesn’t enable or disable pipelines that are run from an external integration.

Per-project user setting

To enable or disable GitLab CI/CD pipelines in your project:

  1. On the top bar, select Menu > Projects and find your project.
  2. On the left sidebar, select Settings > General.
  3. Expand Visibility, project features, permissions.
  4. In the Repository section, turn on or off CI/CD as required.

Project visibility also affects pipeline visibility. If set to:

  • Private: Only project members can access pipelines.
  • Internal or Public: Pipelines can be set to either Only Project Members or Everyone With Access by using the dropdown box.

Press Save changes for the settings to take effect.

Make GitLab CI/CD disabled by default in new projects

You can set GitLab CI/CD to be disabled by default in all new projects by modifying the settings in:

  • gitlab.yml for source installations.
  • gitlab.rb for Omnibus GitLab installations.

Existing projects that already had CI/CD enabled are unchanged. Also, this setting only changes the project default, so project owners can still enable CI/CD in the project settings.

For installations from source:

  1. Open gitlab.yml with your editor and set builds to false:

    ## Default project features settings
    default_projects_features:
      issues: true
      merge_requests: true
      wiki: true
      snippets: false
      builds: false
    
  2. Save the gitlab.yml file.

  3. Restart GitLab:

    sudo service gitlab restart
    

For Omnibus GitLab installations:

  1. Edit /etc/gitlab/gitlab.rb and add this line:

    gitlab_rails['gitlab_default_projects_features_builds'] = false
    
  2. Save the /etc/gitlab/gitlab.rb file.

  3. Reconfigure GitLab:

    sudo gitlab-ctl reconfigure