From a021d96ca6e8f2d089f2d334ed67e8410f27ff74 Mon Sep 17 00:00:00 2001 From: William Petit Date: Fri, 23 Oct 2020 10:57:25 +0200 Subject: [PATCH] Add 'Sentry release' pipeline --- pipelines/sentry.jenkinsfile | 70 ++++++++++++++++++++++++++++++++++++ 1 file changed, 70 insertions(+) create mode 100644 pipelines/sentry.jenkinsfile diff --git a/pipelines/sentry.jenkinsfile b/pipelines/sentry.jenkinsfile new file mode 100644 index 0000000..1aa8a0a --- /dev/null +++ b/pipelines/sentry.jenkinsfile @@ -0,0 +1,70 @@ +pipeline { + agent { + docker { + image "getsentry/sentry-cli" + args "--entrypoint=" + } + } + + environment { + projectDir = "${env.project_name}_${env.BUILD_ID}" + } + + stages { + + stage("Clone repository") { + steps { + checkout scm: + [ + $class: 'GitSCM', + userRemoteConfigs: [[url: env.repository_url, credentialsId: 'jenkins-forge-ssh']], + branches: [[name: env.ref]], + extensions: [ + [$class: 'RelativeTargetDirectory', relativeTargetDir: env.projectDir ], + [$class: 'CloneOption', noTags: false, shallow: false, depth: 0, reference: ''], + [$class: 'WipeWorkspace' ] + ] + ], + changelog: false, + poll: false + } + } + + + stage('Create sentry release') { + steps { + dir(env.projectDir) { + withCredentials([ + string(credentialsId: 'sentry-url', variable: 'SENTRY_URL'), + string(credentialsId: 'sentry-release-auth-token', variable: 'SENTRY_AUTH_TOKEN') + ]) { + sh ''' + SENTRY_CMD="sentry-cli --auth-token \"${SENTRY_AUTH_TOKEN}\" --url \"${SENTRY_URL}\"" + PROJECT_VERSION=$(sentry-cli releases propose-version) + + $SENTRY_CMD \ + releases \ + --org "${sentry_org}" \ + new \ + -p "${sentry_project}" ${PROJECT_VERSION} + + ( + $SENTRY_CMD \ + releases \ + --org "${sentry_org}" \ + set-commits --local \ + ${PROJECT_VERSION} || exit 0 + ) + + $SENTRY_CMD \ + releases \ + --org "${sentry_org}" \ + finalize \ + ${PROJECT_VERSION} + ''' + } + } + } + } + } +} \ No newline at end of file