Created
February 13, 2023 11:16
-
-
Save heristop/add5cd93cd581f13ad8d1c6d5df38ce2 to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
pipeline { | |
agent any | |
options { | |
buildDiscarder(logRotator(daysToKeepStr: '1')) | |
} | |
stages { | |
stage('Deploy CronJobs') { | |
steps { | |
script { | |
// Get code from repository | |
git url: 'https://my-git-repo', branch: 'main' | |
} | |
script { | |
openshift.withCluster() { | |
openshift.withProject("${env.PROJECT}-val") { | |
// Retrieve Tag description | |
IMAGE = openshift.raw("describe istag ${env.PROJECT}:prod") | |
} | |
openshift.withProject("${env.PROJECT}-prod") { | |
// Display current CronJobs | |
def cronJobsList = openshift.selector("cronjobs") | |
echo "CronJobs: ${cronJobsList.out}" | |
// Retrieve Image digest | |
def imageName = sh(returnStdout: true, script: "echo \"${IMAGE.out}\" | grep \"Image Name:\" | sed \"s/Image Name:\tsha256://\"").trim() | |
echo "IMAGE: ${imageName}" | |
// List all CronJobs we need to recreate | |
def cronJobList = [ | |
'cronjob-1', | |
'cronjob-2', | |
'cronjob-3' | |
] | |
if ("true" == "${FORCE_CRONJOBS_CREATION}") { | |
echo "apply configMap openshift/configMaps/prod-config.yaml" | |
openshift.apply("-f openshift/configMaps/prod-config.yaml") | |
} | |
for (cronJob in cronJobList) { | |
if ("true" == "${FORCE_CRONJOBS_CREATION}") { | |
// Delete CronJob | |
def podCronJobList = openshift.raw("get cronjob") | |
int countCronJob = sh ( | |
script: "echo '${podCronJobList.out}' | grep '${cronJob}' | wc -l", | |
returnStdout: true | |
) as int | |
if (countCronJob > 0) { | |
openshift.raw("delete cronjob/${cronJob}") | |
echo "Deleted ${cronJob}" | |
} | |
// Create CronJob | |
openshift.raw("create -f openshift/cronjobs/prod/${cronJob}.yaml") | |
echo "Created ${cronJob}" | |
} | |
// Patch CronJob | |
def jsonPatch = "{\"spec\":{\"jobTemplate\":{\"spec\":{\"template\":{\"spec\":{\"containers\":[{\"name\":\"cronjob-prod\",\"image\":\"docker-registry.default.svc:5000/fondinnov-api-val/fondinnov-api@sha256:${imageName}\"}]}}}}}}" | |
echo "Patch: ${jsonPatch}" | |
def patch = openshift.raw("patch cronjob/${cronJob} --patch='$jsonPatch'") | |
echo "Result: ${patch.out}" | |
} | |
// Display new CronJobs | |
def newCronJobsList = openshift.selector("cronjobs") | |
echo "CronJobs: ${newCronJobsList.out}" | |
} | |
} | |
} | |
} | |
} | |
} | |
post { | |
always { | |
deleteDir() | |
} | |
} | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment