私は最近、統合にJenkinsの使用を開始しました。シェルコマンドなしでマスターノードでジョブを実行するまではすべて順調でしたが、マスターとシェルコマンドを含むスレーブノードでジョブを実行する必要があります。これらのシェルコマンドをrootユーザーとして実行することはできません。私が試してみました
SSH Keys
を使用します。Sudo
を使用します。上記の方法を使用するたびにpermission denied
エラーが発生します。
シェルコマンドを実行できるように、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
root
として実行されます。ルートとしてjenkinsユーザーを実行することをお勧めします。これにより、オペレーティングシステムと、ジェンキンスが構築できるすべてのレポが公開される可能性があります。
スクリプトをルートとして実行することはセキュリティ上のリスクですが、やや安全な方法は、jenkinsユーザーにSudoアクセスを許可して、パスワードを必要とせずに1つのスクリプトのみを実行することです。
Sudo visudo
以下を追加します。
jenkins ALL = NOPASSWD: /var/lib/jenkins/jobs/[job name]/workspace/script
失敗したビルドスクリプトのコンソールログでパスを再確認してください。ここに示されているものがデフォルトです。
これで、jenkinsタスク内でSudo $WORKSPACE/your script
を呼び出すことができます