130 lines
4.6 KiB
Groovy

#!/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<String, Object> 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: '<ant-glob-pattern-for-resource-config-paths>', // REQUIRED
// enableConfigSubstitution: false,
//
// secretNamespace: "${env.NAMESPACE}",
// secretName: '<secret-name>',
// dockerCredentials: [
// [credentialsId: '<credentials-id-for-docker-hub>'],
// [credentialsId: '<credentials-id-for-other-private-registry>', url: '<registry-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
}