github.com/vnforks/kid@v5.11.1+incompatible/build/Jenkinsfile.pr (about) 1 #!/usr/bin/env groovy 2 3 @Library('shared-pipelines') _ 4 import org.mattermost.Utils 5 import java.util.*; 6 def utils = new org.mattermost.Utils() 7 def rnd = UUID.randomUUID().toString() 8 9 pipeline { 10 agent { 11 label 'default-mm-builder' 12 } 13 14 options { 15 buildDiscarder(logRotator(numToKeepStr: '3')) 16 timeout(time: 1, unit: 'HOURS') 17 } 18 19 environment { 20 COMPOSE_PROJECT_NAME="${rnd}-${env.BUILD_NUMBER}" 21 } 22 23 stages { 24 stage('Setup') { 25 steps { 26 script { 27 utils.stopOldBuilds() 28 } 29 cleanWs notFailBuild: true 30 sh """ 31 mkdir -p src/github.com/mattermost/mattermost-server 32 mkdir -p src/github.com/mattermost/mattermost-webapp 33 mkdir -p src/github.com/mattermost/enterprise 34 """ 35 dir('src/github.com/mattermost/mattermost-server') { 36 checkout scm 37 } 38 dir('src/github.com/mattermost/mattermost-webapp') { 39 checkout changelog: false, poll: false, scm: [$class: 'GitSCM', branches: [[name: '*/master']], doGenerateSubmoduleConfigurations: false, extensions: [], submoduleCfg: [], userRemoteConfigs: [[credentialsId: '310159d3-f7c5-4f5d-bfa1-151e3ef2db57', url: 'https://github.com/mattermost/mattermost-webapp.git']]] 40 } 41 dir('src/github.com/mattermost/enterprise') { 42 checkout changelog: false, poll: false, scm: [$class: 'GitSCM', branches: [[name: '*/master']], doGenerateSubmoduleConfigurations: false, extensions: [], submoduleCfg: [], userRemoteConfigs: [[credentialsId: '310159d3-f7c5-4f5d-bfa1-151e3ef2db57', url: 'https://github.com/mattermost/enterprise.git']]] 43 } 44 dir('src/github.com/mattermost/enterprise') { 45 ansiColor('xterm') { 46 sh """ 47 #!/bin/bash -ex 48 git checkout $env.BRANCH_NAME || git checkout $env.CHANGE_BRANCH || git checkout $env.GIT_BRANCH || git checkout $env.CHANGE_TARGET || git checkout release-5.10 || git checkout master || echo 1 49 export EE_GIT_COMMIT=\$(git rev-parse HEAD) 50 51 echo EE Commit: \${EE_GIT_COMMIT} 52 """ 53 } 54 } 55 dir('src/github.com/mattermost/mattermost-webapp') { 56 withDockerContainer(args: '', image: 'mattermost/mattermost-build-webapp:oct-2-2018') { 57 ansiColor('xterm') { 58 sh """ 59 #!/bin/bash -ex 60 git checkout $env.BRANCH_NAME || git checkout $env.CHANGE_BRANCH || git checkout $env.GIT_BRANCH || git checkout $env.CHANGE_TARGET || git checkout release-5.10 || git checkout master 61 rm -rf ./dist 62 export WEBAPP_GIT_COMMIT=\$(git rev-parse HEAD) 63 64 echo Webapp Commit: \${WEBAPP_GIT_COMMIT} 65 66 curl -f -o ./dist.tar.gz https://releases.mattermost.com/mattermost-webapp/commit/\${WEBAPP_GIT_COMMIT}/mattermost-webapp.tar.gz && mkdir ./dist && tar -xvf ./dist.tar.gz -C ./dist --strip-components=1 || make node_modules test build 67 """ 68 } 69 } 70 } 71 } 72 } 73 74 stage('Build') { 75 environment { 76 GOPATH = "/go" 77 } 78 79 steps { 80 withDockerContainer(args: '-u root --privileged -v ${WORKSPACE}/src:/go/src/', image: 'mattermost/mattermost-build-server:feb-28-2019') { 81 ansiColor('xterm') { 82 sh """ 83 cd /go/src/github.com/mattermost/mattermost-server 84 mv config/default.json config/config.json || echo "" 85 make check-style BUILD_NUMBER='${BRANCH_NAME}-${BUILD_NUMBER}' 86 make build BUILD_NUMBER='${BRANCH_NAME}-${BUILD_NUMBER}' 87 make package BUILD_NUMBER='${BRANCH_NAME}-${BUILD_NUMBER}' 88 """ 89 } 90 } 91 } 92 } 93 94 stage('Test') { 95 environment { 96 GOPATH = "/go" 97 TEST_DATABASE_MYSQL_DSN = "mmuser:mostest@tcp(mysql:3306)/mattermost_test?charset=utf8mb4,utf8\u0026readTimeout=30s\u0026writeTimeout=30s" 98 TEST_DATABASE_POSTGRESQL_DSN = "postgres://mmuser:mostest@postgres:5432/mattermost_test?sslmode=disable&connect_timeout=10" 99 TEST_DATABASE_MYSQL_ROOT_PASSWD = "mostest" 100 CI_INBUCKET_HOST = "inbucket" 101 CI_MINIO_HOST = "minio" 102 CI_INBUCKET_PORT = "10080" 103 CI_MINIO_PORT = "9000" 104 CI_INBUCKET_SMTP_PORT = "10025" 105 CI_LDAP_HOST = "openldap" 106 IS_CI = true 107 MM_SQLSETTINGS_DATASOURCE = "mmuser:mostest@tcp(mysql:3306)/mattermost_test?charset=utf8mb4,utf8" 108 MM_EMAILSETTINGS_SMTPSERVER = "inbucket" 109 MM_EMAILSETTINGS_SMTPPORT = "10025" 110 MM_ELASTICSEARCHSETTINGS_CONNECTIONURL = "http://elasticsearch:9200" 111 } 112 113 steps { 114 dir('src/github.com/mattermost/mattermost-server/build') { 115 ansiColor('xterm') { 116 sh """ 117 docker-compose --no-ansi run --rm start_dependencies 118 docker-compose --no-ansi ps 119 docker-compose --no-ansi exec -T openldap bash -c 'ldapadd -x -D "cn=admin,dc=mm,dc=test,dc=com" -w mostest -f /add-users.ldif'; 120 docker-compose --no-ansi exec -T openldap bash -c 'ldapadd -x -D "cn=admin,dc=mm,dc=test,dc=com" -w mostest -f /add-groups.ldif'; 121 """ 122 } 123 } 124 125 withDockerContainer(args: "-u root --privileged --net ${COMPOSE_PROJECT_NAME}_mm-test -v ${WORKSPACE}/src:/go/src/", image: 'mattermost/mattermost-build-server:feb-28-2019') { 126 ansiColor('xterm') { 127 sh """ 128 cd /go/src/github.com/mattermost/mattermost-server 129 130 mkdir -p client/plugins 131 cat config/config.json 132 133 make test-server BUILD_NUMBER='${BRANCH_NAME}-${BUILD_NUMBER}' TESTFLAGS= TESTFLAGSEE= 134 135 """ 136 } 137 withCredentials([string(credentialsId: 'CODECOV_TOKEN', variable: 'CODECOV')]) { 138 sh ''' 139 cd /go/src/github.com/mattermost/mattermost-server 140 curl -s https://codecov.io/bash | bash -s - -t $CODECOV || echo 'Codecov failed to upload' 141 ''' 142 } 143 } 144 } 145 } 146 147 stage('Push to S3') { 148 stages { 149 stage('Pull request') { 150 when { 151 allOf { 152 expression { env.CHANGE_ID != null } 153 expression { env.CHANGE_TARGET != null } 154 } 155 } 156 steps { 157 dir('src/github.com/mattermost/mattermost-server/dist') { 158 step([$class: 'S3BucketPublisher', dontWaitForConcurrentBuildCompletion: false, entries: [[ 159 bucket: "releases.mattermost.com/mattermost-platform-pr/${CHANGE_ID}", 160 excludedFile: '', 161 flatten: true, 162 gzipFiles: false, 163 keepForever: false, 164 managedArtifacts: false, 165 noUploadOnFailure: true, 166 selectedRegion: 'us-east-1', 167 showDirectlyInBrowser: false, 168 sourceFile: '*.tar.gz', 169 storageClass: 'STANDARD', 170 uploadFromSlave: false, 171 useServerSideEncryption: false, 172 userMetadata: [[key: 'Cache-Control', value: 'no-cache']] 173 ], [ 174 bucket: "releases.mattermost.com/mattermost-platform-pr/${CHANGE_BRANCH}", 175 excludedFile: '', 176 flatten: true, 177 gzipFiles: false, 178 keepForever: false, 179 managedArtifacts: false, 180 noUploadOnFailure: true, 181 selectedRegion: 'us-east-1', 182 showDirectlyInBrowser: false, 183 sourceFile: '*.tar.gz', 184 storageClass: 'STANDARD', 185 uploadFromSlave: false, 186 useServerSideEncryption: false, 187 userMetadata: [[key: 'Cache-Control', value: 'no-cache']] 188 ]], profileName: 'Releases', userMetadAta: []]) 189 } 190 } 191 } 192 stage('Branch') { 193 when { 194 expression { env.CHANGE_ID == null } 195 } 196 steps { 197 dir('src/github.com/mattermost/mattermost-server/dist') { 198 step([$class: 'S3BucketPublisher', dontWaitForConcurrentBuildCompletion: false, entries: [[ 199 bucket: "releases.mattermost.com/mattermost-platform-pr/${BRANCH_NAME}", 200 excludedFile: '', 201 flatten: true, 202 gzipFiles: false, 203 keepForever: false, 204 managedArtifacts: false, 205 noUploadOnFailure: true, 206 selectedRegion: 'us-east-1', 207 showDirectlyInBrowser: false, 208 sourceFile: '*.tar.gz', 209 storageClass: 'STANDARD', 210 uploadFromSlave: false, 211 useServerSideEncryption: false, 212 userMetadata: [[key: 'Cache-Control', value: 'no-cache']] 213 ]], profileName: 'Releases', userMetadAta: []]) 214 } 215 } 216 } 217 } 218 } 219 220 stage('Trigger docker image') { 221 when { 222 expression { env.CHANGE_ID != null } 223 } 224 steps { 225 build job: '../../mk/mattermost-enterprise-edition-release', parameters: [string(name: 'RELEASE', value: "${CHANGE_ID}"), booleanParam(name: 'FROM_PR', value: true)], propagate: false, wait: false 226 } 227 } 228 } 229 230 post { 231 always { 232 dir('src/github.com/mattermost/mattermost-server') { 233 junit allowEmptyResults: true, healthScaleFactor: 0.0, testResults: 'report*.xml' 234 archiveArtifacts 'report*.xml' 235 } 236 dir('src/github.com/mattermost/mattermost-server/build') { 237 ansiColor('xterm') { 238 sh """ 239 docker-compose --no-ansi down -v 240 """ 241 } 242 } 243 } 244 cleanup { 245 cleanWs notFailBuild: true 246 } 247 } 248 }