convert to using isChangeMerged() helper
refs DE-173 Test Plan: 1. Ensure that normal pre-merge build works 2. Ensure that normal post-merge build works 3. Ensure that pre-merge build requires a custom build-registry-path for the change-merged flag 4. Ensure that the post-merge build ignores the build-registry-path for the merge images. Change-Id: I02bb3cfe9bff88c612cc77427ac301b9f1544abc Reviewed-on: https://gerrit.instructure.com/c/canvas-lms/+/244276 Tested-by: Service Cloud Jenkins <svc.cloudjenkins@instructure.com> Reviewed-by: Alex Slaughter <aslaughter@instructure.com> QA-Review: Alex Slaughter <aslaughter@instructure.com> Product-Review: Alex Slaughter <aslaughter@instructure.com>
This commit is contained in:
parent
2670abe8a8
commit
2cd95484f0
|
@ -82,10 +82,6 @@ def isPatchsetPublishable() {
|
||||||
env.PATCHSET_TAG == env.PUBLISHABLE_TAG
|
env.PATCHSET_TAG == env.PUBLISHABLE_TAG
|
||||||
}
|
}
|
||||||
|
|
||||||
def isPatchsetSlackableOnFailure() {
|
|
||||||
env.SLACK_MESSAGE_ON_FAILURE == 'true' && env.GERRIT_EVENT_TYPE == 'change-merged'
|
|
||||||
}
|
|
||||||
|
|
||||||
def cleanupFn(status) {
|
def cleanupFn(status) {
|
||||||
ignoreBuildNeverStartedError {
|
ignoreBuildNeverStartedError {
|
||||||
try {
|
try {
|
||||||
|
@ -114,10 +110,27 @@ def postFn(status) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// These functions are intentionally pinned to GERRIT_EVENT_TYPE == 'change-merged' to ensure that real post-merge
|
||||||
|
// builds always run correctly. We intentionally ignore overrides for version pins, docker image paths, etc when
|
||||||
|
// running real post-merge builds.
|
||||||
|
// =========
|
||||||
|
def getBuildImage() {
|
||||||
|
return env.GERRIT_EVENT_TYPE == 'change-merged' ? configuration.buildRegistryPathDefault() : configuration.buildRegistryPath()
|
||||||
|
}
|
||||||
|
|
||||||
|
def getPatchsetTag() {
|
||||||
|
return env.GERRIT_EVENT_TYPE == 'change-merged' ? imageTag.patchsetDefault() : imageTag.patchset()
|
||||||
|
}
|
||||||
|
|
||||||
def getPluginVersion(plugin) {
|
def getPluginVersion(plugin) {
|
||||||
return env.GERRIT_EVENT_TYPE == 'change-merged' ? 'master' : configuration.getString("pin-commit-$plugin", "master")
|
return env.GERRIT_EVENT_TYPE == 'change-merged' ? 'master' : configuration.getString("pin-commit-$plugin", "master")
|
||||||
}
|
}
|
||||||
|
|
||||||
|
def isPatchsetSlackableOnFailure() {
|
||||||
|
return env.SLACK_MESSAGE_ON_FAILURE == 'true' && env.GERRIT_EVENT_TYPE == 'change-merged'
|
||||||
|
}
|
||||||
|
// =========
|
||||||
|
|
||||||
pipeline {
|
pipeline {
|
||||||
agent none
|
agent none
|
||||||
options {
|
options {
|
||||||
|
@ -130,7 +143,7 @@ pipeline {
|
||||||
GERRIT_URL = "$GERRIT_HOST:$GERRIT_PORT"
|
GERRIT_URL = "$GERRIT_HOST:$GERRIT_PORT"
|
||||||
NAME = imageTagVersion()
|
NAME = imageTagVersion()
|
||||||
BUILD_REGISTRY_FQDN = configuration.buildRegistryFQDN()
|
BUILD_REGISTRY_FQDN = configuration.buildRegistryFQDN()
|
||||||
BUILD_IMAGE = configuration.buildRegistryPath()
|
BUILD_IMAGE = getBuildImage()
|
||||||
POSTGRES = configuration.postgres()
|
POSTGRES = configuration.postgres()
|
||||||
POSTGRES_CLIENT = configuration.postgresClient()
|
POSTGRES_CLIENT = configuration.postgresClient()
|
||||||
SKIP_CACHE = configuration.skipCache()
|
SKIP_CACHE = configuration.skipCache()
|
||||||
|
@ -142,7 +155,7 @@ pipeline {
|
||||||
PUBLISHABLE_TAG_SUFFIX = configuration.publishableTagSuffixNew()
|
PUBLISHABLE_TAG_SUFFIX = configuration.publishableTagSuffixNew()
|
||||||
|
|
||||||
// e.g. canvas-lms:01.123456.78-postgres-12-ruby-2.6
|
// e.g. canvas-lms:01.123456.78-postgres-12-ruby-2.6
|
||||||
PATCHSET_TAG = imageTag.patchset()
|
PATCHSET_TAG = getPatchsetTag()
|
||||||
|
|
||||||
// e.g. canvas-lms:01.123456.78-postgres-9.5-ruby-2.6
|
// e.g. canvas-lms:01.123456.78-postgres-9.5-ruby-2.6
|
||||||
PUBLISHABLE_TAG = "$BUILD_IMAGE:$NAME-$PUBLISHABLE_TAG_SUFFIX"
|
PUBLISHABLE_TAG = "$BUILD_IMAGE:$NAME-$PUBLISHABLE_TAG_SUFFIX"
|
||||||
|
@ -177,6 +190,13 @@ pipeline {
|
||||||
stage('Environment') {
|
stage('Environment') {
|
||||||
steps {
|
steps {
|
||||||
script {
|
script {
|
||||||
|
// Ensure that all build flags are compatible.
|
||||||
|
|
||||||
|
if(configuration.getBoolean('change-merged') && configuration.isValueDefault('build-registry-path')) {
|
||||||
|
error "Manually triggering the change-merged build path must be combined with a custom build-registry-path"
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
// Use a nospot instance for now to avoid really bad UX. Jenkins currently will
|
// Use a nospot instance for now to avoid really bad UX. Jenkins currently will
|
||||||
// wait for the current steps to complete (even wait to spin up a node), causing
|
// wait for the current steps to complete (even wait to spin up a node), causing
|
||||||
// extremely long wait times for a restart. Investigation in DE-166 / DE-158.
|
// extremely long wait times for a restart. Investigation in DE-166 / DE-158.
|
||||||
|
@ -226,7 +246,7 @@ pipeline {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if(env.GERRIT_EVENT_TYPE == 'patchset-created' && env.GERRIT_PROJECT == 'canvas-lms' && !configuration.skipRebase()) {
|
if(!configuration.isChangeMerged() && env.GERRIT_PROJECT == 'canvas-lms' && !configuration.skipRebase()) {
|
||||||
stage('Rebase') {
|
stage('Rebase') {
|
||||||
timeout(time: 2) {
|
timeout(time: 2) {
|
||||||
credentials.withGerritCredentials({ ->
|
credentials.withGerritCredentials({ ->
|
||||||
|
@ -264,7 +284,7 @@ pipeline {
|
||||||
stage('Build Docker Image') {
|
stage('Build Docker Image') {
|
||||||
timeout(time: 30) {
|
timeout(time: 30) {
|
||||||
skipIfPreviouslySuccessful('docker-build-and-push') {
|
skipIfPreviouslySuccessful('docker-build-and-push') {
|
||||||
if (env.GERRIT_EVENT_TYPE != 'change-merged' && configuration.skipDockerBuild()) {
|
if (!configuration.isChangeMerged() && configuration.skipDockerBuild()) {
|
||||||
sh './build/new-jenkins/docker-with-flakey-network-protection.sh pull $MERGE_TAG'
|
sh './build/new-jenkins/docker-with-flakey-network-protection.sh pull $MERGE_TAG'
|
||||||
sh 'docker tag $MERGE_TAG $PATCHSET_TAG'
|
sh 'docker tag $MERGE_TAG $PATCHSET_TAG'
|
||||||
} else {
|
} else {
|
||||||
|
@ -284,14 +304,14 @@ pipeline {
|
||||||
|
|
||||||
stage('Parallel Run Tests') {
|
stage('Parallel Run Tests') {
|
||||||
def stages = [:]
|
def stages = [:]
|
||||||
if (env.GERRIT_EVENT_TYPE != 'change-merged' && env.GERRIT_PROJECT == 'canvas-lms') {
|
if (!configuration.isChangeMerged() && env.GERRIT_PROJECT == 'canvas-lms') {
|
||||||
echo 'adding Linters'
|
echo 'adding Linters'
|
||||||
stages['Linters'] = {
|
stages['Linters'] = {
|
||||||
skipIfPreviouslySuccessful("linters") {
|
skipIfPreviouslySuccessful("linters") {
|
||||||
credentials.withGerritCredentials {
|
credentials.withGerritCredentials {
|
||||||
sh 'build/new-jenkins/linters/run-gergich.sh'
|
sh 'build/new-jenkins/linters/run-gergich.sh'
|
||||||
}
|
}
|
||||||
if (env.MASTER_BOUNCER_RUN == '1' && env.GERRIT_EVENT_TYPE == 'patchset-created') {
|
if (env.MASTER_BOUNCER_RUN == '1' && !configuration.isChangeMerged()) {
|
||||||
credentials.withMasterBouncerCredentials {
|
credentials.withMasterBouncerCredentials {
|
||||||
sh 'build/new-jenkins/linters/run-master-bouncer.sh'
|
sh 'build/new-jenkins/linters/run-master-bouncer.sh'
|
||||||
}
|
}
|
||||||
|
@ -359,7 +379,7 @@ pipeline {
|
||||||
echo 'no migrations added, skipping CDC Schema check'
|
echo 'no migrations added, skipping CDC Schema check'
|
||||||
}
|
}
|
||||||
|
|
||||||
if (env.GERRIT_EVENT_TYPE != 'change-merged' && (sh(script: 'build/new-jenkins/spec-changes.sh', returnStatus: true) == 0)) {
|
if (!configuration.isChangeMerged() && (sh(script: 'build/new-jenkins/spec-changes.sh', returnStatus: true) == 0)) {
|
||||||
echo 'adding Flakey Spec Catcher'
|
echo 'adding Flakey Spec Catcher'
|
||||||
stages['Flakey Spec Catcher'] = {
|
stages['Flakey Spec Catcher'] = {
|
||||||
skipIfPreviouslySuccessful("flakey-spec-catcher") {
|
skipIfPreviouslySuccessful("flakey-spec-catcher") {
|
||||||
|
@ -399,7 +419,7 @@ pipeline {
|
||||||
parallel(stages)
|
parallel(stages)
|
||||||
}
|
}
|
||||||
|
|
||||||
if(env.GERRIT_EVENT_TYPE == 'change-merged' && isPatchsetPublishable()) {
|
if(configuration.isChangeMerged() && isPatchsetPublishable()) {
|
||||||
stage('Publish Image on Merge') {
|
stage('Publish Image on Merge') {
|
||||||
timeout(time: 10) {
|
timeout(time: 10) {
|
||||||
// Retriggers won't have an image to tag/push, pull that
|
// Retriggers won't have an image to tag/push, pull that
|
||||||
|
@ -435,7 +455,7 @@ pipeline {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if(env.GERRIT_EVENT_TYPE == 'change-merged') {
|
if(configuration.isChangeMerged()) {
|
||||||
stage('Dependency Check') {
|
stage('Dependency Check') {
|
||||||
def reports = load 'build/new-jenkins/groovy/reports.groovy'
|
def reports = load 'build/new-jenkins/groovy/reports.groovy'
|
||||||
reports.snykCheckDependencies("$PATCHSET_TAG", "/usr/src/app/")
|
reports.snykCheckDependencies("$PATCHSET_TAG", "/usr/src/app/")
|
||||||
|
|
Loading…
Reference in New Issue