web-dev-qa-db-ja.com

Gitlab CI Runnerユーザーを変更する

現在、GitlabCIでビルドを開始すると、gitlab-runnerユーザーで実行されています。会社の内部ユーザーに変更したいです。 /etc/gitlab-runner/config.tomlのパラメーターを見つけられなかったので、それを解決しています。

私の現在の構成:

concurrent = 1
[[runners]]
  name = "deploy"
  url = ""
  token = ""
  executor = "Shell"
26
PumpkinSeed

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

ビンゴ、このファイルを変更しましょう:

gitlab-runner uninstall

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

マシンを再起動するか、サービス(つまりsystemctl daemon-reload)をリロードします。

49
Thomas Decaux

特定のユーザー(--user)でインストールする場合、更新するたびに元のsystemdスクリプトに戻り、gitlab-runnerユーザーの使用に戻ることに注意してください。

更新後もユーザーの変更を維持するために、システム化されたオーバーライド(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そして、適切なユーザーが使用されていることを確認します

ソース: https://gitlab.com/gitlab-org/gitlab-runner/issues/3675

6
rptmat57

[非推奨の回答]

私は解決策を見つけました。これは最良のペースではありませんが、解決しました。 ssh executerとsshをlocalhostに使用する必要があります。 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"
1
PumpkinSeed

将来の参考のために、セットアップのクローンバージョンでテストを行っていました。ドメイン名が使用しているサーバーを指していない場合、gitlabはランナーをオフラインと見なす可能性があります。ドメインが指しているIPで実行されている別の(コピーされた)インスタンスがあり、ファイアウォールがブロックされていない場合、gitlab-runner verifyコマンドはランナーが生きていると言います。

解決策は、127.0.0.1を指すドメインをhostsファイルに追加することです。 gitlabインスタンスとランナーを再起動する必要があります。

0
SomeOne_01