
私は、SSH経由で本番サーバーにログインし、systemctl restart myservice.serviceでいくつかのサービスを再起動するJenkinsサーバーを持っています。
同様の問題を読んだことがありますが、最も一般的な解決策は次のとおりです。
jenkins ALL = NOPASSWD: /bin/systemctl restart myservice.service, /bin/systemctl restart myservice2.service
それを sudoers ファイルに挿入します。
また、
Defaults:jenkins !requiretty
私のデプロイファイルはこれを実行します:
sudo /bin/systemctl restart myservice.service
そして、私の努力にもかかわらず、次のエラーが引き続き発生します。
sudo: no tty present and no askpass program specified
SSH 時に -t を使用することについて読んだことがありますが、複数のコマンドを実行し、その一部は sudo コマンドではないため、どのように実行すればよいかわかりません。
それで、Jenkins にサービスを再起動させるための良い解決策を持っている人はいますか? Jenkins が root をプライマリ ユーザーとして使用することを避けたいです。
編集:
これは私の側の問題でした。私のjenkinsは別のサーバーにssh接続しましたが、「jenkins」としてログインしていないため、間違ったユーザーの権限を変更していました。解決策は
jenkins ALL = NOPASSWD: /bin/systemctl restart myservice.service, /bin/systemctl restart myservice2.service
適切なユーザーであれば正常に動作します。