Skip to content

Manual job ignore dependencies

When using a manual job, any job having a dependency on the manual job will start, even if the manual job wasn't executed. In another hand, a manual job can be executed even when his dependencies weren't built.

I use gitlab Ci in order to build, test, and deploy a project. We build for Linux (using Docker) and OSX. The runner for OSX is one of our team Macbook, and isn't always available. Thus, we made OSX build manually triggered, in order to build it only when our co-worker computer is available.

here is a CI script example:

## BUILDS

Linux client build:
  stage: build
  only:
    - develop
  tags:
    - Docker
  image: ubuntu:14.04
  script:
      # The compilation script, omitted for clarity
  artifacts:
    paths:
      - Linux

OSX client build:
  stage: build
  only:
    - develop
  tags:
    - OSX
  script:
      # The compilation script, omitted for clarity
  artifacts:
    paths:
      - OSX
  when: manual
  
## TEST

Linux client test:
  stage: test
  only:
    - develop
  tags:
    - Docker
  image: ubuntu:14.04
  script:
      # The test script, omitted for clarity
  dependencies:
    - Linux client build
    
OSX client test:
  stage: test
  only:
    - develop
  tags:
    - OSX
  script:
      # The test script, omitted for clarity
  dependencies:
    - OSX client build

Expected result :

  • Linux build start automatically
  • Linux test start automatically after Linux build end
  • OSX build is manually triggered
  • OSX test start automatically after OSX build end

Actual result:

  • Linux build start automatically
  • Linux and OSX test start automatically after Linux build end, without OSX build being triggered.