How to get the runner to push from a job

Hi

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

push_job:
  stage: test
  tags:
    - linux
  dependencies:
    - create_job
  before_script:
    - git config --global user.email ${GITLAB_USER_EMAIL}
    - git config --global user.name ${GITLAB_USER_ID}
  script:
    - 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