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  }