我有各种服务,每个服务都有 docker-compose 文件来停止或部署它们。通常,用户必须选择需要停止或部署哪些服务。希望从现在开始自动化这个过程。
在下面的示例中我使用选择参数
parameters {
choice(name: 'ACTION', choices: ['STOP','DEPLOY'], description: 'Please select what to do'),
choice(name: 'SERVICES', choices: ['PAYMENT','GAMES','LAUNCHER'], description: 'Please choose which services to deploy'),
}
stage ('stop services') {
when {
allOf {
expression { params.ACTION == "STOP" }
expression { return params.PAYMENT }
}
}
steps {
echo "Executing Release\n"
//somehow refer to a docker-compose file
sh '''
docker-compose.yml -p down '''
}
}
为每个服务和操作设置不同的阶段似乎很麻烦。有没有一种方法可以选择在一个表达式中部署或停止哪些服务,或者我应该为每个服务和选择创建不同的表达式? 如何在此管道中引用 GitHub 存储的 docker-compose 文件?
您似乎在这里遗漏了一些东西:一种将服务名称映射到其 docker-compose 文件的方法,以及一种告诉
docker compose
要处理哪个文件的方法。我会做这样的事情
def SERVICE_TO_FILE = [
'PAYMENT': 'docker-compose-payment.yml',
'GAMES': 'docker-compose-games.yml',
'LAUNCHER': 'docker-compose-launcher.yml',
]
pipeline {
agent {...}
parameters {
choice(name: 'ACTION', choices: ['STOP','DEPLOY'], description: 'Please select what to do')
choice(name: 'SERVICES', choices: ['PAYMENT','GAMES','LAUNCHER'], description: 'Please choose which services to deploy')
}
stages {
stage('stop services') {
when {
expression { params.ACTION == "STOP" }
}
steps {
sh "docker compose --file ${SERVICE_TO_FILE[params.SERVICES]} down"
}
}
}
}