|
@@ -1,3 +1,5 @@
|
|
|
+PROMO_SDK=[ service_name: 'info_promo-sdk', image: 'web-registration/promo-sdk', repo: 'git@github.com:icruportal/web-sdk-demo.git', dockerfile: 'Dockerfile-promo-sdk' ]
|
|
|
+PROMO_SEO=[ service_name: 'info_promo-seo', image: 'web-registration/promo-seo', repo: 'git@github.com:icruportal/web-registration.git', dockerfile: 'Dockerfile-promo-seo' ]
|
|
|
@Library('jenkins-library-iru@master') _
|
|
|
def Label = "web-registration-promo-build-${UUID.randomUUID().toString()}"
|
|
|
pipeline {
|
|
@@ -13,10 +15,7 @@ pipeline {
|
|
|
}
|
|
|
environment {
|
|
|
CONTEXT='provision@sdsys.office'
|
|
|
- DOCKER_IMAGE='web-registration/promo'
|
|
|
HELM_GIT_URL='ssh://git@git.sdsys.ru:8022/iru/k8s.git'
|
|
|
- APP_GIT_URL='git@github.com:icruportal/web-registration.git'
|
|
|
- SOURCE_GIT_URL='git@github.com:icruportal/web-registration.git'
|
|
|
JENKINS_MAIL='jenkins.dev@sdsys.ru'
|
|
|
DOCKER_REGISTRY='images.sdsys.ru'
|
|
|
VALUES_FILE = ''
|
|
@@ -25,6 +24,11 @@ pipeline {
|
|
|
TAG=''
|
|
|
}
|
|
|
parameters {
|
|
|
+ choice (
|
|
|
+ choices: 'promo-seo\npromo-sdk',
|
|
|
+ description: 'Which repo to use?',
|
|
|
+ name: 'APP-NAME'
|
|
|
+ )
|
|
|
string(
|
|
|
name: "branch",
|
|
|
defaultValue: "release",
|
|
@@ -37,6 +41,26 @@ pipeline {
|
|
|
)
|
|
|
}
|
|
|
stages {
|
|
|
+ stage("Calculate Variables") {
|
|
|
+ steps {
|
|
|
+ script {
|
|
|
+ switch (APP-NAME) {
|
|
|
+ case 'promo-sdk':
|
|
|
+ SOURCE_GIT_URL=PROMO_SDK.repo
|
|
|
+ DOCKER_IMAGE=PROMO_SDK.image
|
|
|
+ SERVICE_NAME=PROMO_SDK.service_name
|
|
|
+ DOCKER_FILE=PROMO_SDK.dockerfile
|
|
|
+ break
|
|
|
+ case 'promo-seo':
|
|
|
+ SOURCE_GIT_URL=PROMO_SEO.repo
|
|
|
+ DOCKER_IMAGE=PROMO_SEO.image
|
|
|
+ SERVICE_NAME=PROMO_SEO.service_name
|
|
|
+ DOCKER_FILE=PROMO_SEO.dockerfile
|
|
|
+ break
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
stage("Prepare to build") {
|
|
|
steps {
|
|
|
script {
|
|
@@ -55,7 +79,10 @@ pipeline {
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
- stage("Build APP") {
|
|
|
+ stage("Build APP PROMO-SEO") {
|
|
|
+ when {
|
|
|
+ expression { params.APP-NAME == 'promo-seo' }
|
|
|
+ }
|
|
|
steps {
|
|
|
script {
|
|
|
echo "Build customer-api"
|
|
@@ -73,7 +100,10 @@ pipeline {
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
- stage("Build Image") {
|
|
|
+ stage("Build Image PROMO-SEO") {
|
|
|
+ when {
|
|
|
+ expression { params.APP-NAME == 'promo-seo' }
|
|
|
+ }
|
|
|
steps {
|
|
|
script {
|
|
|
sh "cp ${SOURCE_DIR}/promo/build/libs/promo-0.0.1-SNAPSHOT.war ."
|
|
@@ -81,48 +111,75 @@ pipeline {
|
|
|
COMMIT = sh(script: "cat version 2> /dev/null", returnStdout: true).trim()
|
|
|
IMAGE_TO_PUSH = "${DOCKER_REGISTRY}/${DOCKER_IMAGE}:${COMMIT}-${BUILD_NUMBER}"
|
|
|
echo "Build ${IMAGE_TO_PUSH} with Kaniko"
|
|
|
- k8sBuildImage.kaniko(IMAGE_TO_PUSH)
|
|
|
+ k8sBuildImage.kaniko(IMAGE_TO_PUSH,,DOCKER_FILE)
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
- stage("Update Helm Chart dev.yaml") {
|
|
|
- steps {
|
|
|
- script {
|
|
|
- TAG_PATH = "images." + DOCKER_IMAGE.split("/")[1]
|
|
|
- echo "Update ${TAG_PATH} to ${IMAGE_TO_PUSH} in ${VALUES_FILE}"
|
|
|
- gitOps.clone(HELM_GIT_URL)
|
|
|
- def data = readYaml file: "${VALUES_FILE}"
|
|
|
- yamlOps.updateBuilder(TAG_PATH, data, IMAGE_TO_PUSH)
|
|
|
- writeYaml file: "${VALUES_FILE}", data: data, overwrite: true
|
|
|
- }
|
|
|
+ stage("Build APP PROMO-SDK") {
|
|
|
+ when {
|
|
|
+ expression { params.APP-NAME == 'promo-sdk' }
|
|
|
}
|
|
|
- }
|
|
|
- stage("Update APP") {
|
|
|
steps {
|
|
|
script {
|
|
|
- RELEASE_NAME = DOCKER_IMAGE.split("/")[0]
|
|
|
- NAMESPACE = DOCKER_IMAGE.split("/")[0]
|
|
|
- try {
|
|
|
- echo "Update APP"
|
|
|
- k8sHelmOps.upgrade(CONTEXT, NAMESPACE, RELEASE_NAME, CHART_PATH, VALUES_FILE)
|
|
|
- }
|
|
|
- catch(err) {
|
|
|
- echo "Recovering APP"
|
|
|
- k8sHelmOps.rollback(CONTEXT, NAMESPACE, RELEASE_NAME)
|
|
|
- throw err
|
|
|
- }
|
|
|
+ echo "Build APP"
|
|
|
+ dir("${SOURCE_DIR}") {
|
|
|
+ buildOps.npm()
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
- stage("Push changes to REPO") {
|
|
|
+ stage("Build Image PROMO-SDK") {
|
|
|
+ when {
|
|
|
+ expression { params.APP-NAME == 'promo-sdk' }
|
|
|
+ }
|
|
|
steps {
|
|
|
script {
|
|
|
- echo "Push changes to Repo"
|
|
|
- COMMIT = "Version update " + DOCKER_IMAGE.split("/")[1]
|
|
|
- gitOps.push(HELM_DIR, COMMIT)
|
|
|
+ IMAGE_TO_PUSH = "${DOCKER_REGISTRY}/${DOCKER_IMAGE}:${COMMIT}-${BUILD_NUMBER}"
|
|
|
+ echo "Build ${IMAGE_TO_PUSH} with Kaniko"
|
|
|
+ dir("${SOURCE_DIR}") {
|
|
|
+ COMMIT = sh(script: "cat version 2> /dev/null", returnStdout: true).trim()
|
|
|
+ k8sBuildImage.kaniko(IMAGE_TO_PUSH,,DOCKER_FILE)
|
|
|
+ }
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
+ // stage("Update Helm Chart dev.yaml") {
|
|
|
+ // steps {
|
|
|
+ // script {
|
|
|
+ // TAG_PATH = "images." + DOCKER_IMAGE.split("/")[1]
|
|
|
+ // echo "Update ${TAG_PATH} to ${IMAGE_TO_PUSH} in ${VALUES_FILE}"
|
|
|
+ // gitOps.clone(HELM_GIT_URL)
|
|
|
+ // def data = readYaml file: "${VALUES_FILE}"
|
|
|
+ // yamlOps.updateBuilder(TAG_PATH, data, IMAGE_TO_PUSH)
|
|
|
+ // writeYaml file: "${VALUES_FILE}", data: data, overwrite: true
|
|
|
+ // }
|
|
|
+ // }
|
|
|
+ // }
|
|
|
+ // stage("Update APP") {
|
|
|
+ // steps {
|
|
|
+ // script {
|
|
|
+ // RELEASE_NAME = DOCKER_IMAGE.split("/")[0]
|
|
|
+ // NAMESPACE = DOCKER_IMAGE.split("/")[0]
|
|
|
+ // try {
|
|
|
+ // echo "Update APP"
|
|
|
+ // k8sHelmOps.upgrade(CONTEXT, NAMESPACE, RELEASE_NAME, CHART_PATH, VALUES_FILE)
|
|
|
+ // }
|
|
|
+ // catch(err) {
|
|
|
+ // echo "Recovering APP"
|
|
|
+ // k8sHelmOps.rollback(CONTEXT, NAMESPACE, RELEASE_NAME)
|
|
|
+ // throw err
|
|
|
+ // }
|
|
|
+ // }
|
|
|
+ // }
|
|
|
+ // }
|
|
|
+ // stage("Push changes to REPO") {
|
|
|
+ // steps {
|
|
|
+ // script {
|
|
|
+ // echo "Push changes to Repo"
|
|
|
+ // COMMIT = "Version update " + DOCKER_IMAGE.split("/")[1]
|
|
|
+ // gitOps.push(HELM_DIR, COMMIT)
|
|
|
+ // }
|
|
|
+ // }
|
|
|
+ // }
|
|
|
}
|
|
|
post {
|
|
|
failure {
|