Jenkins - 单个项目问题的多个工作

时间:2017-02-06 19:28:27

标签: jenkins bitbucket jenkins-pipeline

我对Jenkins相对较新(使用2.32)。所以原谅我的无知。

在我目前的设置中,我为一个项目提供了2个自由式作业 - 一个指向生产分支( / master),另一个指向Dev分支( / dev)。 Bitbucket配置为在更改时调用(webhook)Jenkins。

一旦构建了dev并且它通过了所有单元测试,它就会部署到Dev Server。最终,所有dev更改都会通过pull请求推送到Master。 Master分支中的更改会触发Master作业并将工件部署到制作中。

我不认为这种设置是正确的,并希望您的专家就此提出建议。有2份工作让我感到不舒服。如果我想要一个舞台发布怎么办?我需要另一个自由式的工作。没有多大意义。

如何通过一份工作完成这项工作?你们是如何实现这一目标的?使用管道?任何指针都将非常感激。

TIA。

1 个答案:

答案 0 :(得分:1)

您是对的,您可以使用Jenkins Pipeline

更好地管理这一点

您可以做的是:

1)从dev分支中检出代码并将其放在工作区的一个目录中。

2)从该目录编译和部署。

3)添加手动步骤以批准从主分支部署。

4)重复步骤1和2.

示例代码如下所示:

node {    
    // Get code from git repo
    checkout changelog: false, poll: false, scm: [$class: 'GitSCM', branches: [[name: "origin/dev"]], doGenerateSubmoduleConfigurations: false, extensions: [[$class: 'RelativeTargetDirectory', relativeTargetDir: 'test-dev-dir']], submoduleCfg: [], userRemoteConfigs: [[credentialsId: '<jenkins-github-credential-id>', url: 'https://github.com/test']]]

      dir('test-dir') {
        // Do your stuff
        }

    // stage concurrency: 1, name: 'approve'
    // input id: 'master-deploy', message: 'Deploy from master?', ok: 'Deploy'

    // Get code from git repo
    checkout changelog: false, poll: false, scm: [$class: 'GitSCM', branches: [[name: "origin/master"]], doGenerateSubmoduleConfigurations: false, extensions: [[$class: 'RelativeTargetDirectory', relativeTargetDir: 'test-master-dir']], submoduleCfg: [], userRemoteConfigs: [[credentialsId: '<jenkins-github-credential-id>', url: 'https://github.com/test']]]

    dir('test-master-dir') {
      // Preferbably create a tag for future hotfix maybe?
      // Do your stuff
      }
 }