【问题标题】:Jenkins Multibranch Pipeline workspace configurationJenkins Multibranch Pipeline 工作区配置
【发布时间】:2018-09-27 20:36:05
【问题描述】:

我遇到了JENKINS-38706。由于它已经开放了一段时间,我正在尝试解决它。​​

我的问题是我正在运行一个多节点管道,其中一个节点是 Windows 从属节点,具有 255 个字符的路径限制。

所以,我正在尝试更改 Windows 从属阶段的工作区,而不是使用多分支管道使用的 C:\jenkins\workspace\job-branch-randomcharacters,而是尝试将其移动到 c :\w\job\branch.

它立即失败:

Branch indexing
Obtained Jenkinsfile from 5bc168fcd5b3707048ad4bca4b5ef7478d759531
Running in Durability level: MAX_SURVIVABILITY
[BFA] Scanning build for known causes...
[BFA] No failure causes found
[BFA] Done. 0s
[Bitbucket] Notifying commit build result
[Bitbucket] Build result notified
org.codehaus.groovy.control.MultipleCompilationErrorsException: startup failed:
WorkflowScript: 52: Too many arguments for map key "ws" @ line 52, column 15.
                    ws('C:\\w\\$JOB_NAME\\$BRANCH_NAME') {

我的 Jenkinsfile sn-p:

            stage ('Snapshot-WINDOWS') {
                agent {
                    node {
                        label 'win'
                        ws('C:\\w\\$JOB_NAME\\$BRANCH_NAME') {
                            body()
                        }
                    }
                }
                steps {
                    withMaven(
                        maven: 'Maven 3.5.3',
                        mavenSettingsConfig: 'settings'
                    ) {
                        bat 'mvn clean install'
                    }
                }
            }

【问题讨论】:

    标签: jenkins jenkins-pipeline


    【解决方案1】:

    要回答我自己的问题,我需要使用 customWorkspace,而不是使用 ws(),并且 $BRANCH_NAME 会自动添加到多分支管道中。

            stage ('Snapshot-WINDOWS') {
                agent {
                    node {
                        label 'win'
                        customWorkspace 'C:\\w\\$JOB_NAME'
                    }
                }
                steps {
                    withMaven(
                        maven: 'Maven 3.5.3',
                        mavenSettingsConfig: 'settings'
                    ) {
                        bat 'mvn clean install'
                    }
                }
            }
    

    【讨论】:

      【解决方案2】:

      您忘记声明工作区。 示例:

      def wsDir = "/some/path/${env.BRANCH_NAME}"
      ws (wsDir) {
      // some block
      }
      

      【讨论】:

      • 所有示例都表明是内联完成的。我试图在节点定义中定义 ws,因此发生了结帐。
      猜你喜欢
      • 2021-10-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-11-02
      • 1970-01-01
      相关资源
      最近更新 更多