更改管道阶段之间的节点

时间:2017-03-29 10:34:10

标签: jenkins jenkins-plugins jenkins-pipeline

在我的桩线中,我正在我的一个阶段中从我的主人改为奴隶节点

pipeline {
  agent any
  stages {
    stage('Install Deps...') {
      steps {
        echo 'Do something here'
      }
    }
    stage('Build') {
      steps {
        echo 'Build stuff here...'
        stash includes: 'dist/**/*', name: 'builtSources'
        node('Protractor') {
          dir('/some-dir/deploy') {
            unstash 'builtSources'
          }
        }
      }
    }
    stage('Tests') {
      steps {
        parallel (
          "Chrome": {
            echo 'Chrome testing here...'
          }
        )
      }
    }
  }
}

我可以从詹金斯的控制台输出中看到它正确地说在主人身上运行'在第一阶段开始时,改变为在量角器上运行'在我的第二阶段。当第三个测试'阶段开始,我没有看到节点在控制台输出中更改回master,是预期的行为吗?

除非使用node()块明确告知,否则阶段是否应在master上运行?

3 个答案:

答案 0 :(得分:3)

你有一个嵌套节点。这应该相当于:

Public Sub BorrarFilasEnDatatable(ByRef dtDatos As DataTable, ByVal strWhere As String)
        Dim dtTemp As New DataTable
        Dim filas As DataRow()
        filas = dtDatos.Select("NOT(" & strWhere & ")")
        dtDatos.Clear()
        If filas.Count > 0 Then
            dtTemp = filas.CopyToDataTable
            dtDatos.Merge(dtTemp)
        End If
        dtTemp.Dispose()
End Sub

'call me method for delete rows
Me.BorrarFilasEnDatatable(dt1, "Id<10")

答案 1 :(得分:1)

以下是对我有用的示例,您也可以并行进行:

pipeline {
    agent {
        label "server1"
    }
    options {
        skipDefaultCheckout true
    }

    stages {      

        stage("Some stage 1"){
            steps{
                script {
                    echo "Hello world"
                }
            }
        }
        stage("Some stage 2") {
            agent {
                label 'server2'
            }
            steps{
                script {
                    echo "Hello world"
                }
            }
        }
    }
    post {
        always {
            deleteDir()
            cleanWs()                   
        }
    }

}

答案 2 :(得分:0)

简短的回答是,如果您希望在特定节点/代理上运行阶段,那么您应该指定它。如果没有,则下一阶段运行的节点将受到节点的“使用”设置等因素的影响(即“尽可能多地使用此节点”或“仅使用标签构建作业”。 ..&#39)。在我的设置中,一旦执行从主服务器切换到代理节点,它就不会切换回,除非代理上的所有执行程序都在使用且主服务器有一个打开的执行程序。听起来你当前的设置是相似的。