All checks were successful
		
		
	
	drawio-exporter/pipeline/head This commit looks good
				
			
		
			
				
	
	
		
			215 lines
		
	
	
		
			7.9 KiB
		
	
	
	
		
			Groovy
		
	
	
	
	
	
			
		
		
	
	
			215 lines
		
	
	
		
			7.9 KiB
		
	
	
	
		
			Groovy
		
	
	
	
	
	
| // MouseSoft Ships 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-exporter'
 | |
|         PROJECT_NAME = 'MouseSoft Draw.io Exporter'
 | |
|         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 pkg-msi'
 | |
|                 //         }
 | |
|                 //     }
 | |
|                 //     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_OPT = ' '
 | |
|                     }
 | |
|                     steps {
 | |
|                         echo "***** RELEASE ${PROJECT_NAME} for Linux *****"
 | |
|                         sh '''#!/bin/bash
 | |
|                         make build dist
 | |
|                         '''
 | |
|                         script {
 | |
|                             msUploadFilesToRelease(
 | |
|                                 "${PROJECT_OWNER}",
 | |
|                                 "${PROJECT_ID}",
 | |
|                                 RELEASE_ID,
 | |
|                                 ['dist/*.tar.gz', 'out/doc/*.pdf'],
 | |
|                             )
 | |
|                             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_OPT = ' '
 | |
|                     }
 | |
|                     steps {
 | |
|                         echo "***** RELEASE ${PROJECT_NAME} for Windows *****"
 | |
|                         bat 'make build dist pkg-msi'
 | |
|                         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 {
 | |
|         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,out/*.msi',
 | |
|                         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(),
 | |
|                 )
 | |
|             }
 | |
|         }
 | |
|     }
 | |
| }
 |