gpt4 book ai didi

function - Jenkins 将构建步骤作为函数发布

转载 作者:行者123 更新时间:2023-12-04 08:02:32 24 4
gpt4 key购买 nike

在 Jenkins ,我知道我可以做到这一点......

pipeline {
agent any
stages {
stage('Demo') {
steps {
MyFunction()
}
}
}
}

void MyFunction() {
sh 'ls /'
}
在这种情况下,函数在管道内,但我总是可以提取 MyFunction到一个共享库中,以便跨管道重用。
但是有可能通过后期构建步骤来做到这一点吗?
在这种情况下,我想将其转换为函数并将其提取到库中。
    post {
always {
/* clean up our workspace */
deleteDir()
/* clean up tmp directory */
dir("${workspace}@tmp") {
deleteDir()
}
/* clean up script directory */
dir("${workspace}@script") {
deleteDir()
}
dir("${workspace}@2") {
deleteDir()
}
dir("${workspace}@2@tmp") {
deleteDir()
}
}
}
我试过这个
    post {
always{
test()
}
}
}
带功能
void test() {
{
/* clean up our workspace */
deleteDir()
/* clean up tmp directory */
dir("${workspace}@tmp") {
deleteDir()
}
/* clean up script directory */
dir("${workspace}@script") {
deleteDir()
}
dir("${workspace}@2") {
deleteDir()
}
dir("${workspace}@2@tmp") {
deleteDir()
}
}
}
但这似乎不起作用。
这是可能的,还是我只是错过了一些非常明显的东西?

最佳答案

将工作区的名称作为参数传递给函数将解决您的问题。下面的脚本有效。

pipeline {
agent any

stages {
stage('Hello') {
steps {
echo 'Hello World'
}
}
}
post{
always{
echo "In : ${env.WORKSPACE}"
test(env.WORKSPACE)
}
}
}

void test(workspace){
echo "In test : " + workspace
deleteDir()
dir("${workspace}@tmp") {
deleteDir()
}
}
另外,不要调用 deleteDir()对于多个 tmp 目录,如果您调用 deleteDir()只有一次,然后它将删除工作区以及 tmp 目录

关于function - Jenkins 将构建步骤作为函数发布,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66383261/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com