【发布时间】:2018-07-25 07:35:07
【问题描述】:
我正在尝试将docker-compose 与环境变量一起用于Jenkinsfile 设置的图像名称,但它不起作用。
我有一个Jenkinsfile 包含
node() {
stage('Checkout') {
cleanWs()
git credentialsId: 'xxx', url: 'ssh://git@...'
}
stage('Build') {
withMaven(maven: 'maven-3.5.3') {
sh 'mvn clean package'
def pom = readMavenPom file:'pom.xml'
JAR_FILE = pom.artifactId + "-" + pom.version + ".jar"
JAR_VERSION = pom.version
}
}
stage('Build Docker Image') {
echo "Docker Build ..."
docker.withTool('docker') {
app = docker.build("microservices/my-service:${JAR_VERSION}","--build-arg JAR_FILE=${JAR_FILE} .")
}
}
stage('Running Docker Container') {
echo "Docker Run ..."
withEnv(['VERSION=1.0.0']) {
docker.withTool('docker') {
sh "docker-compose rm -f -s -v"
sh "docker-compose up -d"
}
}
cleanWs()
}
}
还有一个docker-compose.yml 喜欢
version: '3.6'
services:
my-service:
image: microservices/my-service:${VERSION}
container_name: my-service
...
除了最后一个阶段没有使用我的环境变量之外,一切正常。
Docker Run ...
[Pipeline] withEnv
[Pipeline] {
[Pipeline] tool
[Pipeline] withEnv
[Pipeline] {
[Pipeline] sh
[my-service] Running shell script
+ docker-compose rm -f -s -v
The VERSION variable is not set. Defaulting to a blank string.
【问题讨论】:
标签: docker jenkins docker-compose jenkins-pipeline