私は Intgrating PHP projects with Jenkins from my own PHP projects。
Ubuntu 12.10サーバーでjenkinsユーザーを作成しました。ビルドツールとしてPhingを使用しました。ビルドプロセスの1つのステップで、Sudoを使用してnginxを再起動する必要があります。
この solution によると、jenkinsがパスワードなしでSudoを使用できるようにすることを提案しています。
また、そのような配置のセキュリティへの影響については、完全には確実ではありません。
この取り決めを続行する必要があるかどうかを確認したいと思います。
私はjenkinsを製品コードと同じサーバーにインストールしました。
リンクされたソリューションにより、jenkinsはパスワードなしでSudo
を介して任意のコマンドを実行できます。
より良い解決策は、jenkinsがパスワードなしでnginxを再起動できるようにすることです。このように、実行する必要のあるコマンドのroot権限を持っていますが、jenkinsが何かを行うための包括的な権限を付与していません。
visudo
を使用して、これをsudoers
ファイルの下部に貼り付けます。
Defaults:jenkins !requiretty,!lecture
jenkins ALL=NOPASSWD:/etc/init.d/nginx
開発サーバーでnginxをrootとして実行する必要があるのはなぜですか?通常のユーザーとして実行して、jenkinsがroot権限なしで再起動できるようにします。
また、「jenkinsは製品コードと同じサーバー上にある」とはどういう意味ですか?本番アプリケーションが実際に開発サーバー上で実行中であると言う場合:これは(セキュリティとパフォーマンス上の理由から)悪い考えであり、できるだけ早く変更する必要があります。
フォローアップの質問に答えるために編集します:
私は2つのサーバーを提案しています。1つは本番サーバー、もう1つはjenkinsを実行するサーバー、SCMなどです。あなたが唯一の開発者である場合、必要に応じて2つ目のサーバーを開発ワークステーションにすることもできます。いいえ、jenkinsユーザーとしてnginxを実行する必要はありません。jenkinsがnginxを再起動できるようにする構成が必要です(たとえば、jenkinsの同じグループとnginx-restart-scriptおよびrwxr-x ---権限)または類似)。