#!/usr/bin/env groovy env.APPLICATION_NAME = 'db-gateway' env.APPLICATION_LABEL = 'gateway' env.GIT_BRANCH = 'master' env.GIT_REPOSITORY_PATH = "github.com/andyjk15/${env.APPLICATION_NAME}.git" env.GIT_REPOSITORY_URL = "https://${env.GIT_REPOSITORY_PATH}" env.GITHUB_CREDENTIALS_ID = 'Registry' env.DOCKER_REPOSITORY = 'registry.cryptosky.me' env.DOCKER_REPOSITORY_URL = "https://${env.DOCKER_REPOSITORY}" env.NAMESPACE = 'production' env.SLAVE_LABEL = "cryptosky-aio-build" env.CPU_REQUESTS = '1' env.CPU_LIMIT = '2' env.RAM_REQUEST = '500MiB' env.RAM_LIMIT = '1Gi' def mvn( String gloals ) { sh "mvn -s configuration/settings.xml --show-version --batch-mode ${gloals}" } String get_application_version() { pom = readMavenPom file: 'pom.xml' "${pom.version}-b${env.BUILD_NUMBER}" } @NonCPS def applyResource(String environment, String resourcePath, Map parameters) { String command = "kubectl apply --filename ${resourcePath}" parameters.each { String key, Object value -> command += " --param=${key}='${value}'" } command += "| oc --namespace ${environment} apply --filename -" sh "${command}" } def deploy( Integer replicas ) { // rollout latest // get rollout status // set triggers } try { timestamps { node ("${env.SLAVE_LABEL}") { stage('Initialise') { checkout([$class: 'GitSCM', branches: [[name: 'master']], doGenerateSubmoduleConfigurations: false, extensions: [], submoduleCfg: [], userRemoteConfigs: [[credentialsId: 'Github', url: 'https://github.com/andyjk15/db-gateway.git']]]) env.APPLICATION_VERSION = get_application_version() mvn '--version' sh "java -version" sh "python3 --version" } stage('Build Artifact') { mvn 'compile' } stage('Test Artifact') { try { mvn 'verify -DskipUTs -DskipTests' } finally { mvn 'test' } } stage('Build Image') { mvn 'clean package -DskipTests' sh "sed -i 's/REPOSITORY/${env.DOCKER_REPOSITORY}/g' configuration/kubernetes/deployment.yaml" sh "sed -i 's/IMAGE/${env.APPLICATION_NAME}:${env.APPLICATION_VERSION}/g' configuration/kubernetes/deployment.yaml" sh "sed -i 's/RESOURCE_NAME/${env.APPLICATION_NAME}/g' configuration/kubernetes/deployment.yaml" sh "sed -i 's/LABEL/${env.APPLICATION_LABEL}/g' configuration/kubernetes/deployment.yaml" sh "sed -it 's/RESOURCE_NAME/${env.APPLICATION_NAME}/g' configuration/kubernetes/service.yaml" sh "sed -it 's/LABEL/${env.APPLICATION_LABEL}/g' configuration/kubernetes/service.yaml" } stage('Deploy') { withCredentials([kubeconfigContent(credentialsId: 'Kubernetes', variable: 'CONFIG')]) { echo $CONFIG } // kubernetesDeploy(kubeconfigId: 'Kubernetes', // REQUIRED // // configs: '', // REQUIRED // enableConfigSubstitution: false, // // secretNamespace: "${env.NAMESPACE}", // secretName: '', // dockerCredentials: [ // [credentialsId: ''], // [credentialsId: '', url: ''], // ] // ) deploy() } stage('Tag Repository') { withDockerServer([uri: "tcp://registry.cryptosky.me:4243"]) { withDockerRegistry([credentialsId: 'Registry', url: "${env.DOCKER_REPOSITORY_URL}"]) { def image = docker.build("${env.DOCKER_REPOSITORY}/db-gateway:${env.APPLICATION_VERSION}") image.push() def latest = docker.build("${env.DOCKER_REPOSITORY}/db-gateway:latest") latest.push() } } withCredentials( [usernamePassword( credentialsId: env.BITBUCKET_CREDENTIALS_ID, passwordVariable: 'GIT_PASSWORD', usernameVariable: 'GIT_USERNAME' )] ) { sh "git tag ${env.APPLICATION_VERSION}" sh "git push https://${GIT_USERNAME}:${GIT_PASSWORD}@${env.GIT_REPOSITORY_PATH} ${env.APPLICATION_VERSION}" } } } } } catch ( exception ) { throw exception }