Some checks failed
drawio-exporter/pipeline/head There was a failure building this commit
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: false,
|
|
skipPublishingChecks: true,
|
|
)
|
|
cobertura (
|
|
coberturaReportFile: 'out/coverage.xml',
|
|
failNoReports: true,
|
|
)
|
|
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: 'godoc/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(),
|
|
)
|
|
}
|
|
}
|
|
}
|
|
}
|