Note
Nowadays you can use a group access token or project access token and no longer need to use an SSH key. Hence we archived this project.
Docker image which helps to carry out git specific tasks (available from Docker Hub under tegonal/gitlab-git). It is tailored for GitLab but can be used in other contexts as well.
It expects two ENV variables to be set:
- GITBOT_SSH_PRIVATE_KEY : the private ssh key which allows to push back to the repository
- CI_REPOSITORY_URL : (provided by GitLab) the URL of the repository including a username e.g.
https://git:[MASKED]@scm.example.com/group/repo
You can optionally overwrite:
- GITBOT_USERNAME : used for
git --config user.name - GITBOT_EMAIL : used for
git --config user.email
The GITBOT_SSH_PRIVATE_KEY needs to be available to job via Variable (Settings -> CI / CD -> Variables).
The public key belonging to GITBOT_SSH_PRIVATE_KEY needs be configured as Deploy Key in your repository (Settings -> Repository -> Deploy Keys)
Following a small sample how you use it in your .gitlab-ci.yml
rebase:
image: tegonal/gitlab-git
script:
- git ...In case you use already another image, then you can resort to download the shell scripts instead (note the source before ./... which is necessary so that the script runs in the same bash).
rebase:
image: your/image
variables:
- PREFIX: "https://raw.githubusercontent.com/tegonal/gitlab-git/master/scripts"
script:
- curl \
-O "$PREFIX/setup-ssh.sh" \
-O "$PREFIX/setup-ssh.sh.sha256" \
-O "$PREFIX/clone-current.sh" \
-O "$PREFIX/clone-current.sh.sha256"
- sha256sum -c ./*.sha256
- chmod +x setup-ssh.sh clone-current.sh
- source ./setup-ssh.sh
- source ./clone-current.sh
- git ...Clones the current branch with --depth 1 and cds into the project folder, ready to do additional stuff.
Call it as follows (note the . before /scripts/... which is necessary so that the script runs in the same bash and thus has access to the ssh-key which was setup).
rebase:
image: tegonal/gitlab-git
script:
- . /scripts/clone-current.sh
- git ...
gitlab-git is licensed under Apache 2.0.