如何在Jenkins

时间:2016-04-22 12:21:17

标签: git jenkins aws-code-deploy

我正在使用git,s3和aws-codedeploy运行Jenkins。对于s3上的部署构建应用程序,它会触发aws codedeploy以用于后期部署过程。 上面的设置运行得很好。

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

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

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

4 个答案:

答案 0 :(得分:7)

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

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

我知道您每次需要构建它时都不想换工作。您可以进行构建parametrized,然后use the parameter as branch specifier

答案 1 :(得分: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>

答案 2 :(得分: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 config中的字符串参数。

默认变量 - REV_VER(在Jenkins配置中) - 开发(我的工作分支)。

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

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

祝你好运

答案 3 :(得分:0)

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