All checks were successful
		
		
	
	drawio-export/pipeline/head This commit looks good
				
			
		
			
				
	
	
		
			227 lines
		
	
	
		
			8.3 KiB
		
	
	
	
		
			Groovy
		
	
	
	
	
	
			
		
		
	
	
			227 lines
		
	
	
		
			8.3 KiB
		
	
	
	
		
			Groovy
		
	
	
	
	
	
| // MouseSoft Draw.io Export jenkins declarative pipeline
 | |
| 
 | |
| pipeline {
 | |
|     agent { label 'go' }
 | |
|     options {
 | |
|         ansiColor('css')
 | |
|         timestamps()
 | |
|         buildDiscarder(logRotator(numToKeepStr: '10'))
 | |
|         skipDefaultCheckout()
 | |
|         timeout(time: 8, unit: 'MINUTES', activity: true)
 | |
|     }
 | |
|     environment {
 | |
|         PROJECT_OWNER = 'ms'
 | |
|         PROJECT_ID = 'drawio-export'
 | |
|         PROJECT_NAME = 'MouseSoft Draw.IO Export'
 | |
|         ROCKET_TITLE = "${currentBuild.fullDisplayName} (<${env.BUILD_URL}|Open>)"
 | |
|         RELEASE_ID = 0
 | |
|     }
 | |
|     stages {
 | |
|         stage('Build') {
 | |
|             parallel {
 | |
|                 stage('Build Linux') {
 | |
|                     steps {
 | |
|                         echo "***** BUILD ${PROJECT_NAME} on Linux *****"
 | |
|                         msSendRocketChat("${ROCKET_TITLE}", msBuildInfo(currentBuild), 'black')
 | |
|                         cleanWs(disableDeferredWipeout: true, deleteDirs: true)
 | |
|                         checkout scm
 | |
|                         sh '''#!/bin/bash
 | |
|                         make clean vendor lint build dist doc
 | |
|                         '''
 | |
|                     }
 | |
|                 }
 | |
|                 stage('Build Windows') {
 | |
|                     agent{ label 'windows' }
 | |
|                     environment {
 | |
|                         GO_OPT = ' '
 | |
|                         CGO_ENABLED = 0
 | |
|                     }
 | |
|                     steps {
 | |
|                         echo "***** BUILD ${PROJECT_NAME} on Windows *****"
 | |
|                         cleanWs(disableDeferredWipeout: true, deleteDirs: true)
 | |
|                         catchError(buildResult: 'UNSTABLE', stageResult: 'FAILURE') {
 | |
|                             checkout scm
 | |
|                             bat 'make clean vendor build dist'
 | |
|                         }
 | |
|                     }
 | |
|                     post {
 | |
|                         always {
 | |
|                             script {
 | |
|                                 if (getContext(hudson.FilePath)) {
 | |
|                                     archiveArtifacts (
 | |
|                                         artifacts: 'out/*.zip,out/*.msi',
 | |
|                                         allowEmptyArchive: true,
 | |
|                                         fingerprint: true,
 | |
|                                         onlyIfSuccessful: true,
 | |
|                                     )
 | |
|                                 }
 | |
|                             }
 | |
|                         }
 | |
|                     }
 | |
|                 }
 | |
|             }
 | |
|         }
 | |
|         stage('Test') {
 | |
|             environment {
 | |
|                 EXPORT_RESULT = true
 | |
|                 COVERAGE_FORMAT = 'xml'
 | |
|             }
 | |
|             steps {
 | |
|                 echo "===== TEST ${PROJECT_NAME} ====="
 | |
|                 sh '''#!/bin/bash
 | |
|                 make test coverage
 | |
|                 '''
 | |
|             }
 | |
|         }
 | |
|         stage('Doc') {
 | |
|             when { anyOf {
 | |
|                 branch 'main'
 | |
|                 branch 'develop'
 | |
|                 branch 'release/*'
 | |
|                 branch 'support/*'
 | |
|                 tag 'v*'
 | |
|             } }
 | |
|             environment {
 | |
|                 DOC_FORMAT = 'pdf'
 | |
|             }
 | |
|             steps {
 | |
|                 echo "===== MAKE ${PROJECT_NAME} Documentation ====="
 | |
|                 sh '''#!/bin/bash
 | |
|                 make doc
 | |
|                 '''
 | |
|             }
 | |
|         }
 | |
|         stage('Draft Release') {
 | |
|             when { tag 'v*' }
 | |
|             steps {
 | |
|                 script {
 | |
|                     def version = "${TAG_NAME}".substring(1)
 | |
|                     RELEASE_ID = msCreateRelease(
 | |
|                         "${PROJECT_OWNER}",
 | |
|                         "${PROJECT_ID}",
 | |
|                         "${TAG_NAME}",
 | |
|                         "${PROJECT_NAME}",
 | |
|                     )
 | |
|                 }
 | |
|             }
 | |
|         }
 | |
|         stage('Release') {
 | |
|             parallel {
 | |
|                 stage('Release Linux') {
 | |
|                     when { tag 'v*' }
 | |
|                     environment {
 | |
|                         OUTDIR = 'dist'
 | |
|                         DIST_TAG = 'empty'
 | |
|                         GO_LDFLAGS = '-w'
 | |
|                         GO_OPT = ' '
 | |
|                     }
 | |
|                     steps {
 | |
|                         echo "***** RELEASE ${PROJECT_NAME} for Linux *****"
 | |
|                         sh '''#!/bin/bash
 | |
|                         make build package
 | |
|                         find -O1 dist/ -name '*.changes' -exec dput mousesoft \\{\\} \\;
 | |
|                         '''
 | |
|                         script {
 | |
|                             msUploadFilesToRelease(
 | |
|                                 "${PROJECT_OWNER}",
 | |
|                                 "${PROJECT_ID}",
 | |
|                                 RELEASE_ID,
 | |
|                                 ['dist/*.deb'],
 | |
|                             )
 | |
|                             if( currentBuild.currentResult == 'SUCCESS' ) {
 | |
|                                 currentBuild.keepLog = true
 | |
|                             }
 | |
|                         }
 | |
|                         msSendRocketChat("${ROCKET_TITLE}", "Released assets for Linux", 'blue')
 | |
|                     }
 | |
|                 }
 | |
|                 stage('Release Windows') {
 | |
|                     agent{ label 'windows' }
 | |
|                     when { tag 'v*' }
 | |
|                     environment {
 | |
|                         OUTDIR = 'dist'
 | |
|                         DIST_TAG = 'empty'
 | |
|                         GO_LDFLAGS = '-w'
 | |
|                         GO_OPT = ' '
 | |
|                     }
 | |
|                     steps {
 | |
|                         echo "***** RELEASE ${PROJECT_NAME} for Windows *****"
 | |
|                         bat 'make build package'
 | |
|                         script {
 | |
|                             msUploadFilesToRelease(
 | |
|                                 "${PROJECT_OWNER}",
 | |
|                                 "${PROJECT_ID}",
 | |
|                                 RELEASE_ID,
 | |
|                                 ['dist/*.msi'],
 | |
|                             )
 | |
|                             if( currentBuild.currentResult == 'SUCCESS' ) {
 | |
|                                 currentBuild.keepLog = true
 | |
|                             }
 | |
|                         }
 | |
|                         msSendRocketChat("${ROCKET_TITLE}", "Released assets for Windows", 'blue')
 | |
|                     }
 | |
|                     post {
 | |
|                         success {
 | |
|                             archiveArtifacts (
 | |
|                                 artifacts: 'dist/*.msi',
 | |
|                                 allowEmptyArchive: false,
 | |
|                                 fingerprint: true,
 | |
|                             )
 | |
|                         }
 | |
|                     }
 | |
|                 }
 | |
|             }
 | |
|         }
 | |
|     }
 | |
| 
 | |
|     post {
 | |
|         always {
 | |
|             script {
 | |
|                 if (getContext(hudson.FilePath)) {
 | |
|                     junit (
 | |
|                         testResults: 'out/junit-report.xml',
 | |
|                         allowEmptyResults: true,
 | |
|                         skipPublishingChecks: true,
 | |
|                     )
 | |
|                     cobertura (
 | |
|                         coberturaReportFile: 'out/coverage.xml',
 | |
|                         failNoReports: false,
 | |
|                     )
 | |
|                     archiveArtifacts (
 | |
|                         artifacts: 'out/*.tar.*,out/*.zip',
 | |
|                         allowEmptyArchive: false,
 | |
|                         fingerprint: true,
 | |
|                         onlyIfSuccessful: true,
 | |
|                     )
 | |
|                     archiveArtifacts (
 | |
|                         artifacts: 'out/doc/*.pdf',
 | |
|                         allowEmptyArchive: true,
 | |
|                         fingerprint: true,
 | |
|                         onlyIfSuccessful: true,
 | |
|                     )
 | |
|                     if (currentBuild.result == 'SUCCESS') {
 | |
|                         publishHTML(target: [
 | |
|                             allowMissing: true,
 | |
|                             alwaysLinkToLastBuild: true,
 | |
|                             keepAll: false,
 | |
|                             reportDir: 'out/doc/html',
 | |
|                             reportFiles: 'index.html',
 | |
|                             reportTitles: 'Техническая документация',
 | |
|                             reportName: 'Documentation',
 | |
|                         ])
 | |
|                     }
 | |
|                 }
 | |
|                 if( currentBuild.result != 'SUCCESS' ) {
 | |
|                     currentBuild.keepLog = false
 | |
|                 }
 | |
|                 def timeSec = currentBuild.duration / 1000
 | |
|                 msSendRocketChat(
 | |
|                     "${ROCKET_TITLE}",
 | |
|                     "Build ${currentBuild.result} after ${timeSec} sec",
 | |
|                     msBuildResultColor(),
 | |
|                 )
 | |
|             }
 | |
|         }
 | |
|     }
 | |
| }
 |