首页 文章

如何在Jenkins中使用特定修订来检出git repo

提问于
浏览
0

我用git,s3和aws-codedeploy运行Jenkins . 对于s3上的部署构建应用程序,它会触发aws codedeploy以用于后期部署过程 . 以上设置运行完美 .

每当我运行jenkins工作时我都会遇到问题,我的工作一直克隆git repo然后将构建/内容的zip上传到s3然后aws-codedeploy在我的服务器上部署完整的zip .

但是我希望当我运行jenkin工作时,它只需要特定的git修订克隆不是为了完整的内容而只用它来构建部署 .

请帮我解决上述问题 . 提前致谢...

3 回答

  • 5

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

    EDIT (reply to comment): 你所谓的分支,实际上只是指向特定提交的指针 . Git没有svn这样的分支;因此,如果您想部署特定的提交,您只需提供它 .

    我知道你不希望每次需要 Build 它时都改变工作 . 您可以进行构建parametrized然后use the parameter as branch specifier .

  • 1

    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>
    
  • 0

    我正在使用 Jenkins Pipeline .

    我可以部署旧提交(任何旧提交),只需在部署之前在 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配置中) - 开发(我的工作分支) .

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

    附:天啊,我希望,你明白我写的是什么,因为我的英语非常糟糕=)

    祝好运

相关问题