次のような問題が発生しています: 宛先ディレクトリへの権限がない場合に、Jenkins の「ビルド後」アクションとしてファイルをコピーする方法
私はJenkinsワークスペースからファイルを移動/コピー/rsyncしたいのですが
/var/www/app
権利が設定されています
アパッチ:アパッチ
Jenkinsをグループに追加しました アパッチしかし、jenkins のインスタンスは /var/www/app にファイルをコピーできません。
/var/www/app の権限を apache:jenkins に設定しようとしましたが、それでも Jenkins はエラーを吐き続けます: 権限が拒否されました、または操作は許可されていません
PS: OS を追加するのを忘れましたが、それは CentOS です ;)
編集 1: これは Jenkins スクリプト実行時のログです:
[ワークスペース] $ /bin/sh -xe /tmp/hudson1379987233097some_more_numbers.sh + sh /path_to_sh_script/script.sh 増分ファイルリストを送信します
応用/
rsync: "/var/www/app/application" の権限設定に失敗しました: 操作は許可されていません (1)
そしてこれがスクリプトそのものです:)
#!/bin/bash
rsync -avzh /path/to/jenkins/jobs/app/workspace/default/application /var/www/app ;
rsync -avzh /path/to/jenkins/jobs/app/workspace/default/library /var/www/app ;
rsync -avzh /path/to/jenkins/jobs/app/workspace/default/public /var/www/app ;
答え1
コメント欄での長く有意義な議論の後、このリンクユーザーは、
--no-perms --omit-dir-times
オプションにrsync
。
問題を解決するための予備的な試み:
短期間でセキュリティが心配でなければ、試してみるといいでしょう
chmod a+rwx /var/www/app
そして、このディレクトリに書き込みを試みます。サブディレクトリがある場合は、次のように再帰的に実行する必要があることに注意してください。
chmod --recursive a+rwx /var/www/app
成功した場合は、権限を徐々に削除し始めることができ、これにより問題を特定しやすくなります。
ユーザjenkinsがすでにapacheのグループメンバーであることを確認します。
groups apache
答え2
私も同様の問題を抱えていました。Jenkins でローカルホストの /var/www に書き込みたいと考えていました。私のサーバーでは /var/www は www-data が所有しているため、jenkins を www-data グループに追加し、/var/www グループを書き込み可能にしましたが、アクセス許可が拒否されるというエラーが発生し続けました。jenkins サービスを再起動するだけで問題は解決しました。
答え3
まず、SSH と ssh-key exchange を使用して Linux または apache サーバーを Jenkin サーバーに追加します。次に、linux/apache サーバーに jenkin(unix ユーザー) というユーザーを作成します。ファイルの pull/push に ssh を実行する場合、jenkin は標準ユーザーとして 'jenkin' を使用するためです。
Unix の Jenkin グループに Apache ユーザーを追加すると役立つ場合があります。