title: Manual jobs available in some branches, but blocked in other ones
body: <p>There are three main stages defined in <code>.gitlab-ci.yml</code> file: <code>test</code>, <code>deploy_test</code> and <code>deploy_integration</code>. The first stage gets executed every time, meanwhile the other ones are split into main (<code>actual</code>) and alternative deployments.</p>
  <p>The idea was to be able to deploy application to alternative test server and alternative integration server when changes get commited to any branch. And it works for any branch but the <code>dev</code> branch:</p>
  <p><a href="https://i.stack.imgur.com/zFz0D.png" rel="nofollow noreferrer"><img src="https://i.stack.imgur.com/zFz0D.png" alt="Pipeline stages" /></a></p>
  <p>The configuration file (cut-offs were made for better clarity) looks this way:</p>
  <pre class="lang-yaml prettyprint-override"><code>image: ubuntu:18.04
  
  stages:
    - test
    - deploy_test
    - deploy_integration
  
  test:
    stage: test
    when: always
    script:
      - echo &quot;Hi test!&quot;
  
  deploy_test_actual:
    stage: deploy_test
    rules:
      - if: '$CI_MERGE_REQUEST_TARGET_BRANCH_NAME == &quot;dev&quot;'
        when: manual
      - if: '$CI_COMMIT_BRANCH == &quot;dev&quot;'
        when: manual
    script:
      - echo &quot;Hi!&quot;
  
  deploy_test_alternative:
    stage: deploy_test
    when: manual
    allow_failure: true
    script:
      - echo &quot;Hi!&quot;
  
  deploy_int_actual:
    stage: deploy_integration
    rules:
      - if: '$CI_MERGE_REQUEST_TARGET_BRANCH_NAME == &quot;dev&quot;'
        when: manual
      - if: '$CI_COMMIT_BRANCH == &quot;dev&quot;'
        when: manual
    script:
      - echo &quot;Hi!&quot;
  
  deploy_int_alternative:
    stage: deploy_integration
    when: manual
    script:
      - echo &quot;Hi!&quot;
  
  </code></pre>
  <p>The question: how to unlock <code>deploy_int_*</code> jobs for <code>dev</code> branch?</p>