Jenkinsfile 3.15 KiB
@Library('deploy-conf') _
node() {
    try {
     timestamps {
        ansiColor('xterm') {
            String ANSI_GREEN = "\u001B[32m"
            String ANSI_NORMAL = "\u001B[0m"
            String ANSI_BOLD = "\u001B[1m"
            String ANSI_RED = "\u001B[31m"
            if (params.cdn_enable == "true") {
                stage('Initialize repos') {
//                    cleanWs()
                    checkout scm
                    values = docker_params()
                    currentWs = sh(returnStdout: true, script: 'pwd').trim()
                    ansiblePlaybook = "$currentWs/ansible/assets-upload.yml"
                    ansibleExtraArgs = "--syntax-check"
                    values.put('currentWs', currentWs)
                    values.put('ansiblePlaybook', ansiblePlaybook)
                    values.put('ansibleExtraArgs', ansibleExtraArgs)
                    ansible_playbook_run(values)
                stage('Deploy CDN') {
                    def filePath = "$WORKSPACE/ansible/inventory/env/common.yml"
                    cdnUrl = sh(script: """grep sunbird_portal_cdn_url $filePath | grep -v '^#' | grep --only-matching --perl-regexp 'http(s?):\\/\\/[^ \"\\(\\)\\<\\>]*' || true""", returnStdout: true).trim()
                    if (cdnUrl == '') {
                        println(ANSI_BOLD + ANSI_RED + "Uh oh! cdn_enable variable is true, But no sunbird_portal_cdn_url in $filePath" + ANSI_NORMAL)
                        error 'Error: sunbird_portal_cdn_url is not set'
                    else {
                        println cdnUrl
                        commitHash = sh(script: "jq -r '.commit_hash' metadata.json", returnStdout: true).trim()
                        dir('sunbird-portal') {
                            checkout changelog: false, poll: false, scm: [$class: 'GitSCM', branches: [[name: commitHash]], doGenerateSubmoduleConfigurations: false, extensions: [], submoduleCfg: [], userRemoteConfigs: [[url: 'https://github.com/Sunbird-Ed/SunbirdEd-portal.git']]]
                            sh "./build-cdn.sh ${cdnUrl} ${commitHash}"
                        ansibleExtraArgs = "--extra-vars assets=$currentWs/sunbird-portal/src/app/dist --extra-vars cdn_file_path=$currentWs/sunbird-portal/src/app/dist/index_cdn.ejs --vault-password-file /var/lib/jenkins/secrets/vault-pass"
                        values.put('ansibleExtraArgs', ansibleExtraArgs)
                        ansible_playbook_run(values)
                        archiveArtifacts 'metadata.json, sunbird-portal/src/app/dist/index_cdn.ejs'
                        currentBuild.description = "Image tag: " + values.image_tag + ", CDN Hash: " + commitHash
            else {
                copyArtifacts projectName: params.absolute_job_path, flatten: true
                archiveArtifacts 'metadata.json'
                image_tag = sh(returnStdout: true, script: 'jq -r .image_tag metadata.json').trim()
                currentBuild.description = "${image_tag}"
    catch (err) {
        currentBuild.result = "FAILURE"
        throw err