Merge branch 'master' of lcle/HTLLE-DA-Vorlage_Jenkinsfile into master

Änderungen an der DA Vorlage damit diese automatisch auf unserem GIT Server gebaut werden kann. Danke an lcle !
This commit is contained in:
Günther Hutter 2020-04-19 13:05:40 +00:00 committed by Gitea
commit bdb5d0d36b
4 changed files with 203 additions and 6 deletions

125
Jenkinsfile vendored Normal file
View File

@ -0,0 +1,125 @@
pipeline {
agent { label 'docker-lehrer' }
options {
buildDiscarder(logRotator(artifactNumToKeepStr: '0'))
skipDefaultCheckout(true)
}
parameters {
string(
name: 'REPOSITORY',
defaultValue: 'itsp.htl-leoben.at/git/Hg/HTLLE-DA-Vorlage.git',
description: 'URL git-Repository DA//'
)
string(
name: 'GIT_PATH',
defaultValue: './',
description: "Pfad zur DA in git (z.B.: dipl/)"
)
}
stages {
stage('Checkout DA') {
steps {
cleanWs()
script {
// add https to the url if not present
env.REPOSITORY = params.REPOSITORY
if(!env.REPOSITORY.startsWith("https://")) {
env.REPOSITORY = "https://" + env.REPOSITORY
}
// sanitize git dir path
env.GIT_PATH = params.GIT_PATH
if(!env.GIT_PATH.endsWith("/")) {
env.GIT_PATH += "/"
}
if(env.GIT_PATH.startsWith("/")) {
env.GIT_PATH = env.GIT_PATH.substring(1)
}
if(env.GIT_PATH.startsWith("~/")) {
env.GIT_PATH = env.GIT_PATH.substring(2, (env.GIT_PATH.length() - 1))
}
}
// checkout out the repository including submodules
// builduser acc used in git
checkout([
$class: 'GitSCM',
branches: [[name: '*/master']],
doGenerateSubmoduleConfigurations: false,
extensions: [[
$class: 'SubmoduleOption',
disableSubmodules: false,
parentCredentials: true,
recursiveSubmodules: true,
shallow: false,
reference: '',
trackingSubmodules: false
]],
submoduleCfg: [],
userRemoteConfigs: [[
credentialsId: 'd65d903b-21ee-4055-98aa-ef82a903e287',
url: "${env.REPOSITORY}"
]]
])
}
}
stage('Build DA') {
when {
expression { 'https://itsp.htl-leoben.at/git/Hg/HTLLE-DA-Vorlage.git' != env.REPOSITORY }
}
steps {
dir(env.GIT_PATH) {
sh 'make pdf -C HTLLE-DA-Vorlage SOURCEDIR=$(pwd)'
}
}
}
stage('Build only template') {
when {
expression { 'https://itsp.htl-leoben.at/git/Hg/HTLLE-DA-Vorlage.git' == env.REPOSITORY }
}
steps {
// build the template with the examples from DA point of view
sh '''#!/bin/bash
mkdir HTLLE-DA-Vorlage
ls | grep -v HTLLE-DA-Vorlage | xargs mv -t HTLLE-DA-Vorlage
cp -rv HTLLE-DA-Vorlage/example/. .
make pdf -C HTLLE-DA-Vorlage SOURCEDIR=$(pwd)
'''
}
}
stage('Test if diplomarbeit.pdf exists') {
steps {
dir(env.GIT_PATH) {
sh "test -f diplomarbeit.pdf"
}
}
}
}
post {
always {
script {
env.RECIPIENTS = ""
// get mail addresses
metadata = readFile(file: "${env.GIT_PATH}metadata.yaml").split('\n').each { line ->
if(line.contains("- build-notification:")) {
// remove yaml comments
if(line.contains('#')) {
line = line.substring(0, line.indexOf('#'))
}
def mailMatch = line =~ /[_A-Za-z0-9-]+(.[_A-Za-z0-9-]+)*@[A-Za-z0-9]+(.[A-Za-z0-9]+)*(.[A-Za-z]{2,})/
if(mailMatch) {
env.RECIPIENTS += (mailMatch[0][0] + ";")
}
}
}
}
dir(env.GIT_PATH) {
emailext attachmentsPattern: "diplomarbeit.pdf*",
to: "${env.RECIPIENTS}",
subject: "[${currentBuild.currentResult}] Diplomarbeit Build #${env.BUILD_NUMBER}",
body: "Job ${env.JOB_NAME}: ${env.JOB_URL}"
}
}
}
}

