如何在 Jenkins 中使用特定修订版签出 git 存储库



我正在使用 git、s3 和 aws-codedeploy 运行 Jenkins。 用于通过 S3 部署构建应用程序,它会为部署后过程触发 AWS CodeDeploy。上述设置运行良好。

每当我运行 jenkins 作业时,我都会遇到问题,我的工作总是克隆 git 存储库,然后将构建/内容的 zip 上传到 s3,然后 aws-codedeploy 在我的服务器上部署完整的 zip。

但是我希望当我运行 jenkin 作业时,它只需要特定的 git 修订版克隆,而不是完整内容并仅使用它构建部署。

请帮助我解决上述问题。 提前感谢...

由于 git 将任何分支视为指向提交的指针,因此您可以在分支说明符中指定提交。

编辑(回复评论):你所说的分支,实际上只是一个指向特定提交的指针。Git 没有像 svn 这样的分支;因此,如果要部署特定的提交,只需提供它。

我知道你不想每次需要建造它时都换工作。您可以使生成参数化,然后将参数用作分支说明符。

Pre StepsExecute 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 Pipeline

我可以部署旧提交

(任何旧提交),只需在部署之前在 gitlab docker 映像中运行结帐:

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 配置中)- 开发(我的工作分支)。

但是,如果您需要部署任何旧提交,只需在字符串 REV_VER 中更改短 ID 提交(如"5221e28")上的变量,当您运行"使用参数构建"时

附言天哪,我希望你明白我写的,因为我的英语很差=)

祝你好运

根据 git 插件的文档:

注意:结帐步骤是首选的 SCM 结帐方法。它提供了比 git 步骤更多的功能。

在上面之后,我使用带有凭据的结帐制作了版本:

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']
  ]
])

相关内容

  • 没有找到相关文章

最新更新