pipeline {
    agent any

    stages {
        stage('Tag git commit') {
            steps {
                script {
                    sshagent(['jenkins']) {
                        sh """
                            git config user.email "jenkins"
                            git config user.name "jenkins@dinauer-paf.de"

                            git tag -a build-${env.BUILD_NUMBER} -m "Jenkins Build ${env.BUILD_NUMBER}"

                            git push origin build-${env.BUILD_NUMBER}
                        """
                    }
                }
            }
        }
        stage('Set Image Name') {
            steps {
                script {
                    env.IMAGE = "harbor.dinauer.dev/kubooboo/frontend:${env.BUILD_NUMBER}";
                }
            }
        }
        stage('Build Image') {
            steps {
                script {
                    sh "docker build --no-cache -t ${env.IMAGE} ."
                }
            }
        }
        stage('Push Image to Docker Hub') {
            steps {
                script {
                    withCredentials([usernamePassword(credentialsId: 'harbor', usernameVariable: 'USERNAME', passwordVariable: 'PASSWORD')]) {
                        sh 'echo ${PASSWORD} | docker login harbor.dinauer.dev -u ${USERNAME} --password-stdin'
                        sh "docker push ${env.IMAGE}"
                        sh "docker logout harbor.dinauer.dev"
                    }
                }
            }
        }
        stage('Remove image from host') {
            steps {
                script {
                    sh "docker image rm --force ${env.IMAGE}"
                }
            }
        }
    }
}