import groovy.transform.Field @Field def shOutput = "" def buildxPushTags = "" pipeline { agent { label 'docker-multiarch' } options { buildDiscarder(logRotator(numToKeepStr: '5')) disableConcurrentBuilds() ansiColor('xterm') } environment { IMAGE = 'nginx-proxy-manager' BUILD_VERSION = getVersion() MAJOR_VERSION = '2' BRANCH_LOWER = 'proxyprotocol' COMPOSE_INTERACTIVE_NO_CLI = 1 } stages { stage('Environment') { parallel { stage('Versions') { steps { sh 'cat frontend/package.json | jq --arg BUILD_VERSION "${BUILD_VERSION}" \'.version = $BUILD_VERSION\' | sponge frontend/package.json' sh 'echo -e "\\E[1;36mFrontend Version is:\\E[1;33m $(cat frontend/package.json | jq -r .version)\\E[0m"' sh 'cat backend/package.json | jq --arg BUILD_VERSION "${BUILD_VERSION}" \'.version = $BUILD_VERSION\' | sponge backend/package.json' sh 'echo -e "\\E[1;36mBackend Version is:\\E[1;33m $(cat backend/package.json | jq -r .version)\\E[0m"' sh 'sed -i -E "s/(version-)[0-9]+\\.[0-9]+\\.[0-9]+(-green)/\\1${BUILD_VERSION}\\2/" README.md' } } } } stage('Builds') { parallel { stage('Project') { steps { script { // Frontend and Backend def shStatusCode = sh(label: 'Checking and Building', returnStatus: true, script: ''' set -e ./scripts/ci/frontend-build > ${WORKSPACE}/tmp-sh-build 2>&1 ./scripts/ci/test-and-build > ${WORKSPACE}/tmp-sh-build 2>&1 ''') shOutput = readFile "${env.WORKSPACE}/tmp-sh-build" if (shStatusCode != 0) { error "${shOutput}" } } } post { always { sh 'rm -f ${WORKSPACE}/tmp-sh-build' } } } stage('Docs') { steps { dir(path: 'docs') { sh 'yarn install' sh 'yarn build' } } } } } post { always { sh 'echo Reverting ownership' sh 'docker run --rm -v "$(pwd):/data" jc21/ci-tools chown -R "$(id -u):$(id -g)" /data' //printResult(true) } failure { archiveArtifacts(artifacts: 'debug/**/*.*', allowEmptyArchive: true) } unstable { archiveArtifacts(artifacts: 'debug/**/*.*', allowEmptyArchive: true) } } } def getVersion() { ver = sh(script: 'cat .version', returnStdout: true) return ver.trim() } def getCommit() { ver = sh(script: 'git log -n 1 --format=%h', returnStdout: true) return ver.trim() }