#!/usr/bin/env groovy

pipeline_worknode = "10.235.74.94"

pipeline {
    agent {
        node {
            label pipeline_worknode
        }
    }
    options {
        timestamps()
        timeout(time: 3, unit: 'HOURS')
    }
    stages {
        stage("prepare") {
            steps {
                sh 'echo prepare'
            }
        }
        stage("build") {
            parallel {
                stage('MergeCI_v3t_ap_linux') {
                    steps{
                        script {
                            try{
                                build job: "MergeCI_v3t_ap_linux", parameters: [string(name: 'TEST_STRING', value: env.TEST_STRING)]
                                env.ap_linux_ret="true"
                            }catch (exc) {
                                env.ap_linux_ret="false"
                                echo "MergeCI_v3t_ap_linux error ${env.ap_linux_ret}"
                            }
                        }
                    }
                }
                stage('MergeCI_v3t_ap_win') {
                    steps {
                        script {
                            try {
                                build job: "MergeCI_v3t_ap_win", parameters: [string(name: 'TEST_STRING', value: env.TEST_STRING)]
                                env.ap_win_ret="true"
                            }catch (exc) {
                                env.ap_win_ret="false"
                                echo "MergeCI_v3t_ap_win error ${env.ap_win_ret}"
                            }
                        }
                    }
                }
            }
        }
        stage("check") {
            steps {
                sh 'echo check'
                script {
                    if (env.ap_win_ret == "true") {
                        echo "ap_win_ret check pass"
                    } else {
                        echo "ap_win_ret check fail"
                    }
                    if (env.ap_linux_ret == "true") {
                        echo "ap_linux_ret check pass"
                    } else {
                        echo "ap_linux_ret check fail"
                    }
               
                }
            }
        }
    }
}
