web-dev-qa-db-ja.com

rootユーザーとしてjenkinsでシェルコマンドを実行しますか?

私は最近、統合にJenkinsの使用を開始しました。シェルコマンドなしでマスターノードでジョブを実行するまではすべて順調でしたが、マスターとシェルコマンドを含むスレーブノードでジョブを実行する必要があります。これらのシェルコマンドをrootユーザーとして実行することはできません。私が試してみました

  1. SSH Keysを使用します。
  2. シェルコマンドでユーザー名を設定します。
  3. Sudoを使用します。

上記の方法を使用するたびにpermission deniedエラーが発生します。

13
Raj Gupta

シェルコマンドを実行できるように、jenkinsユーザーのアクセス許可を変更する必要があります。 jenkinsをサービスとしてインストール(rpmパッケージをダウンロード)できます。デフォルトでは8080でhttpを実行し、8009ポートでAJPを実行するため、ポートを変更する必要があります。



次のプロセスはCentOS用です
1。このスクリプトを開きます(VIMまたは他のエディターを使用):

vim /etc/sysconfig/jenkins

2.これを見つける$JENKINS_USERそして「root」に変更します:

$JENKINS_USER="root"

3.次に、Jenkinsホーム、webrootおよびログの所有権を変更します。

chown -R root:root /var/lib/jenkins
chown -R root:root /var/cache/jenkins
chown -R root:root /var/log/jenkins

4)Jenkinsを再起動し、ユーザーが変更されたことを確認します。

service jenkins restart
ps -ef | grep jenkins

これで、Jenkinsジョブをrootユーザーとして実行できるようになり、すべてのシェルコマンドがrootとして実行されます。

21
Pulkit

ルートとしてjenkinsユーザーを実行することをお勧めします。これにより、オペレーティングシステムと、ジェンキンスが構築できるすべてのレポが公開される可能性があります。

スクリプトをルートとして実行することはセキュリティ上のリスクですが、やや安全な方法は、jenkinsユーザーにSudoアクセスを許可して、パスワードを必要とせずに1つのスクリプトのみを実行することです。

Sudo visudo

以下を追加します。

jenkins    ALL = NOPASSWD: /var/lib/jenkins/jobs/[job name]/workspace/script

失敗したビルドスクリプトのコンソールログでパスを再確認してください。ここに示されているものがデフォルトです。

これで、jenkinsタスク内でSudo $WORKSPACE/your scriptを呼び出すことができます

29
oden