我有一条简单的管道。我能够在管道块之外获取属性并成功地运行它。当我尝试将属性块移动到外部groovy并使用"load“导入它,甚至使用共享库时,管道失败。是否有一种方法可以在管道块之外共享代码块?
下面是我对失败的共享库的尝试。
@Library("shared-library") _
properties()
pipeline {
agent any
stages {
stage('Build') {
steps {
echo 'Building..'
}
}
stage('Test') {
steps {
echo 'Testing..'
}
}
stage('Deploy') {
steps {
echo 'Deploying....'
}
}
}
}下面是失败的导入groovy的尝试。
def shared_funcs = load "${env.WORKSPACE}/shared/@script/shared_funcs.groovy"
shared_funcs.properties()
pipeline {
agent any
stages {
stage('Build') {
steps {
echo 'Building..'
}
}
stage('Test') {
steps {
echo 'Testing..'
}
}
stage('Deploy') {
steps {
echo 'Deploying....'
}
}
}
}这将输出“所需的上下文类hudson.FilePath缺失--也许您忘记了用提供此步骤的步骤包围代码,例如:节点”。
shared_funcs.groovy
def call() {
properties([ parameters([
string( name: 'AWS_ACCESS_KEY_ID', defaultValue: ''),
string( name: 'AWS_SECRET_ACCESS_KEY', defaultValue: '')
]), pipelineTriggers([]) ])
}发布于 2021-06-08 18:28:40
确保您的全球管道库具有正确的结构。https://www.jenkins.io/doc/book/pipeline/shared-libraries/#directory-structure
确保在该库的vars/目录中有一个文件。为了达到您的目的,应该将其命名为shared_funcs.groovy,并将其构造为一个函数。
def call(){
properties([ parameters([
string( name: 'AWS_ACCESS_KEY_ID', defaultValue: ''),
string( name: 'AWS_SECRET_ACCESS_KEY', defaultValue: '')
]), pipelineTriggers([]) ])
}您需要用call()来构造它,这样它才能工作。
https://stackoverflow.com/questions/67847462
复制相似问题