从Jenkins脚本管道中的特定阶段重新启动管道

发布于 2025-02-07 07:37:52 字数 129 浏览 0 评论 0原文

我的管道中有4个不同的阶段(构建测试部署监视器),这些阶段是使用脚本管道构建的。管道运行到第3阶段完成,然后等待用户输入。根据用户输入,如果用户在第3阶段之后进行按下按下操作,我需要从阶段2重新启动。是否有任何方法可以在脚本管道中实现这一目标?

I have 4 different stages(build test deploy monitor) in my pipeline which is build using scripted pipeline. Pipeline runs till stage 3 completion and then waits for user input. Based on user input, I need to restart from stage 2 if the user confirms with pressing proceed after stage 3. is there any way to achieve this in scripted pipeline?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

白鸥掠海 2025-02-14 07:37:52

您可以做下面的事情来满足您的要求。

node {
    def mvnHome
    def flag = false
    stage('Stage 1') {
       echo "This stage executed always"
    }
    // Lets execute stage 2
    generateStage2AndCall3("First Execution").call()
    
    stage('Get User Input') {
        echo "Getting user Input"
        input(message: "Should we continue?")
        generateStage2AndCall3("Second Execution").call()
    }
    
    stage('Stage 4') {
        echo "Result"
    }
}

def generateStage2AndCall3(name) {
    return {
        stage("Stage 2 ${name}") {
            echo "Stage 2 ${name}"
            generateStage3(name).call()
        }
    }
}

def generateStage3(name) {
    return {
        stage("Stage 3 ${name}") {
            echo "Stage 3 ${name}"
        }
    }
}

执行看起来像以下。

You can do something like the below to cater your requirement.

node {
    def mvnHome
    def flag = false
    stage('Stage 1') {
       echo "This stage executed always"
    }
    // Lets execute stage 2
    generateStage2AndCall3("First Execution").call()
    
    stage('Get User Input') {
        echo "Getting user Input"
        input(message: "Should we continue?")
        generateStage2AndCall3("Second Execution").call()
    }
    
    stage('Stage 4') {
        echo "Result"
    }
}

def generateStage2AndCall3(name) {
    return {
        stage("Stage 2 ${name}") {
            echo "Stage 2 ${name}"
            generateStage3(name).call()
        }
    }
}

def generateStage3(name) {
    return {
        stage("Stage 3 ${name}") {
            echo "Stage 3 ${name}"
        }
    }
}

The execution will look like the below.

enter image description here

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文