Вы можете установить VERSION
в среде для сборки, используя withEnv
в своем конвейере, например:
# Jenkinsfile
---
stage('build'){
node('vagrant'){
withEnv([
'VERSION=0.1'
]){
git_checkout()
dir('app'){
ansiColor('xterm') {
sh 'mvn clean install'
}
}
// build docker image with version
sh 'docker build --rm -t app:${VERSION} .'
}
}
}
def git_checkout(){
checkout([
$class: 'GitSCM',
branches: [[name: '*/' + env.BRANCH_NAME]],
doGenerateSubmoduleConfigurations: false,
extensions: [
[$class: 'SubmoduleOption', disableSubmodules: false, parentCredentials: true, recursiveSubmodules: false, reference: '', trackingSubmodules: true],
[$class: 'AuthorInChangelog'],
[$class: 'CloneOption', depth: 0, noTags: false, reference: '', shallow: false]
],
submoduleCfg: [],
userRemoteConfigs: [
[credentialsId: '...', url: 'ssh://vagrant@ubuntu18/usr/local/repos/app.git']
]
])
}
# Dockerfile
---
FROM ubuntu:18.04
RUN apt update && \
apt install -y openjdk-11-jre && \
apt clean
COPY app/special-security/target/special-security.jar /bin
ENTRYPOINT ["java", "-jar", "/bin/special-security.jar"]
Используется номер версии, установленный в среде сборки Jenkins.по команде docker build
.
Примечание : приложение java
, которое я создаю с maven
(например, mvn clean install
) исключительно для примера, код доступен https://stackoverflow.com/a/54450290/1423507. Кроме того, для цветного вывода в консоли Jenkins требуется Плагин AnsiColor , как объяснено https://stackoverflow.com/a/53227633/1423507. Наконец,не используя docker-compose
в этом примере, нет никакой разницы для установки версии в среде.