vin*_*ini 36 groovy jenkins jenkins-groovy jenkins-pipeline jenkins-declarative-pipeline
在jenkins脚本管道中,我们可以创建方法并可以调用它们.
是否有可能在Jenkins声明性管道中?如何?
Ste*_*ing 45
较新版本的声明性管道支持这一点,而这在此之前是不可能的(〜2017年中期).您可以通过groovy脚本声明函数,就像您期望的那样:
pipeline {
agent any
stages {
stage('Test') {
steps {
whateverFunction()
}
}
}
}
void whateverFunction() {
sh 'ls /'
}
Run Code Online (Sandbox Code Playgroud)
Muk*_*h M 17
这对我有用。它可以使用 Blue Ocean GUI 进行查看,但是当我使用 Blue Ocean GUI 进行编辑时,它会删除方法“def showMavenVersion(String a)”。
pipeline {
agent any
stages {
stage('build') {
agent any
steps {
script {
showMavenVersion('mvn version')
}
}
}
}
}
def showMavenVersion(String a) {
bat 'mvn -v'
echo a
}
Run Code Online (Sandbox Code Playgroud)
lvt*_*llo 12
您可以创建这样的groovy函数并将其保存在您应该配置为托管库的git中(也可以在jenkins中配置它):
/path/to/repo-shared-library/vars/sayHello.groovy:
Run Code Online (Sandbox Code Playgroud)
内容:
def call(String name = 'human') {
echo "Hello, ${name}."
}
Run Code Online (Sandbox Code Playgroud)
您可以使用以下命令在管道中调用此方法:
@Library('name-of-shared-library')_
pipeline {
agent any
stages {
stage('test') {
steps {
sayHello 'Joe'
}
}
}
}
Run Code Online (Sandbox Code Playgroud)
输出:
[Pipeline] echo
Hello, Joe.
Run Code Online (Sandbox Code Playgroud)
您可以重复使用保存在库中的现有函数.
您还可以使用具有所有功能的单独groovy文件(只是为了保持结构的整洁),可以使用管道将其加载到文件中:
JenkinsFile.groovy
Map modules = [:]
pipeline {
agent any
stages {
stage('test') {
steps {
script{
modules.first = load "first.groovy"
modules.first.test1()
modules.first.test2()
}
}
}
}
}
Run Code Online (Sandbox Code Playgroud)
第一节
def test1(){
//add code for this method
}
def test2(){
//add code for this method
}
return this
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
34118 次 |
| 最近记录: |