View File

@ -22,6 +22,8 @@ Wenn Sie Änderungen an diesem Template wünschen, dann erstellen Sie bitte ein
Damit die DA gebaut werden kann müssen mehrere Programme installiert sein. Theoretisch funktioniert das auch mit 'purem' Windows, aber einfacher ist es die Arbeit mit Hilfe von Linux zu erstellen. Aus diesem Grund finden Sie hier nur die Anweisungen die sich auf einem **Ubuntu 18.04 LTS** beziehen.
Wenn der HTL eigene GIT-Server verwendet wird, brauchen Sie die Tools nicht unbedingt installieren und Sie können sich die Arbeit als PDF per E-Mail zuschicken lassen. Mehr dazu weiter [unten](#remote)
## Windows
Wenn man Windows 10 als primäres Betriebssystem verwendet hat man zwei Möglichkeiten um zu einer Linux Umgebung zu kommen:
@ -93,7 +95,7 @@ Wenn Sie ein lokales Repo haben, dann wird dieses Repository als [git-submodule]
~/Diplomarbeit$ git submodule add https://itsp.htl-leoben.at/git/Hg/HTLLE-DA-Vorlage.git
```
Der erste Befehl verhindert dass Änderungen an Berechtigungen (wie sie WSL im Hintegrund durchführt) dazu führen dass die Datei als modifiziert angesehen wird. Der zweite Befehl holt das Submodul dazu.
Der erste Befehl verhindert dass Änderungen an Berechtigungen (wie sie WSL im Hintergrund durchführt) dazu führen dass die Datei als modifiziert angesehen wird. Der zweite Befehl holt das Submodul dazu.
Falls das Template durch hg geändert wird können Sie mit Hilfe des Befehls `git submodule update --remote` ihre derzeitige Version durch die jeweils aktuellste Version des Templates ersetzen. Damit die Änderungen sichtbar werden müssen Sie natürlich die Diplomarbeit vorher neu bauen.
@ -223,6 +225,10 @@ da-appendix:
- abschnitt: Diplomatbeitsvereinbarung
pdf-file: HTL-DA-Vereinbarung.pdf
da-build-properties:
- build-notification: Diplomarbeit - DA_2021_Thema <269bc6a5.O365.htl-leoben.at@emea.teams.ms>
- build-notification: mytesms@adress.com
---
```
@ -238,20 +244,82 @@ Um das Zusammensuchen der Quellenangaben für Bücher zu vereinfachen kann man i
### Bauen der Diplomarbeit als PDF Datei
#### Lokal
Damit das PDF für die Diplomarbeit erstellt wird muss (aus Ihrem Basisverzeichnis heraus) folgender Befehl abgesetzt werden:
```
make pdf -C HTLLE-DA-Vorlage INPUTDIR=$(pwd)
make pdf -C HTLLE-DA-Vorlage SOURCEDIR=$(pwd)
```
Danach erscheint (sofern alles gut geht) die Datei `HTLLE-DA-Vorlage/output/diplomarbeit.pdf`. Sollte die Datei bereits von einem früheren Lauf her existiert haben wird sie einfach überschrieben. Sollte die Arbeit nicht erfolgreich gebaut werden können, dann kann in der Datei `pandoc.log` der Grund dafür heruasgefunden werden.
Danach erscheint (sofern alles gut geht) die Datei `HTLLE-DA-Vorlage/output/diplomarbeit.pdf`. Sollte die Datei bereits von einem früheren Lauf her existiert haben wird sie einfach überschrieben. Sollte die Arbeit nicht erfolgreich gebaut werden können, dann kann in der Datei `pandoc.log` der Grund dafür herausgefunden werden.
Damit Sie nicht immer den gesamten Befehl schreiben müssen können Sie sich auch einen Alias setzen:
```
alias da="make pdf -C HTLLE-DA-Vorlage INPUTDIR=$(pwd)"
alias da="make pdf -C HTLLE-DA-Vorlage SOURCEDIR=$(pwd)"
```
Damit beschränkt sich Ihre eigentliche Arbeit darauf, die Markdoen Files zu editieren (nicht veressen zu speichern) und anschließend den neuen Alias `da` aufzurufen. Danach haben Sie immer die neuste Diplomarbeit gebaut.
Damit beschränkt sich Ihre eigentliche Arbeit darauf, die Markdown Files zu editieren (nicht veressen zu speichern) und anschließend den neuen Alias `da` aufzurufen. Danach haben Sie immer die neuste Diplomarbeit gebaut.
#### Remote
Sollten Sie die notwendigen Tools (pandoc, LaTeX, etc.) nicht lokal installieren wollen und Sie haben Ihre Diplomarbeit am GIT-Server der HTL versioniert, dann können Sie Ihre PDF auch am [Jenkins](https://itsp.htl-leoben.at/ci) bauen und sich per E-Mail zuschicken lassen. Es wird dabei immer das aktuelle Template verwendet.
Öffnen Sie dazu den [Jenkins-Job](https://itsp.htl-leoben.at/ci/job/HTLLE-Diplomarbeit/build?delay=0sec) und melden Sie sich ggf. mit Ihren Benutzerdaten (z.B.: `1911wit00`) an.
Für `REPOSITORY` tragen Sie bitte Ihre Repository-URL (z.B: `https://itsp.htl-leoben.at/git/1911wit00/Diplomarbeit.git`) und für `GIT_PATH` ggf. den Unterordner, in dem sich Ihre Diplomarbeit auf GIT befindet (z.B.: `diplomarbeit/`), ein.
Beispiel: `GIT_PATH` ist `"text"`
```
$ tree ~/Diplomarbeit
.
├── source
└── text
├── 10-einleitung.md
├── 20-zielsetzung.md
├── 30-ausarbeitungen.md
├── 31-ausarbeitung_schueler1.md
├── 32-ausarbeitung_schueler2.md
├── 40-zusammenfassung.md
├── HTLLE-DA-Vorlage
│ ├── ... Inhalte aus der DA Vorlage
│ └── ... wurden hier ausgeblendet
├── img
│   └── graph.png
├── literatur.bib
├── metadata.yaml
└── pdfs
├── HTL-DA-Vereinbarung.pdf
├── README
├── begleitprotokolle.pdf
├── pandoc-manual.pdf
└── projekthandbuch.pdf
```
Beispiel: `GIT_PATH` ist default `"./"`
```
$ tree ~/Diplomarbeit
.
├── 10-einleitung.md
├── 20-zielsetzung.md
├── 30-ausarbeitungen.md
├── 31-ausarbeitung_schueler1.md
├── 32-ausarbeitung_schueler2.md
├── 40-zusammenfassung.md
├── HTLLE-DA-Vorlage
│ ├── ... Inhalte aus der DA Vorlage
│ └── ... wurden hier ausgeblendet
├── img
│   └── graph.png
├── literatur.bib
├── metadata.yaml
└── pdfs
├── HTL-DA-Vereinbarung.pdf
├── README
├── begleitprotokolle.pdf
├── pandoc-manual.pdf
└── projekthandbuch.pdf
```
**Wichtig:** Das fertige PDF wird an die E-Mail Adressen aus `metadata.yaml` verschickt! Die E-Mail Adressen müssen mit `"- build-notification"` gekennzeichnet sein ([siehe oben](#befüllen-der-speziellen-dateien)).
### Übertragen des aktuellen Standes nach GIT

View File

@ -40,4 +40,8 @@ da-appendix:
- abschnitt: Diplomatbeitsvereinbarung
pdf-file: HTL-DA-Vereinbarung.pdf
da-build-properties:
- build-notification: Diplomarbeit - DA_2021_Thema <269bc6a5.O365.htl-leoben.at@emea.teams.ms>
- build-notification: mytesms@adress.com
---