簡體   English   中英

更改 Gitlab CI Runner 用戶

[英]Change Gitlab CI Runner user

目前,當我在 GitlabCI 中開始構建時,它在 gitlab-runner 用戶下運行。 我想把它改成公司的內部用戶。 我沒有找到解決這個問題的 /etc/gitlab-runner/config.toml 的任何參數。

我目前的配置:

concurrent = 1
[[runners]]
  name = "deploy"
  url = ""
  token = ""
  executor = "shell"

運行ps aux可以看到:

/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

服務正在使用選項--user運行。

所以讓我們改變這一點,這取決於發行版。 你正在運行它。 如果是systemd,有一個文件:

/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,讓我們現在改變這個文件:

gitlab-runner uninstall

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

重新啟動機器或重新加載服務(即systemctl daemon-reload ),等等!

請注意,當使用特定用戶 (--user) 安裝時,無論何時更新,它都會恢復到原始 systemd 腳本,因此,回到使用 gitlab-runner 用戶。

為了在更新中保持用戶更改,使用 systemd 覆蓋(centos7),您可以使用以下步驟(假設服務位於/etc/systemd/system/gitlab-runner.service ):

  1. 創建一個/etc/systemd/system/gitlab-runner.service.d目錄。
  2. 創建一個/etc/systemd/system/gitlab-runner.service.d/exec_start.conf文件,內容為:

     [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. 執行systemctl daemon-reload


現在要檢查這是否有效,您可以執行以下操作:

  1. 重新安裝 GitLab Runner 包gitlab-runner uninstall然后gitlab-runner install

  2. 檢查ps aux | grep gitlab ps aux | grep gitlab並確認正在使用正確的用戶

來源: https : //gitlab.com/gitlab-org/gitlab-runner/issues/3675

[已棄用的答案]

我找到了一個解決方案,這不是最好的方法,但解決了它。 我需要使用 ssh 執行器和 ssh 到本地主機。 需要將gitlab-runner id_rsa.pub 添加到用戶的authorized_keys 中你想使用什么。 有我的擴展代碼:

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"

注冊gitlab-runner (是的,它將安裝在用戶gitlab-runner和工作目錄/home/gitlab-runner )您可以執行以下操作來更改 runner 的用戶

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

然后重啟服務

service gitlab-runner restart

注意:您不需要為此編輯/etc/systemd/system/gitlab-runner.service ,因為它會在服務如上所述重新啟動后更新

檢查配置是否反映,運行

ps aux | grep gitlab

僅供將來參考,我正在使用我的設置的克隆版本進行測試,如果域名未指向您正在使用的服務器,gitlab 可能會考慮您的跑步者離線。 如果您有另一個(復制的)實例在域指向的 ip 上運行,並且沒有防火牆阻止,則 gitlab-runner verify 命令會說您的跑步者還活着。

解決方案可能是將指向 127.0.0.1 的域添加到主機文件中。 您必須重新啟動 gitlab 實例和運行程序。

對於最新版本的 gitlab-runner,您應該修改/etc/default/gitlab-runner文件中的系統參數。

這里搬運工gitlab亞軍例如:

使用以下內容基於 Dockerfile 構建您自己的運行器映像

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

(根據需要更新-u 998gitlab-www

.gitlab-ci.yml 腳本現在以用戶gitlab-www運行。 如果這個 uid 與主機掛載相同,您也可以直接部署到主機文件夾。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM