一次将Jekinsfile管道中的资源锁定为并行和顺序阶段

时间:2019-01-08 12:07:43

标签: jenkins-pipeline jenkins-declarative-pipeline

我正在尝试在我的Jenkinsfile中运行以下过程:

  1. 构建应用
  2. 触发将两个组件并行部署到测试环境
    • foo部署
    • 酒吧部署
  3. 在已部署的应用上运行测试

步骤2和3需要锁定资源,因为我只有一个测试环境可用。

实现并行运行第2步没有问题,但是,当我配置Jenkinsfile使其一起运行时,我从Jenkins中收到以下错误:

WorkflowScript: 19: Parallel stages or branches can only be included in a top-level stage. @ line 19, column 7.
                    stage('Deploy Foo') {
     ^

这是完整的Jenkins文件:

pipeline {
    agent any

    stages {
        stage('Build') {
            steps {
                powershell(script: '.\\ci\\build.ps1 -Script .\\ci\\build\\build.cake')
            }
        }

        stage('Deploy and run tests') {
            when {
                branch('develop')
            }

            options {
                lock('test-env')
            }

            stages {
                stage('Deploy') {
                    parallel {
                        stage('Deploy Foo') {
                            steps {
                                build(job: 'Deploy_Foo')
                            }
                        }

                        stage('Deploy Bar') {
                            steps {
                                build(job: 'Deploy_Bar')
                            }
                        }
                    }
                }

                stage('Run tests') {
                    steps {
                        powershell(script: '.\\ci\\build.ps1 -Script .\\ci\\test\\build.cake')
                    }
                }
            }
        }
    }
}

我还尝试了一种针对Deploy和Test阶段分别锁定 test-env 资源的解决方案,但是,当某些其他正在运行的作业可能等待该资源并且“跳入”当前作业的“部署”和“测试”阶段。

有什么方法可以实现Jenkinsfile中上述的顺序和并行阶段的混合吗?

0 个答案:

没有答案