pipeline {
    agent {
        kubernetes {
            yaml """
apiVersion: v1
kind: Pod
spec:
  containers:
  - name: groovy
    image: jenkins/inbound-agent:latest-jdk17-preview
    command: ['cat']
    tty: true
    imagePullPolicy: Always
"""
        }
    }
    environment {
        GIT_HASH = GIT_COMMIT.take(7)
        buildNumber = ''
        dockerImage = ''
        NEXUS_VERSION = "nexus3"
        NEXUS_PROTOCOL = "http"
        NEXUS_URL = "192.168.1.76:8081"
        NEXUS_MVN_PORT = "8081"
        NEXUS_REGISTRY_PORT = "8181"
        NEXUS_REPOSITORY = "maven-nexus-repo"
        NEXUS_CREDENTIAL_ID = "nexus"
        PRJ_VERSION = "0.0.1"
    }
    options {
        skipDefaultCheckout false
    }
    stages {
        stage('Source checkout') {
            steps {
                container('groovy') {
                    checkout scm
                }
            }
        }


        stage('project info') {
            steps {
                container('groovy') {
                    script {
                        def version = sh(
                            script: "./gradlew properties -q | grep \"description:\" | awk '{print \$2}'",
                            returnStdout: true
                        ).trim()
                        sh "echo Building project in version: $version"
                        PRJ_VERSION = version;
                        sh "echo EnvVar project in version: $PRJ_VERSION"
                        buildNumber = "${BUILD_NUMBER}".padLeft(4,'0')
                        sh "echo Build number: $buildNumber"
                        dockerImage = "${BRANCH_NAME}:${buildNumber}-${GIT_HASH}"
                        sh "echo Docker image: $dockerImage"
                    }
                }
            }
        }

        stage('npm install') {
            steps {
                container('groovy') {
                    sh "./gradlew npm_install -PnodeInstall --no-daemon"
                }
            }
        }


        stage('Containerize') {
            steps {
                container('groovy') {
                    withCredentials([usernamePassword(credentialsId: 'nexus-docker', usernameVariable: 'USERNAME', passwordVariable: 'PASSWORD')]) {
                        sh "./gradlew bootJar jib -x test --image=docker.bigc.it/${PRJ_VERSION}/${dockerImage} -Djib.to.auth.username=${USERNAME} -Djib.to.auth.password=${PASSWORD} --no-daemon"
                    }
                }
            }
        }
    }

}
