コガネブログ

平日更新を目標に Unity や C#、Visual Studio、ReSharper などのゲーム開発アレコレを書いていきます

【Jenkins】Jenkins Pipeline でタイムアウトした時のリザルトを Success にする方法

概要

pipeline {
    agent any

    stages {
        stage("Hello") {
            steps {
                script {
                    timeout(time: 5, unit: "SECONDS") {
                        sleep 10
                        echo "Hello World"
                    }
                }
            }
        }
        // このステージはスキップされる
        stage("Hello2") {
            steps {
                echo "Hello World2"
            }
        }
    }
}

通常、タイムアウトした場合のリザルトは Aborted になり
以降のステージはスキップされるが、

pipeline {
    agent any

    stages {
        stage("Hello") {
            steps {
                script {
                    try {
                        timeout(time: 5, unit: "SECONDS") {
                            sleep 10
                            echo "Hello World"
                        }
                    } catch ( err ) {
                        // org.jenkinsci.plugins.workflow.steps.FlowInterruptedException
                        echo "${err}"
                    }
                }
            }
        }
        // このステージは実行される
        stage("Hello2") {
            steps {
                echo "Hello World2"
            }
        }
    }
}

try~catch するとリザルトが Success になる
以降のステージも実行される

メモ

Jenkins から Unity のビルドを実行した時に、アプリのビルド完了後に
Unity プロジェクトが終了せずに Jenkins の進行が止まってしまうことがあったので調査

参考サイト様