Jenkinsのジョブの中には、クライアント受け入れテスト環境などにデプロイするものがあります。この種の仕事が偶然に引き起こされないことが非常に重要です。したがって、特定のビルドをトリガーするときに何らかの方法でパスワードを要求するようにJenkinsを構成することは可能ですか?
2 に答える
プロジェクトベースのセキュリティを設定すると、ジョブごとにビルドアクセスを制限できます。
Jenkins構成ページのヘルプから:
[プロジェクトベースのセキュリティ]は、「マトリックスベースのセキュリティ」の拡張機能であり、プロジェクトごとに個別に追加のACLマトリックスを定義できます(これは、ジョブ構成画面で実行されます)。
これにより、「ジョーはプロジェクトA、B、Cにアクセスできますが、Dは表示されません」などと言うことができます。一般的なマトリックスベースのセキュリティの概念については、「マトリックスベースのセキュリティ」のヘルプを参照してください。
ACLは付加的なものであるため、以下で付与されるアクセス権はすべてのプロジェクトに有効です。*
わかった。この質問についての私の5セント。
Jenkinsは、認証入力としてRedmineのmysqldbを使用します。
Jenkinsでは、次のプラグインが必要になります。
パラメータをアクティブ化した後Password
、ビルド前にパラメータの入力を求められます。
だから、私は2つのオプションを考え出しました。
- スレーブがmysql(または任意のDBエンジン)と直接接続している場合に適用できます。
次に、ビルド前のチェック:
SALT=$(mysql --defaults-extra-file="~/redmcheck.my" -B -se "select salt from redmine.users where login='${BUILD_USER}';")
HASH=$(mysql --defaults-extra-file="~/redmcheck.my" -B -se "select hashed_password from redmine.users where login='${BUILD_USER}';")
CHECK=$(sha1 -qs $SALT$(sha1 -qs $Password))
if [ $HASH != $CHECK ]
then
exit 1;
fi
入力したパスワードが等しくない場合、ビルドが壊れます。
2番目の解決策は、RedmineでRestAPIを使用することです。また、リモートスレーブのユーザーを再確認できます。
CODE = $(curl -X GET -u $ {BUILD_USER}:$ {Password} --write-out "%{http_code}" -o / dev / null -s https://redmine/users/current.json) ; [$ CODE!= "200"]の場合、1を終了します。fi
200のコードを取得すると、ビルドされます。