122 lines
4.4 KiB
Groovy
122 lines
4.4 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 "apt install -y kubectl"
|
|
sh "kubectl get serviceaccounts/cicd -o yaml"
|
|
}
|
|
|
|
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') {
|
|
kubernetesDeploy configs: '**/configuration/kubernetes/*.yaml',
|
|
deleteResource: true,
|
|
dockerCredentials: [[credentialsId: 'Registry', url: "${env.DOCKER_REPOSITORY_URL}"]],
|
|
kubeConfig: [path: ''],
|
|
kubeconfigId: 'Kubernetes',
|
|
secretName: '',
|
|
ssh: [sshCredentialsId: '*', sshServer: ''],
|
|
textCredentials: [certificateAuthorityData: '', clientCertificateData: '', clientKeyData: '', serverUrl: 'https://']
|
|
}
|
|
|
|
stage('Tag Repository') {
|
|
|
|
withDockerServer([uri: "${env.DOCKER_REPOSITORY_URL}"]) {
|
|
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
|
|
}
|