Jenkins 2에는 파이프 라인에 일류 시민이 있습니다. 그러나 예제에서 작업은 단일 시퀀스로 실행되는 것으로 보입니다.
node {
// Mark the code checkout 'stage'....
stage 'Checkout'
// Get some code from a GitHub repository
git url: 'git@github.com:elifesciences/elife-bot.git'
// Mark the code build 'stage'....
stage 'Build'
echo "Unit tests will run here"
stage "Production"
echo "Deploying to production environment"
}
프로덕션 시스템에 배포하려면 수동 승인이 필요한 경우가 종종 있습니다. 파이프 라인 내부를 누르기 위해 수동 버튼을 삽입하는 방법이 있습니까?
나는 문서 에서 이것을 달성 할 수있는 가능한 단계를 찾고 있었지만 아무 소용이 없었다.
답변
입력 은 당신이 찾고있는 옵션입니다. 내가 사용하는 방법은 다음과 같습니다. 단계는 노드 외부에 있어야합니다. 그렇지 않으면 jenkins는 다음 단계를 기다리는 에이전트를 보유합니다. 두 번째 노드는 첫 번째 노드와 동일한 작업 공간을 사용하지 않을 수 있습니다.
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('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 컨트롤도 충분하다는 사실에 근거합니다.
답변
이것은 간단한 예일 뿐이지 만 필요한 경우 트리거 할 수 있습니다.
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"'
}
}
}
}