Zmień użytkownika Gitlab Ci Runner

Obecnie kiedy uruchamiam build w GitlabCI to działa pod gitlab-runner user. Chcę zmienić użytkownika wewnętrznego firmy. Nie znalazłem żadnego parametru do /etc/gitlab-runner / config.toml czyli Rozwiąż to.

Moja obecna konfiguracja:

concurrent = 1
[[runners]]
  name = "deploy"
  url = ""
  token = ""
  executor = "shell"
Author: PumpkinSeed, 2016-05-12

7 answers

Running ps aux you can see:

/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

Usługa działa z opcją --user.

Więc zmieńmy to, to zależy od tego, co distro. ty nim zarządzasz. Jeśli systemd, istnieje plik:

/ etc / systemd / system / gitlab-runner.serwis:

[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, zmieńmy teraz ten plik:

gitlab-runner uninstall

gitlab-runner install --working-directory /home/ubuntu --user ubuntu

Zrestartuj maszynę lub przeładuj usługę (tj. systemctl daemon-reload), i voilà!

 68
Author: Thomas Decaux,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-09-27 20:39:20

Zauważ, że podczas instalacji z konkretnym użytkownikiem (--user), po każdej aktualizacji, powróci on z powrotem do oryginalnego skryptu systemd, a więc z powrotem do używania gitlab-runner user.

W celu utrzymania zmiany użytkownika w różnych aktualizacjach, za pomocą przesłonięcia systemd (centos7) można użyć tych kroków (zakładając, że usługa jest na /etc/systemd/system/gitlab-runner.service):

  1. Utwórz katalog /etc/systemd/system/gitlab-runner.service.d.
  2. Utwórz plik /etc/systemd/system/gitlab-runner.service.d/exec_start.conf o treści:

    [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"
    
  3. Wykonaj systemctl daemon-reload


Teraz, aby sprawdzić, czy to działa, możesz to zrobić:

  1. Reinstall GitLab Runner package gitlab-runner uninstall and then gitlab-runner install

  2. Sprawdź ps aux | grep gitlab i potwierdź, że używany jest właściwy użytkownik

Źródło: https://gitlab.com/gitlab-org/gitlab-runner/issues/3675

 9
Author: rptmat57,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2019-02-22 17:06:57

[DEPRECATED ANSWER]

Znalazłem rozwiązanie, które nie jest najlepszym pactrice, ale go rozwiązałem. Muszę użyć SSH executer i ssh do localhost. Wymagane jest dodanie gitlab-runner id_rsa.pub to the user ' s authorized_keys what you want to use. Jest mój Rozszerzony kod:

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"
 2
Author: PumpkinSeed,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2019-03-13 14:23:41

Po zarejestrowaniu gitlab-runner (tak, zostanie on zainstalowany w katalogu użytkownika gitlab-runner i katalogu roboczym /home/gitlab-runner) możesz wykonać następujące czynności, aby zmienić użytkownika runnera

gitlab-runner uninstall
gitlab-runner install --working-directory <existing-path> --user <any-existing-user>

# eg: gitlab-runner install --working-directory /home/ec2-user --user ec2-user

Następnie uruchom ponownie usługę

service gitlab-runner restart

Uwaga: nie musisz edytować /etc/systemd/system/gitlab-runner.service w tym celu, ponieważ jest ona aktualizowana po ponownym uruchomieniu usługi jak powyżej

Aby sprawdzić, czy konfiguracje są odzwierciedlone, Uruchom

ps aux | grep gitlab
 1
Author: Jananath Banuka,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2020-07-03 20:58:49

Tak na przyszłość, robiłem test z sklonowaną wersją mojej konfiguracji, jeśli nazwa domeny nie wskazuje na serwer, z którym pracujesz, gitlab może uznać Twoje runnery za offline. Jeśli masz inną (skopiowaną) instancję działającą pod adresem ip, na który wskazuje Domena i nie ma blokowania zapory, polecenie gitlab-runner verify powie, że Twoje runnery żyją.

Rozwiązaniem może być dodanie domeny wskazującej na 127.0.0.1 do pliku hosts. będziesz musiał uruchom ponownie instancję gitlab i runners.

 0
Author: SomeOne_01,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-04-09 09:24:26

Dla najnowszej wersji gitlab-runner należy zmodyfikować argumenty systemowe w pliku /etc/default/gitlab-runner.

 0
Author: abanman,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2020-04-27 23:59:59

Oto przykład dla Docker gitlab-runner:

Zbuduj swój własny obraz runnera na podstawie pliku Dockerfile z następującą treścią

FROM gitlab/gitlab-runner
# add new user (if needed)
RUN useradd -u 998 gitlab-www && mkdir /home/gitlab-www && \
    chown gitlab-www /home/gitlab-www && chmod u+rwx /home/gitlab-www
# need to replace entrypoint to force new created user over gitlab-runner
ENTRYPOINT /usr/bin/dumb-init /entrypoint run --user=gitlab-www --working-directory=/home/gitlab-www

(zaktualizuj -u 998 i gitlab-www zgodnie z potrzebami)

.gitlab-ci.Skrypty yml działają teraz jako użytkownik gitlab-www. Jeśli ten ma ten sam uid co montowanie hosta, możesz również wdrożyć bezpośrednio do folderów hosta.

 0
Author: allofmex,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2020-12-23 19:48:50