[英]How to checkout git repo with an specific revision in Jenkins
我正在使用 git、s3 和 aws-codedeploy 運行 Jenkins。 用於通過 s3 部署構建應用程序,並觸發 aws codedeploy 以進行部署后過程。 以上設置運行完美。
每當我運行 jenkins 工作時,我都會遇到問題,我的工作總是克隆 git repo,然后將構建/內容的 zip 上傳到 s3,然后 aws-codedeploy 在我的服務器上部署完整的 zip。
但是我希望當我運行 jenkin 工作時,它只需要特定的 git 修訂版克隆,而不是完整的內容,並僅使用它來構建部署。
請幫我解決上述問題。 提前謝謝...
由於 git 將任何分支視為提交的指針,因此您可以在分支說明符中指定提交。
編輯(回復評論):您所說的分支實際上只是指向特定提交的指針。 Git 沒有 svn 這樣的分支; 因此,如果你想部署一個特定的提交,你只需提供它。
我知道您不想在每次需要構建它時都換工作。 您可以使構建參數化,然后將該參數用作分支說明符。
在Pre Steps
,在Execute shell
下添加此腳本:
# update the local git repository
git fetch
# pull the desired branch
git pull origin <branch>
# checkout the specific commit you want.
git checkout <commit version>
我正在使用Jenkins 管道。
我可以部署舊提交(任何舊提交),只需在部署之前在gitlab docker鏡像中運行 checkout:
node {
stage('checkout') {
checkout scm
}
docker.image('docker.io/gitlab/gitlab-ce').inside('-u root -e MAVEN_OPTS="-Duser.home=./"') {
stage('git checkout') {
sh 'git checkout ${REV_VER}'
}
}
在此之后,我使用任何其他 docker 映像進行構建和部署。
示例:
docker.image('openjdk:8').inside('-u root -e MAVEN_OPTS="-Duser.home=./"') {
stage('build') {
build process*
}
stage('deploy') {
deploy process*
}
}
REV_VER,這是 Jenkins 配置中的字符串參數。
默認變量 - REV_VER(在 Jenkins 配置中) - Develop (我的工作分支)。
但是,如果您需要部署任何舊提交,只需在運行“Build with Parameters”時更改字符串 REV_VER 中的短 ID 提交(如“5221e28”)上的變量
ps OMG,我希望你能理解我寫的東西,因為我的英語很糟糕=)
祝你好運
根據git插件的文檔:
注意:結帳步驟是首選的 SCM 結帳方法。 它提供了比 git 步驟更多的功能。
在上面我使用帶有憑據的checkout制作了版本:
def branchDeployName = 'd5e043c80b51067c397ae12567005efde5b2517f' //commit ID
/*or simply*/
//def branchDeployName = '*/master' //branch name
checkout([
$class: 'GitSCM',
branches: [[name: branchDeployName]],
doGenerateSubmoduleConfigurations: false,
extensions: [],
submoduleCfg: [],
userRemoteConfigs: [
[credentialsId: 'ac3a0ae1-d3aa-1111-ac70-cba42f82e760',
url: 'https://bitbucket.org/user/repo.git']
]
])
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.