import java.util.*;
import java.text.SimpleDateFormat;


pipeline {
    agent {
        label "***"
    }

    environment {
        CODE="${params.CODE_URL}"
        PIPELINE_CODE = "***"
        BRANCH="${params.GIT_BRANCH}"
        CERT_ID="${params.CERT_ID}"
        TASK_UUID="${params.TASK_UUID}"
        BUILD_CMD="${params.BUILD_CMD}"
        FROM_USER="${params.FROM_USER}"
        DEPLOY_PATH="${params.DEPLOY_PATH}"
        DEPLOY_CMD="${params.DEPLOY_CMD}"
        DEPLOY_FILE="${params.DEPLOY_FILE}"
        DEPLOY_IP="${params.DEPLOY_IP}"
        COPY_PATH="${params.COPY_PATH}"
        TASK_NUMBER="${params.TASK_NUMBER}"
        DEPLOY_FILE_NAME="${params.DEPLOY_FILE_NAME}"
        DEPLOY_AREA="${params.DEPLOY_AREA}"
        SONAR_ENABLED="${params.SONAR_ENABLED}"
        MVN_RULE_ENABLED="${params.MVN_RULE_ENABLED}"
        TEST_ENABLED="${params.TEST_ENABLED}"
        DEPLOY_PASSWORD="${params.DEPLOY_PASSWORD}"
        SSH_USER="${params.SSH_USER}"
        SSH_PORT="${params.SSH_PORT}"
        PUBLIC_REPOSITORY="${PUBLIC_REPOSITORY}"
        PUBLIC_TAG="${PUBLIC_TAG}"
        PROD_ID="${params.PROD_ID}"
        HEALTH_CHECK_URL="${params.HEALTH_CHECK_URL}"
        MQ_TYPE="${params.MQ_TYPE}"
        DEPLOY_ENV="${params.DEPLOY_ENV}"
        INIT_FAIL="false"


    }

    stages {
        stage('jenkinsInitQueue') {
            steps {

                echo "initializing ..."
                echo "${GIT_COMMIT}"
                echo "${GIT_BRANCH}"
                script {
                    begin = new Date()
                    start_time = begin.format('yyyy-MM-dd HH:mm:ss')
                    DATETIME_TAG = begin.format('yyyyMMddHHmmss')
                    IMAGE_TAG_NAME = 'ts' + DATETIME_TAG
                    echo "init success"
                    echo "${BRANCH}"
					echo "checkout  BEGIN"
					 //拉取代码失败的话如果设置清空空间的话也是会清空的,但是不会清空jenkins拉取的代码
					//def scmVars = checkout([$class: "GitSCM", branches: [[name: "${BRANCH}"]], doGenerateSubmoduleConfigurations: false, extensions: [[$class: "CleanBeforeCheckout", deleteUntrackedNestedRepositories: true]], submoduleCfg: [], userRemoteConfigs: [[credentialsId: "${CERT_ID}", url: "$CODE"]]])
					def scmVars = checkout scmGit(branches: [[name: "${BRANCH}"]], extensions: [[$class: "CleanBeforeCheckout", deleteUntrackedNestedRepositories: true]], userRemoteConfigs: [[credentialsId: "${CERT_ID}", url: "$CODE"]])
					//scmVars.each { k, v -> env[k] = v }
					//sh 'env | grep GIT_'
					// Display the variable using scmVars
					echo "scmVars.GIT_COMMIT"
					echo "${scmVars}"
					echo "1111111111111111111"
					echo "${env}"
					echo "2222222222222222222"
					def aaaaa = env.getEnvironment()
					echo "${aaaaa}"
					echo "3333333333333333333"
					sh 'env'
					echo "4444444444444444444"
					sh 'printenv'
					echo "5555555555555555555"
					echo "${scmVars.GIT_COMMIT}"
					echo "${env.GIT_COMMIT}"
					echo "env.GIT_COMMIT"
					// Displaying the variables saving it as environment variable
					env.GIT_COMMIT = scmVars.GIT_COMMIT
					echo "env.GIT_COMMIT"
					echo "${env.GIT_COMMIT}"
					echo "checkout  END"
					echo "${BRANCH}"
					echo "${CERT_ID}"
					echo "${CODE}"
					echo "${GIT_COMMIT}"
					echo "${GIT_BRANCH}"
					//echo "${BRANCH_NAME}"
					//echo "${GIT_LOCAL_BRANCH}"
					echo "${GIT_URL}"
                    //checkout([$class: "GitSCM", branches: [[name: "dev"]], doGenerateSubmoduleConfigurations: false, extensions: [ [$class: 'RelativeTargetDirectory', relativeTargetDir: 'params']], submoduleCfg: [], userRemoteConfigs: [[credentialsId: "${CERT_ID}", url: "$PIPELINE_CODE"]]])

                }
            }
            // 发送执行通知
            post {
            }

        }


        stage('jenkinsBuildQueue') {
        }

        stage("junitQueue"){
        }

    stage('parall') {
            parallel{
        stage('sonarScancode') {
        }


        stage('deploy') {
            }
        }}}
    }

    post {
        success {
        }
        failure {
        }
        aborted {
        }
    }
}