我有一個 Jenkinsfile,我從 gradle version 屬性讀取應用程式的當前版本。基于這個版本,構建了一個 docker 鏡像并推送到遠程存盤庫。
但是,我不知道如何 1. 增加應用程式版本和 2. 將該更改推送到存盤庫。這是我當前的 Jenkinsfile:
pipeline {
agent any
stages {
stage("build") {
steps {
sh './gradlew -q properties > gprops'
script {
buildVersion = sh(returnStdout: true, script: 'cat gprops |grep version:|awk \'{print $2}\'').trim()
buildName = sh(returnStdout: true, script: 'cat gprops |grep name:|awk \'{print $2}\'').trim()
}
sh './gradlew clean build -x test'
}
}
stage("build image") {
steps {
script {
echo 'building the docker image'
withCredentials([
usernamePassword(credentialsId: 'docker-hub-repo', usernameVariable: 'USER', passwordVariable: 'PASSWORD')
]) {
sh "docker build -t somename/${buildName}:${buildVersion} ."
sh "echo $PASSWORD | docker login -u $USER --password-stdin"
sh "docker push somename/${buildName}:${buildVersion}"
}
}
}
}
}
}
aa
uj5u.com熱心網友回復:
我認為你應該添加 gradle 任務來這樣做
version='1.0.0' //version we need to change
task increment<<{
def v=buildFile.getText().find(version) //get this build file's text and extract the version value
String minor=v.substring(v.lastIndexOf('.') 1) //get last digit
int m=minor.toInteger() 1 //increment
String major=v.substring(0,v.length()-1) //get the beginning
//println m
String s=buildFile.getText().replaceFirst("version='$version'","version='" major m "'")
//println s
buildFile.setText(s) //replace the build file's text
}
然后你可以 sh './gradlew increment'在你的管道中呼叫它
,這應該將版本從 1.0.0 增加到 1.0.1 。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/355004.html
