Actuellement, lorsque je lance une construction dans GitlabCI, celle-ci est exécutée sous l'utilisateur gitlab-runner. Je veux changer l'utilisateur interne de l'entreprise. Je n'ai trouvé aucun paramètre dans le fichier /etc/gitlab-runner/config.toml qui résout ce problème.
Ma configuration actuelle:
concurrent = 1
[[runners]]
name = "deploy"
url = ""
token = ""
executor = "Shell"
En cours d'exécution ps aux
, vous pouvez voir:
/usr/bin/gitlab-ci-multi-runner run --working-directory /home/gitlab-runner --config /etc/gitlab-runner/config.toml --service gitlab-runner --syslog --user gitlab-runner
Le service fonctionne avec l'option --user
.
Alors changeons ceci, cela dépend de quelle distribution. vous l'exécutez. Si systemd, il y a un fichier:
/etc/systemd/system/gitlab-runner.service:
[Service]
StartLimitInterval=5
StartLimitBurst=10
ExecStart=/usr/bin/gitlab-ci-multi-runner "run" "--working-directory" "/home/gitlab-runner" "--config" "/etc/gitlab-runner/config.toml" "--se
Bingo, changeons ce fichier maintenant:
gitlab-runner uninstall
gitlab-runner install --working-directory /home/ubuntu --user ubuntu
redémarrez la machine ou rechargez le service (c.-à-d. systemctl daemon-reload
), et voilà!
Notez que lors de l'installation avec un utilisateur spécifique (--user), chaque fois que vous mettez à jour, il retourne au script systemd d'origine et revient donc à utiliser gitlab-runner user.
afin de conserver les modifications des utilisateurs entre les mises à jour, à l'aide des remplacements systemd (centos7), vous pouvez utiliser les étapes suivantes (en supposant que le service est à /etc/systemd/system/gitlab-runner.service
):
/etc/systemd/system/gitlab-runner.service.d
.Créez un fichier /etc/systemd/system/gitlab-runner.service.d/exec_start.conf
, avec le contenu:
[Service]
ExecStart=
ExecStart=/usr/lib/gitlab-runner/gitlab-runner "run" "--working-directory" "/home/ubuntu" "--config" "/etc/gitlab-runner/config.toml" "--service" "gitlab-runner" "--syslog" "--user" "ubuntu"
Exécuter systemctl daemon-reload
Maintenant, pour vérifier si cela fonctionne, vous pouvez le faire:
Réinstallez le paquet GitLab Runner gitlab-runner uninstall
puis gitlab-runner install
Vérifier ps aux | grep gitlab
et confirmer que le bon utilisateur est utilisé
source: https://gitlab.com/gitlab-org/gitlab-runner/issues/3675
J'ai trouvé une solution, qui n'est pas le meilleur pactrice mais l'a résolu. J'ai besoin d'utiliser l'exécuteur SSH et SSH à localhost. Il est nécessaire d’ajouter gitlab-runner id_rsa.pub à ce que vous voulez utiliser. Il y a mon code étendu:
concurrent = 1
[[runners]]
name = "deploy"
url = ""
token = ""
executor = "ssh"
[runners.ssh]
user = "user"
Host = "localhost"
port = "22"
identity_file = "/home/gitlab-runner/.ssh/id_rsa"
Juste pour référence future, je faisais un test avec une version clonée de ma configuration. Si le nom de domaine ne pointe pas vers le serveur sur lequel vous travaillez, gitlab pourrait considérer vos coureurs hors ligne. Si vous avez une autre instance (copiée) en cours d'exécution sur l'adresse IP pointée sur le domaine et qu'il n'y a pas de pare-feu bloquant, la commande gitlab-runner verify dira que vos coureurs sont en vie.
une solution pourrait être d'ajouter votre domaine pointant vers 127.0.0.1 à votre fichier hosts. vous devrez redémarrer votre instance et vos coureurs gitlab.