report feature flag changes for approval

refs DE-777

Change-Id: I4bfa74ec75894eb93660e2e8ef0e1d75ec51d927
Reviewed-on: https://gerrit.instructure.com/c/canvas-lms/+/269865
Tested-by: Service Cloud Jenkins <svc.cloudjenkins@instructure.com>
Reviewed-by: Andrea Cirulli <andrea.cirulli@instructure.com>
Reviewed-by: Ryan Norton <rnorton@instructure.com>
Product-Review: Ryan Norton <rnorton@instructure.com>
QA-Review: Aaron Ogata <aogata@instructure.com>
This commit is contained in:
Aaron Ogata 2021-07-23 06:38:45 -07:00
parent bfc7228bfd
commit f87f9b72e7
3 changed files with 27 additions and 1 deletions

1
Jenkinsfile vendored
View File

@ -440,6 +440,7 @@ pipeline {
def nestedStages = [:]
callableWithDelegate(lintersStage.codeStage(nestedStages))()
callableWithDelegate(lintersStage.featureFlagStage(nestedStages, buildConfig))()
callableWithDelegate(lintersStage.groovyStage(nestedStages, buildConfig))()
callableWithDelegate(lintersStage.masterBouncerStage(nestedStages))()
callableWithDelegate(lintersStage.webpackStage(nestedStages))()

View File

@ -24,6 +24,10 @@ def hasDockerDevFiles(buildConfig) {
return buildConfig[STAGE_NAME].value('dockerDevFiles')
}
def hasFeatureFlagFiles(buildConfig) {
return buildConfig[STAGE_NAME].value('featureFlagFiles')
}
def hasGroovyFiles(buildConfig) {
return buildConfig[STAGE_NAME].value('groovyFiles')
}
@ -52,6 +56,7 @@ def call(stageConfig) {
]
stageConfig.value('dockerDevFiles', git.changedFiles(dockerDevFiles, 'HEAD^'))
stageConfig.value('featureFlagFiles', git.changedFiles(['config/feature_flags'], 'HEAD^'))
stageConfig.value('groovyFiles', git.changedFiles(['.*.groovy', 'Jenkinsfile.*'], 'HEAD^'))
stageConfig.value('yarnFiles', git.changedFiles(['package.json', 'yarn.lock'], 'HEAD^'))
stageConfig.value('migrationFiles', sh(script: 'build/new-jenkins/check-for-migrations.sh', returnStatus: true) == 0)

View File

@ -26,7 +26,7 @@ def nodeRequirementsTemplate() {
]
]
def containers = ['code', 'groovy', 'master-bouncer', 'webpack', 'yarn'].collect { containerName ->
def containers = ['code', 'feature-flag', 'groovy', 'master-bouncer', 'webpack', 'yarn'].collect { containerName ->
baseTestContainer + [name: containerName]
}
@ -87,6 +87,26 @@ def webpackStage(stages) {
}
}
def featureFlagStage(stages, buildConfig) {
{ ->
extendedStage('Linters - feature-flag')
.nodeRequirements(container: 'feature-flag')
.obeysAllowStages(false)
.required(filesChangedStage.hasFeatureFlagFiles(buildConfig))
.queue(stages) {
slackSend(
channel: configuration.getString('feature-flag-report-channel'),
color: 'warning',
message: "${env.GERRIT_CHANGE_URL} is changing a feature flag."
)
node('master') {
gerrit.addReviewers(Arrays.asList(configuration.getString('feature-flag-report-emails').split(',')))
}
}
}
}
def yarnStage(stages, buildConfig) {
{ ->
def yarnEnvVars = [