#!/usr/bin/env groovy
def appName = 'shipitclicker'
def dockerfile = 'chapter7/Dockerfile'
def appVersion = '0.5.3'
def propFileName = "build.properties"
def helmArchive = "helm.tar.gz"
def semVer
def getSemVer(appVersion, commitHash) {
      "${appVersion}-${env.BUILD_ID}.${commitHash}"
}
def getRegistry() {
    withCredentials([string(
        credentialsId: 'shipit.ecr.container.id',
        variable: 'registryId')]) {
        "${registryId}"
    }
}
def getImageName(registry, appName, semVer) {
  "${registry}/dockerfordevelopers/${appName}:${semVer}"
}
def getTarget() {
  env.BRANCH_NAME == 'staging' ? 'staging' : 'prod'
}
pipeline {
  agent any
  stages {
    stage('build') {
      steps {
        checkout scm
        script {
          // Podziękowania dla https://github.com/jenkinsci/pipeline-examples/blob/master/pipeline-examples/gitcommit/gitcommit.groovy
          shortCommit = sh(
            returnStdout: true, 
            script: "git log -n 1 --pretty=format:'%h'").trim()
          semVer = getSemVer(appVersion, shortCommit)
          def imageName
          def registry = getRegistry()
          docker.withRegistry("https://${registry}", 'ecr:us-east-2:shipit.aws.key') {
            imageName = getImageName(registry, appName, semVer)
            def image = docker.build(
              imageName,
              "-f ${dockerfile} --network host ./chapter9"
            )
            image.push()
          }
          def propFileContents = """
semVer=${semVer}
imageName=${imageName}
"""
          writeFile file:propFileName, text: propFileContents
          }
      }
    }
    stage('archive') {
      steps {
        sh "cd chapter9 && tar cvfz ${WORKSPACE}/${helmArchive} shipitclicker"
        archiveArtifacts("${propFileName},${helmArchive}")
      }
    }
  }
}
