@Library('gm-pipeline-library') _

pipeline {
    agent any

    options {
        // Console output add timestamps
        timestamps()

         // Disallow concurrent executions of the Pipeline
        disableConcurrentBuilds()

        // On failure, retry the entire Pipeline the specified number of times.
        retry(1)
    }

    parameters {
        choice(name: 'cache', choices: ['', '--no-cache'], description: 'docker build 是否使用cache,默认使用,不使用为--no-cache')
    }

    environment {
        // Image Tag  branch.time.hash
        TAG = dockerTag()

        // Image Full Tag
        IMAGE = "${DOCKER_REGISTRY}/gm-backend/graces:$TAG"
    }

    stages {
        stage("Begin") {
            steps {
                dingNotify "before"
            }
        }
        stage('Build Image') {
            steps {
                sh "docker build . ${params.cache} -f ./Dockerfile -t $IMAGE"
                sh "docker push $IMAGE"
            }
        }
    }

    post {
        always {
            dingNotify "after", "${currentBuild.currentResult}"
        }
    }
}
