title: Gitlab Ci unable to push on a branch from runner
body: <p>I'm trying to settup a CI/CD pipelines with Gitlab
  Here is what I would like to do : </p>
  
  <p>NOTE: It's a typescript project</p>
  
  <ol>
  <li>unit tests &amp;&amp; integration tests </li>
  <li>promote branch dev to branch integration</li>
  <li>Build docker image from branch integration</li>
  <li>deploy to integration env</li>
  </ol>
  
  <p>Here is the <code>.gitlab-ci.yml</code> I am using (i: </p>
  
  <pre><code>stages:
    - test
    - promote
    - build
    - deploy
  cache:
    paths:
      - node_modules/
  test:
    image: node
    stage: test
    before_script:
      - yarn
    script:
      - yarn test
  promote:
    image: node
    stage: promote
    only:
      - dev
    script:
      - git push origin HEAD:integration
  build
    image: node
    stage: build
    only: 
      - integration
    script: 
      - echo "build docker image from integration"
  deploy:
    image: node
    stage: deploy
    only:
      - integration
    script:
      - echo "deploy integration"
  </code></pre>
  
  <p>My problem is that this line <code>git push origin HEAD:integration</code> can not be done from the gitlab runner, here is the output console : </p>
  
  <pre><code>Running with gitlab-runner 10.1.0 (c1ecf97f)
    on RUNNER (ce8757c9)
  Using Docker executor with image node ...
  Using docker image sha256:fb8322a7cefdf2b3ba1c15218187bb65f9d4d4ab4e27dc3a91bb4eba38964429 for predefined container...
  Pulling docker image node ...
  Using docker image node ID=sha256:c1d02ac1d9b4de08d3a39fdacde10427d1c4d8505172d31dd2b4ef78048559f8 for build container...
  Running on runner-ce8757c9-project-907-concurrent-0 via VERD842...
  Fetching changes...
  Removing node_modules/
  HEAD is now at 63cccc5 update ci - dev
  From https://gitlab.mycompany.com/project1/ci-demo
     63cccc5..98d347e  dev        -&gt; origin/dev
  Checking out 98d347e5 as dev...
  Skipping Git submodules setup
  Checking cache for default...
  Successfully extracted cache
  $ git push origin HEAD:integration
  remote: You are not allowed to upload code for this project.
  fatal: unable to access 'https://gitlab-ci-token:xxxxxxxxxxxxxxxxxxxx@gitlab.mycompany.com/project1/ci-democi-demo.git/': The requested URL returned error: 403
  ERROR: Job failed: exit code 1
  </code></pre>
  
  <p>I have read the docs, and some example, but I cant figure out on how to make this work ? 
  Should I create a user  <code>gitlab-ci-token</code> ? 
  Should I do branch promotion in a <code>bash</code> script ? </p>
  
  <p>Feel free to give me any feedback on the pipeline I try to do...</p>
  
  <p>Regards</p>