Jenkins 2にはパイプラインがあり、一流の市民がいます。ただし、例では、タスクは単一のシーケンスとして実行されているように見えます。
node {
// Mark the code checkout 'stage'....
stage 'Checkout'
// Get some code from a GitHub repository
git url: '[email protected]:elifesciences/elife-bot.git'
// Mark the code build 'stage'....
stage 'Build'
echo "Unit tests will run here"
stage "Production"
echo "Deploying to production environment"
}
本番システムへの導入には、手動による承認が必要な場合がよくあります。手動ボタンを挿入してパイプライン内を押す方法はありますか?
私はこれを達成するための可能なステップを探していました the docs が役に立たない。
input は、探しているオプションです。これが私がそれを使用している方法です。ノードの外側にステップがあることが重要です。そうでない場合、ジェンキンスは次のステップを待つエージェントを保持します。 2番目のノードは最初のノードと同じワークスペースを使用しない場合があることに注意してください。
node {
stage('build'){
echo "building"
}
}
stage('Deploy approval'){
input "Deploy to prod?"
}
node {
stage('deploy to prod'){
echo "deploying"
}
}
最後に、個別のtest-project
パイプラインとprod-project
パイプラインを作成しました。このパイプラインでは、test-project
の最後にコードがapproved
ブランチにマージされます。
次に、prod-project
パイプラインを設定して、新しいコミットごとにトリガーされないようにして、オンデマンドでデプロイできるようにすることができます。
これは単なる例ですが、必要に応じてトリガーできます。
stage{
script{
input "Continue?"
...enter code here
...
}
}
私はこのドキュメントを読むことで以下のように行いました https://jenkins.io/doc/book/pipeline/syntax/
pipeline {
environment {
BRANCH_NAME = "${env.BRANCH_NAME}"
}
agent any
stages{
stage('Build-Initiator-Info'){
steps{
sh 'echo "Send Info"'
}
}
stage('Build') {
steps{
catchError {
sh 'echo "This is build"'
}
}
post {
success {
echo 'Compile Stage Successful . . .'
}
failure {
echo 'Compile stage failed'
error('Stopping early…')
}
}
}
stage ('Deploy To Prod'){
input{
message "Do you want to proceed for production deployment?"
}
steps {
sh 'echo "Deploy into Prod"'
}
}
}
}
さらに、以下のように自動タイムアウトを追加することもできます
stage('build') {
steps {
sh """
# Some commands
"""
script {
timeout(time: 10, unit: 'MINUTES') {
input(id: "Deploy Gate", message: "Deploy ${params.project_name}?", ok: 'Deploy')
}
}
}
}
stage('deploy') {
when {
branch 'master'
}
steps {
sh """
# some commands
"""
}
}
調べてみると、特定の個人のみが応答できるようにしたい場合は、Jenkinsの入力をJenkinsにアクセスするユーザーの資格情報にバインドすることもできます。これは、Gitコントロールも十分であるという事実によって裏付けられています。