How to get the runner to push from a job


We have artifacts from a build job that need to be pushed back to the repo. We have created an account for the gitlab-runner, added it to the project, and I can manually clone/commit/push with the user, but when I try the same commands from a job I get:

$ git push -o ci.skip
remote: You are not allowed to upload code.
fatal: unable to access '<the repo>': The requested URL returned error: 403

What is the best way to create a job that can push artifacts into the repo?

EDIT: here is the job in question

  stage: test
    - linux
    - create_job
    - git config --global ${GITLAB_USER_EMAIL}
    - git config --global ${GITLAB_USER_ID}
    - git checkout $CI_COMMIT_REF_NAME
    - cp newfile.txt replaced.txt
    - cat existing.txt
    - cat replaced.txt
    - git commit -a -m"[ci skip] pushing files $CI_JOB_ID"
    - git push -o ci.skip