1

尝试将以下语法从脚本化管道移植到声明性管道,但它不起作用。显然,我收到错误消息,该步骤不是声明性 Jenkinsfile 中的有效关键字。找不到任何文档来解决此问题。有什么帮助吗?

stage("publish to s3") {
step([
    $class: 'S3BucketPublisher',
    entries: [[
        sourceFile: 'mybinaryFile',
        bucket: 'GoBinaries',
        selectedRegion: 'eu-west-1',
        noUploadOnFailure: true,
        managedArtifacts: true,
        flatten: true,
        showDirectlyInBrowser: true,
        keepForever: true,
    ]],
    profileName: 'myprofile',
    dontWaitForConcurrentBuildCompletion: false, 
])

}

4

2 回答 2

0

只要代码在一个script块中,这应该可以工作。这是在声明性管道中运行脚本化管道代码的标准方式。

stage("publish to s3") {
  steps {
    script {
      step([
        $class: 'S3BucketPublisher',
        entries: [[
          sourceFile: 'mybinaryFile',
          bucket: 'GoBinaries',
          selectedRegion: 'eu-west-1',
          noUploadOnFailure: true,
          managedArtifacts: true,
          flatten: true,
          showDirectlyInBrowser: true,
          keepForever: true,
        ]],
        profileName: 'myprofile',
        dontWaitForConcurrentBuildCompletion: false, 
      ])
    }
  }
}
于 2022-01-31T19:15:08.513 回答
0

在声明性管道中,stage应该有steps

stages{
  stage('someName'){
    steps {
      //s3bucketpublisher step
    }
  }
}

参考:Jenkins 文档

stage 指令位于 stage 部分,应该包含一个 steps 部分、一个可选的 agent 部分或其他特定于阶段的指令。

于 2018-10-11T18:22:19.727 回答