Jenkinsにディレクトリに書き込むことはできませんが、正しい権限が設定されていると思います。 Jenkinsは、「jenkins-group」というグループに属する「jenkins」というユーザーによって実行されます。以下を実行すると、関連ディレクトリは次のようになりますll
。
drwxrwxr-x 2 jenkins-group jenkins-group 68 Sep 3 13:01 test_save_data_jenkins_R
以下のリンクの推奨アプローチに従って、「rwx」権限を持つグループを作成し、Jenkinsを実行しているユーザーをグループに追加しました。ユーザージェンキンスがユーザーのMinecraftホームディレクトリの下の特定のディレクトリに書き込むことを許可する方法は?。
そのため、「jenkins-group」rwx権限をグループに付与し、この権限はこのグループをセカンダリグループにするため、ユーザー「jenkins」にもこれらの権限を付与する必要があります。ユーザー「jenkins」で端末にログインするとtouch test.txt
。
cd /apps/models/test_save_data_jenkins_R && whoami && touch test.txt
次のエラーが発生します。
+ cd /apps/models/test_save_data_jenkins_R
+ whoami
jenkins
+ touch test.txt
touch: cannot touch ‘test.txt’: Permission denied
Build step 'Execute shell' marked build as failure
Finished: FAILURE
「jenkins-group」グループには、「apps」および「models」フォルダに対するrwx権限もあります。以下を使用して、ユーザー「jenkins」に直接権限を付与してみました。
$ setfacl -Rm user:jenkins:rwx /apps/models/test_save_data_jenkins_R/
これにより、スクリプトが正常に実行されます。しかし、これは実際に解決策であり、以前のアプローチで私が間違っていたことを理解したいと思います。
アップデート#1
ランニングgroups jenkins
:
jenkins : jenkins jenkins-group
実行getfacl
結果:
# file: test_save_data_jenkins_R/
# owner: jenkins-group
# group: jenkins-group
user::rwx
group::rwx
other::r-x
アップデート#2
Jenkinsスクリプトで/usr/bin/idを実行すると、次のようになります。
+ /usr/bin/id
uid=775(jenkins) gid=895(jenkins) groups=895(jenkins)
端末で /usr/bin/id を実行すると、次のようになります。
uid=775(jenkins) gid=895(jenkins) groups=895(jenkins),1012(jenkins-group)
これは、JenkinsサービスのsafeRestartを実行した後にも発生する可能性があります。
答え1
問題は、Jenkinsサービスを再起動するまでユーザー権限が反映されないことです。私のRed Hat Linuxコンピュータで、次のように入力しました。
sudo service jenkins restart