Updated build system.
This commit is contained in:
131
build.groovy
Normal file
131
build.groovy
Normal file
@@ -0,0 +1,131 @@
|
||||
def projectRoot = '/home/gerby/gerby'
|
||||
|
||||
def vGPython = "${projectRoot}/gerby-venv/bin/python"
|
||||
def vGPip = "${projectRoot}/gerby-venv/bin/pip"
|
||||
|
||||
def vPPython = "${projectRoot}/plastex-venv/bin/python"
|
||||
def vPPip = "${projectRoot}/plastex-venv/bin/pip"
|
||||
|
||||
def vPlastex = "${projectRoot}/plastex-venv/bin/plastex"
|
||||
|
||||
def discordHook = "https://discord.com/api/webhooks/1456391390513856676/yniOv0Gbxp2UwW1pbZcekpXsC8y1dYppGQ90O7He-df24IODggrgXdMFwvz-RMWM15j8"
|
||||
|
||||
pipeline {
|
||||
agent any
|
||||
|
||||
stages {
|
||||
stage('Create Links') {
|
||||
steps {
|
||||
dir("${projectRoot}/gerby-website/gerby/tools/") {
|
||||
sh 'rm ./document || true'
|
||||
sh 'rm ./document.paux || true'
|
||||
sh 'rm ./tags || true'
|
||||
sh 'ln -s ../../../document document'
|
||||
sh 'ln -s ../../../document.paux document.paux'
|
||||
sh 'ln -s ../../../tags tags'
|
||||
}
|
||||
dir("${projectRoot}/gerby-website/") {
|
||||
sh 'rm ./hello-world.sqlite || true'
|
||||
sh 'rm ./comments.sqlite || true'
|
||||
sh 'ln -s gerby/tools/hello-world.sqlite hello-world.sqlite'
|
||||
sh 'ln -s gerby/tools/comments.sqlite comments.sqlite'
|
||||
}
|
||||
}
|
||||
}
|
||||
stage('Bibliography') {
|
||||
steps {
|
||||
dir("${projectRoot}/") {
|
||||
sh 'pdflatex -interaction=nonstopmode document.tex || true'
|
||||
sh 'bibtex document || true'
|
||||
sh 'pdflatex -interaction=nonstopmode document.tex || true'
|
||||
}
|
||||
}
|
||||
}
|
||||
stage('Delete Tags') {
|
||||
when {
|
||||
expression { params['Redo Tags'] == true }
|
||||
}
|
||||
steps {
|
||||
dir("${projectRoot}/") {
|
||||
sh 'rm ./tags || true'
|
||||
sh 'rm ./gerby-website/gerby/tools/hello-world.sqlite || true'
|
||||
}
|
||||
}
|
||||
}
|
||||
// The document folder is needed for the website to run, hence it is not cleared at the end of the compile process.
|
||||
stage('Delete Previous Build') {
|
||||
steps {
|
||||
dir("${projectRoot}/") {
|
||||
sh "rm -r ./document"
|
||||
}
|
||||
}
|
||||
}
|
||||
stage('Tag') {
|
||||
steps {
|
||||
dir("${projectRoot}/") {
|
||||
sh "${vGPython} tagger.py >> tags"
|
||||
}
|
||||
}
|
||||
}
|
||||
stage('Plastex') {
|
||||
steps {
|
||||
dir("${projectRoot}/") {
|
||||
sh "${vPlastex} --renderer=Gerby ./document.tex"
|
||||
}
|
||||
}
|
||||
}
|
||||
stage('Update Database') {
|
||||
steps {
|
||||
dir("${projectRoot}/gerby-website/gerby/tools") {
|
||||
sh "${vGPython} update.py"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
post {
|
||||
always {
|
||||
dir("${projectRoot}/") {
|
||||
sh 'rm document.aux || true'
|
||||
sh 'rm document.bbl || true'
|
||||
sh 'rm document.blg || true'
|
||||
sh 'rm document.log || true'
|
||||
sh 'rm document.out || true'
|
||||
sh 'rm document.pdf || true'
|
||||
}
|
||||
script {
|
||||
def formatTime = { milliseconds ->
|
||||
long seconds = (long)(milliseconds / 1000)
|
||||
long mins = (long)(seconds / 60)
|
||||
long secs = seconds % 60
|
||||
return mins > 0 ? "${mins}m${secs}s" : "${secs}s"
|
||||
}
|
||||
|
||||
def buildTitle = "Build Website #${env.BUILD_NUMBER}"
|
||||
if (params['Redo Tags']) {
|
||||
buildTitle += " (Retag)"
|
||||
}
|
||||
|
||||
def queueTimeMs = currentBuild.startTimeInMillis - currentBuild.timeInMillis
|
||||
def queueTime = formatTime(queueTimeMs)
|
||||
def buildTime = formatTime(currentBuild.duration)
|
||||
|
||||
def description = """
|
||||
**Build:** [#${env.BUILD_NUMBER}](${env.BUILD_URL})
|
||||
**Console:** [Console Output](${env.BUILD_URL}console)
|
||||
|
||||
**Queue Time:** ${queueTime}
|
||||
**Build Duration:** ${buildTime}
|
||||
**Status:** ${currentBuild.currentResult}
|
||||
""".trim()
|
||||
|
||||
discordSend(
|
||||
webhookURL: discordHook,
|
||||
title: buildTitle,
|
||||
description: description,
|
||||
result: currentBuild.currentResult
|
||||
)
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user