github.com/adacta-ru/mattermost-server/v5@v5.31.1/build/Jenkinsfile.branch (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 build = new org.mattermost.BuildCommands() 8 def platformStages = new org.mattermost.PlatformStages() 9 10 def rndEE = UUID.randomUUID().toString() 11 def rndTE = UUID.randomUUID().toString() 12 def mmBuilderServer = 'mattermost/mattermost-build-server:20200731_golang-1.14.6' 13 def mmBuilderWebapp = 'mattermost/mattermost-build-webapp:oct-2-2018' 14 15 pipeline { 16 agent { 17 label 'default-mm-builder' 18 } 19 20 options { 21 buildDiscarder(logRotator(daysToKeepStr: '15')) 22 timeout(time: 2, unit: 'HOURS') 23 } 24 25 environment { 26 COMPOSE_PROJECT_NAME="${rnd}-${env.BUILD_NUMBER}" 27 GOPATH = "/go" 28 } 29 30 stages { 31 stage('Setup') { 32 steps { 33 script { 34 platformStages.platformEcho() 35 } 36 } 37 } 38 39 stage('Build') { 40 failFast true 41 parallel { 42 stage ('Build EE') { 43 agent { 44 label 'default-mm-builder' 45 } 46 steps { 47 script { 48 forcefullyCleanWorkspace(mmBuilderServer) 49 platformStages.platformCheckoutTE(env.BRANCH_NAME) 50 platformStages.platformCheckoutEE(env.BRANCH_NAME) 51 platformStages.platformCheckoutRedux(env.BRANCH_NAME) 52 platformStages.platformCheckoutEEGOSaml('release-5.x') 53 platformStages.platformCheckoutEEGOXML('release-5.x') 54 platformStages.platformCheckoutEEGOXMLDsig('release-5.x') 55 SERVER_GIT_COMMIT=platformStages.platformServerCommitHash() 56 try { 57 platformStages.after5Dot20AddGOBINBuild(env.BRANCH_NAME + '.' + env.BUILD_NUMBER + '.' + SERVER_GIT_COMMIT, rndEE, false, mmBuilderServer, mmBuilderWebapp) 58 } finally { 59 platformStages.platformPublishResults() 60 platformStages.platformCleanDockerCompose(rndEE) 61 } 62 } 63 stash includes: 'src/github.com/mattermost/mattermost-server/dist/**', name: 'eedist' 64 } 65 } 66 stage ('Build TE') { 67 agent { 68 label 'default-mm-builder' 69 } 70 steps { 71 script { 72 forcefullyCleanWorkspace(mmBuilderServer) 73 platformStages.platformCheckoutTE(env.BRANCH_NAME) 74 platformStages.platformCheckoutRedux(env.BRANCH_NAME) 75 SERVER_GIT_COMMIT=platformStages.platformServerCommitHash() 76 try { 77 platformStages.after5Dot20AddGOBINBuild(env.BRANCH_NAME + '.' + env.BUILD_NUMBER + '.' + SERVER_GIT_COMMIT, rndTE, false, mmBuilderServer, mmBuilderWebapp) 78 } finally { 79 platformStages.platformPublishResults() 80 platformStages.platformCleanDockerCompose(rndTE) 81 } 82 } 83 stash includes: 'src/github.com/mattermost/mattermost-server/dist/**', name: 'tedist' 84 } 85 } 86 } 87 } 88 89 stage ('Push EE') { 90 steps { 91 node('master') { 92 forcefullyCleanWorkspace(mmBuilderServer) 93 unstash 'eedist' 94 script { 95 platformStages.pushToS3('mattermost-platform/' + env.BRANCH_NAME, 'mattermost-enterprise-*',false) 96 } 97 } 98 } 99 } 100 stage ('Push TE') { 101 steps { 102 node('master') { 103 forcefullyCleanWorkspace(mmBuilderServer) 104 unstash 'tedist' 105 script { 106 platformStages.pushToS3('mattermost-platform/' + env.BRANCH_NAME, 'mattermost-team-*',false) 107 } 108 } 109 } 110 } 111 stage ('CleanCloudfront') { 112 steps { 113 node('master') { 114 script { 115 platformStages.cleanCloudfrontCache('mattermost-platform/' + env.BRANCH_NAME) 116 } 117 } 118 } 119 } 120 121 stage ('Build Docker Images') { 122 agent { 123 label 'default-mm-builder' 124 } 125 steps { 126 script { 127 forcefullyCleanWorkspace(mmBuilderServer) 128 platformStages.platformCheckoutTE(env.BRANCH_NAME) 129 } 130 dir('src/github.com/mattermost/mattermost-server') { 131 withCredentials([usernamePassword(credentialsId: 'matterbuild-docker-hub', usernameVariable: 'DOCKER_USER', passwordVariable: 'DOCKER_PASS')]) { 132 sh 'docker login --username ${DOCKER_USER} --password ${DOCKER_PASS}' 133 sh """ 134 export TAG='${env.BRANCH_NAME}' 135 docker build --no-cache --build-arg MM_PACKAGE=https://releases.mattermost.com/mattermost-platform/${env.BRANCH_NAME}/mattermost-enterprise-linux-amd64.tar.gz -t mattermost/mattermost-enterprise-edition:\${TAG} -t mattermost/mattermost-enterprise-edition:${GIT_COMMIT} build 136 docker push mattermost/mattermost-enterprise-edition 137 """ 138 sh """ 139 export TAG='${env.BRANCH_NAME}' 140 docker build --no-cache --build-arg MM_PACKAGE=https://releases.mattermost.com/mattermost-platform/${env.BRANCH_NAME}/mattermost-team-linux-amd64.tar.gz -t mattermost/mattermost-team-edition:\${TAG} -t mattermost/mattermost-team-edition:${GIT_COMMIT} build 141 docker push mattermost/mattermost-team-edition 142 docker logout 143 """ 144 } 145 } 146 } 147 } 148 } 149 150 post { 151 cleanup { 152 forcefullyCleanWorkspace(mmBuilderServer) 153 } 154 } 155 } 156 157 158 def forcefullyCleanWorkspace(String imageToUse) { 159 return withDockerContainer( 160 image: imageToUse, 161 args: '-u root' 162 ) { 163 ansiColor('xterm') { 164 sh """#!/bin/bash -e 165 if [ -d "\$WORKSPACE" ] 166 then 167 rm -rfv \$WORKSPACE/* 168 fi 169 """ 170 } 171 } 172 }