#!/usr/bin/env groovy /* * Copyright (C) 2019 - present Instructure, Inc. * * This file is part of Canvas. * * Canvas is free software: you can redistribute it and/or modify it under * the terms of the GNU Affero General Public License as published by the Free * Software Foundation, version 3 of the License. * * Canvas is distributed in the hope that it will be useful, but WITHOUT ANY * WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR * A PARTICULAR PURPOSE. See the GNU Affero General Public License for more * details. * * You should have received a copy of the GNU Affero General Public License along * with this program. If not, see <http://www.gnu.org/licenses/>. */ library "canvas-builds-library@${env.CANVAS_BUILDS_REFSPEC}" loadLocalLibrary('local-lib', 'build/new-jenkins/library') pipeline { agent none options { ansiColor('xterm') timeout(15) timestamps() } environment { BUILD_REGISTRY_FQDN = configuration.buildRegistryFQDN() COMPOSE_FILE = 'docker-compose.new-jenkins.yml:docker-compose.new-jenkins-contract-tests.yml' POSTGRES_PASSWORD = 'sekret' PACT_BROKER = credentials('PACT_BROKER') PACT_BROKER_USERNAME = "${env.PACT_BROKER_USR}" PACT_BROKER_PASSWORD = "${env.PACT_BROKER_PSW}" RSPEC_PROCESSES = '7' } stages { stage('Environment') { steps { script { extendedStage('Runner').nodeRequirements(label: 'canvas-docker', podTemplate: contractTestsStage.nodeRequirementsTemplate()).obeysAllowStages(false).execute { def stages = [:] def consumerEnvVars = [ 'DATABASE_CLEANER_ALLOW_REMOTE_DATABASE_URL=true', 'RUN_API_CONTRACT_TESTS=1', ] callableWithDelegate(contractTestsStage.queueTestStage('Android'))(stages, databaseName: 'pact_test1', consumerName: 'android', envVars: consumerEnvVars, command: 'cd /usr/src/app && bundle exec rake pact:verify' ) callableWithDelegate(contractTestsStage.queueTestStage('Canvas iOS'))(stages, databaseName: 'pact_test2', consumerName: 'canvas-ios', envVars: consumerEnvVars, command: 'cd /usr/src/app && bundle exec rake pact:verify' ) callableWithDelegate(contractTestsStage.queueTestStage('Quiz LTI'))(stages, databaseName: 'pact_test3', consumerName: 'Quiz LTI', envVars: consumerEnvVars, command: 'cd /usr/src/app && bundle exec rake pact:verify' ) callableWithDelegate(contractTestsStage.queueTestStage('Sistemic'))(stages, databaseName: 'pact_test4', consumerName: 'Sistemic', envVars: consumerEnvVars, command: 'cd /usr/src/app && bundle exec rake pact:verify' ) callableWithDelegate(contractTestsStage.queueTestStage('Live Events'))(stages, databaseName: 'pact_test5', command: 'cd /usr/src/app && bin/rspec spec/contracts/service_consumers/live_events --tag pact_live_events --format doc' ) callableWithDelegate(contractTestsStage.queueTestStage('Outcomes'))(stages, databaseName: 'pact_test6', envVars: [ "PUBLISH_API=${configuration.isChangeMerged() ? '1' : '0'}", "SHA=${env.GERRIT_PATCHSET_REVISION}" ], command: 'cd /usr/src/app && build/new-jenkins/pact/contracts-generate-api.sh' ) parallel(stages) } } } } } }