pipeline { agent { label 'linux' } options { buildDiscarder(logRotator(numToKeepStr: '35', daysToKeepStr: '21')) gitLabConnection('GitLabConnectionJenkins') } environment { BUILD_OPTIONS = ' ' SDK_BRANCH = ' ' } stages { stage('Get current build description'){ steps{ script{ env.currentBuildDescription = currentBuild.description } } } stage('get additional build parameters'){ when { allOf { expression { env.gitlabTriggerPhrase != null } expression { env.gitlabTriggerPhrase.contains('BUILD_OPTIONS') } } } steps { script{ BUILD_OPTIONS = sh(script: 'echo "$gitlabTriggerPhrase" | grep BUILD_OPTIONS | awk -F "BUILD_OPTIONS=" \'{print \$2}\' | cut -d"\"" -f2', returnStdout: true).trim() println BUILD_OPTIONS } } post{ always { script{ if (currentBuild.currentResult == 'FAILURE'){ addGitLabMRComment(comment: ":red_circle: ${env.JOB_NAME} FAILURE when getting the additional build parameters :worried:
Build results: [Jenkins [${env.JOB_NAME} ${env.BUILD_DISPLAY_NAME}]](${env.RUN_DISPLAY_URL})
Commit: ${env.GIT_COMMIT}" ) } } } } } stage('get sdk branch'){ when { expression { env.gitlabMergeRequestDescription.contains('SDK_SUBMODULE_TEST') } } steps { script{ println "${env.gitlabMergeRequestDescription}" env.SDK_BRANCH = sh(script: 'echo "$gitlabMergeRequestDescription" | grep SDK_SUBMODULE_TEST | awk -F "SDK_SUBMODULE_TEST=" \'{print \$2}\' | cut -d" " -f1', returnStdout: true).trim() println SDK_BRANCH } } post{ always { script{ if (currentBuild.currentResult == 'FAILURE'){ addGitLabMRComment(comment: ":red_circle: ${env.JOB_NAME} FAILURE when getting the SDK branch :worried:
Build results: [Jenkins [${env.JOB_NAME} ${env.BUILD_DISPLAY_NAME}]](${env.RUN_DISPLAY_URL})
Commit: ${env.GIT_COMMIT}" ) } } } } } stage('build MEGASync'){ parallel { stage('Build macOS') { when { anyOf { expression { env.gitlabTriggerPhrase != null && ( env.gitlabTriggerPhrase == 'trigger compilation' || env.gitlabTriggerPhrase.startsWith('trigger compilation macos')) } allOf{ expression { env.gitlabTriggerPhrase == null } triggeredBy "GitlabWebhookCause" } } } steps { gitlabCommitStatus(name: 'MacOS build') { script { echo "Triggering MEGAsync job for macOS." def triggeredBuild = build job: 'MEGASync-MRs-private', wait: true, propagate: false, parameters: [ string(name: 'SOURCE_BRANCH', value: "${env.gitlabSourceBranch}"), string(name: 'TARGET_BRANCH', value: "${env.gitlabTargetBranch}"), booleanParam(name: 'BUILD_MAC', value: true), string(name: 'BUILD_OPTIONS', value: "${BUILD_OPTIONS}"), string(name: 'BUILD_DESCRIPTION', value: "${env.currentBuildDescription}"), string(name: 'SDK_BRANCH', value: "${SDK_BRANCH}") ] env.TRIGGERED_BUILD_URL_MACOS = triggeredBuild.getAbsoluteUrl() env.TRIGGERED_PROJECT_NAME_MACOS = triggeredBuild.getProjectName() env.TRIGGERED_BUILD_DISPLAY_NAME_MACOS = triggeredBuild.getFullDisplayName() } } } post{ always { script{ if (currentBuild.currentResult == 'SUCCESS'){ addGitLabMRComment(comment: ":white_check_mark: ${env.TRIGGERED_PROJECT_NAME_MACOS} :green_apple: macOS SUCCEEDED :muscle:
Build results: [Jenkins [${env.TRIGGERED_BUILD_DISPLAY_NAME_MACOS}]](${env.TRIGGERED_BUILD_URL_MACOS})
Commit: ${env.GIT_COMMIT}" ) updateGitlabCommitStatus(name: 'MacOS build', state: 'success') } if (currentBuild.currentResult == 'FAILURE'){ addGitLabMRComment(comment: ":red_circle: ${env.TRIGGERED_PROJECT_NAME_MACOS} :green_apple: macOS FAILURE :worried:
Build results: [Jenkins [${env.TRIGGERED_BUILD_DISPLAY_NAME_MACOS}]](${env.TRIGGERED_BUILD_URL_MACOS})
Commit: ${env.GIT_COMMIT}" ) updateGitlabCommitStatus(name: 'MacOS build', state: 'failed') error "Job failed" } if (currentBuild.currentResult == 'ABORTED'){ addGitLabMRComment(comment: ":interrobang: ${env.TRIGGERED_PROJECT_NAME_MACOS} :green_apple: macOS ABORTED :confused:
Build results: [Jenkins [${env.TRIGGERED_BUILD_DISPLAY_NAME_MACOS}]](${env.TRIGGERED_BUILD_URL_MACOS})
Commit: ${env.GIT_COMMIT}" ) updateGitlabCommitStatus(name: 'MacOS build', state: 'canceled') error "Job failed" } if (currentBuild.currentResult == 'UNSTABLE'){ addGitLabMRComment(comment: ":interrobang: ${env.TRIGGERED_PROJECT_NAME_MACOS} :green_apple: macOS UNSTABLE :confused:
Build results: [Jenkins [${env.TRIGGERED_BUILD_DISPLAY_NAME_MACOS}]](${env.TRIGGERED_BUILD_URL_MACOS})
Commit: ${env.GIT_COMMIT}" ) updateGitlabCommitStatus(name: 'MacOS build', state: 'failed') error "Job failed" } } } } } stage('Build Linux') { when { anyOf { expression { env.gitlabTriggerPhrase != null && ( env.gitlabTriggerPhrase == 'trigger compilation' || env.gitlabTriggerPhrase.startsWith('trigger compilation linux')) } allOf{ expression { env.gitlabTriggerPhrase == null } triggeredBy "GitlabWebhookCause" } } } steps { gitlabCommitStatus(name: 'Linux build') { script { echo "Triggering MEGAsync job for Linux." def triggeredBuild = build job: 'MEGASync-MRs-private', wait: true, propagate: false, parameters: [ string(name: 'SOURCE_BRANCH', value: "${env.gitlabSourceBranch}"), string(name: 'TARGET_BRANCH', value: "${env.gitlabTargetBranch}"), booleanParam(name: 'BUILD_LINUX', value: true), string(name: 'BUILD_OPTIONS', value: "${BUILD_OPTIONS}"), string(name: 'BUILD_DESCRIPTION', value: "${env.currentBuildDescription}"), string(name: 'SDK_BRANCH', value: "${SDK_BRANCH}") ] env.TRIGGERED_BUILD_URL_LINUX = triggeredBuild.getAbsoluteUrl() env.TRIGGERED_PROJECT_NAME_LINUX = triggeredBuild.getProjectName() env.TRIGGERED_BUILD_DISPLAY_NAME_LINUX = triggeredBuild.getFullDisplayName() } } } post{ always { script{ if (currentBuild.currentResult == 'SUCCESS'){ addGitLabMRComment(comment: ":white_check_mark: ${env.TRIGGERED_PROJECT_NAME_LINUX} :penguin: LINUX SUCCEEDED :muscle:
Build results: [Jenkins [${env.TRIGGERED_BUILD_DISPLAY_NAME_LINUX}]](${env.TRIGGERED_BUILD_URL_LINUX})
Commit: ${env.GIT_COMMIT}" ) updateGitlabCommitStatus(name: 'Linux build', state: 'success') } if (currentBuild.currentResult == 'FAILURE'){ addGitLabMRComment(comment: ":red_circle: ${env.TRIGGERED_PROJECT_NAME_LINUX} :penguin: Linux FAILURE :worried:
Build results: [Jenkins [${env.TRIGGERED_BUILD_DISPLAY_NAME_LINUX}]](${env.TRIGGERED_BUILD_URL_LINUX})
Commit: ${env.GIT_COMMIT}" ) updateGitlabCommitStatus(name: 'Linux build', state: 'failed') error "Job failed" } if (currentBuild.currentResult == 'ABORTED'){ addGitLabMRComment(comment: ":interrobang: ${env.TRIGGERED_PROJECT_NAME_LINUX} :penguin: Linux ABORTED :confused:
Build results: [Jenkins [${env.TRIGGERED_BUILD_DISPLAY_NAME_LINUX}]](${env.TRIGGERED_BUILD_URL_LINUX})
Commit: ${env.GIT_COMMIT}" ) updateGitlabCommitStatus(name: 'Linux build', state: 'canceled') error "Job failed" } if (currentBuild.currentResult == 'UNSTABLE'){ addGitLabMRComment(comment: ":interrobang: ${env.TRIGGERED_PROJECT_NAME_LINUX} :penguin: Linux UNSTABLE :confused:
Build results: [Jenkins [${env.TRIGGERED_BUILD_DISPLAY_NAME_LINUX}]](${env.TRIGGERED_BUILD_URL_LINUX})
Commit: ${env.GIT_COMMIT}" ) updateGitlabCommitStatus(name: 'Linux build', state: 'failed') error "Job failed" } } } } } stage('Build Windows') { when { anyOf { expression { env.gitlabTriggerPhrase != null && ( env.gitlabTriggerPhrase == 'trigger compilation' || env.gitlabTriggerPhrase.startsWith('trigger compilation windows')) } allOf{ expression { env.gitlabTriggerPhrase == null } triggeredBy "GitlabWebhookCause" } } } steps { gitlabCommitStatus(name: 'Windows build') { script { echo "Triggering MEGAsync job for Windows." def triggeredBuild = build job: 'MEGASync-MRs-private', wait: true, propagate: false, parameters: [ string(name: 'SOURCE_BRANCH', value: "${env.gitlabSourceBranch}"), string(name: 'TARGET_BRANCH', value: "${env.gitlabTargetBranch}"), booleanParam(name: 'BUILD_WINDOWS', value: true), string(name: 'BUILD_OPTIONS', value: "${BUILD_OPTIONS}"), string(name: 'BUILD_DESCRIPTION', value: "${env.currentBuildDescription}"), string(name: 'SDK_BRANCH', value: "${SDK_BRANCH}") ] env.TRIGGERED_BUILD_URL_WINDOWS = triggeredBuild.getAbsoluteUrl() env.TRIGGERED_PROJECT_NAME_WINDOWS = triggeredBuild.getProjectName() env.TRIGGERED_BUILD_DISPLAY_NAME_WINDOWS = triggeredBuild.getFullDisplayName() } } } post{ always { script{ if (currentBuild.currentResult == 'SUCCESS'){ addGitLabMRComment(comment: ":white_check_mark: ${env.TRIGGERED_PROJECT_NAME_WINDOWS} Windows SUCCEEDED :muscle:
Build results: [Jenkins [${env.TRIGGERED_BUILD_DISPLAY_NAME_WINDOWS}]](${env.TRIGGERED_BUILD_URL_WINDOWS})
Commit: ${env.GIT_COMMIT}" ) updateGitlabCommitStatus(name: 'Windows build', state: 'success') } if (currentBuild.currentResult == 'FAILURE'){ addGitLabMRComment(comment: ":red_circle: ${env.TRIGGERED_PROJECT_NAME_WINDOWS} Windows FAILURE :worried:
Build results: [Jenkins [${env.TRIGGERED_BUILD_DISPLAY_NAME_WINDOWS}]](${env.TRIGGERED_BUILD_URL_WINDOWS})
Commit: ${env.GIT_COMMIT}" ) updateGitlabCommitStatus(name: 'Windows build', state: 'failed') error "Job failed" } if (currentBuild.currentResult == 'ABORTED'){ addGitLabMRComment(comment: ":interrobang: ${env.TRIGGERED_PROJECT_NAME_WINDOWS} Windows ABORTED :confused:
Build results: [Jenkins [${env.TRIGGERED_BUILD_DISPLAY_NAME_WINDOWS}]](${env.TRIGGERED_BUILD_URL_WINDOWS})
Commit: ${env.GIT_COMMIT}" ) updateGitlabCommitStatus(name: 'Windows build', state: 'canceled') error "Job failed" } if (currentBuild.currentResult == 'UNSTABLE'){ addGitLabMRComment(comment: ":interrobang: ${env.TRIGGERED_PROJECT_NAME_WINDOWS} Windows UNSTABLE :confused:
Build results: [Jenkins [${env.TRIGGERED_BUILD_DISPLAY_NAME_WINDOWS}]](${env.TRIGGERED_BUILD_URL_WINDOWS})
Commit: ${env.GIT_COMMIT}" ) updateGitlabCommitStatus(name: 'Windows build', state: 'failed') error "Job failed" } } } } } } } } }