From 1f7907f0d220b2b9a00a1d2a42d71a8ae95e0bf9 Mon Sep 17 00:00:00 2001 From: Clemens Lauermann Date: Sun, 19 Apr 2020 18:50:53 +0200 Subject: [PATCH 1/4] add branch option to build job --- Jenkinsfile | 13 ++++++++++--- README.md | 6 ++++-- 2 files changed, 14 insertions(+), 5 deletions(-) diff --git a/Jenkinsfile b/Jenkinsfile index 0ff7210..ecc4bfa 100644 --- a/Jenkinsfile +++ b/Jenkinsfile @@ -11,12 +11,17 @@ pipeline { 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/)" - ) + ) + string( + name: 'GIT_BRANCH', + defaultValue: '*/master', + description: "Expert: Wenn Sie einen anderen als den 'master' Branch bauen möchten" + ) } stages { @@ -40,12 +45,14 @@ pipeline { if(env.GIT_PATH.startsWith("~/")) { env.GIT_PATH = env.GIT_PATH.substring(2, (env.GIT_PATH.length() - 1)) } + // be sure branch is set + env.GIT_BRANCH = params.GIT_BRANCH ?: '*/master' } // checkout out the repository including submodules // builduser acc used in git checkout([ $class: 'GitSCM', - branches: [[name: '*/master']], + branches: [[name: "${env.GIT_BRANCH}"]], doGenerateSubmoduleConfigurations: false, extensions: [[ $class: 'SubmoduleOption', diff --git a/README.md b/README.md index 2107d79..3d332aa 100644 --- a/README.md +++ b/README.md @@ -62,7 +62,7 @@ Wenn Sie mit einer neuen Diplomarbeit beginnen, dann gehen Sie am besten wie fol ### Erstellen eines leeren GIT Repositories in dem Sie Ihre DA Daten verwalten werden. -Es ist prinzipiell egal auf welchem GIT Server sie Ihr Repository hosten. Wir empfehlen dies aber auf dem HTL eigenen `https://itsp.htl-leoben.at/git` Server zu machen. **Sollten Sie Ihre Arbeit auf einem anderen Server hosten, dann achten Sie darauf dass sie ein privates Repository verwenden** denn sonst wäre der Inhalt der Arbeit bereits (unabsichtlich) veröffentlicht und beim Plagiatscheck würde Ihre gesamte Arbeit als Plagiat aufscheinen - und in weiterer Folge dann abgelehnt werden. +Es ist prinzipiell egal auf welchem GIT Server sie Ihr Repository hosten. Wir empfehlen dies aber auf dem HTL eigenen `https://itsp.htl-leoben.at/git` Server zu machen. **Sollten Sie Ihre Arbeit auf einem anderen Server hosten, dann achten Sie darauf dass sie ein privates Repository verwenden** denn sonst wäre der Inhalt der Arbeit bereits (unabsichtlich) veröffentlicht und beim Plagiatscheck würde Ihre gesamte Arbeit als Plagiat aufscheinen - und in weiterer Folge dann abgelehnt werden. Auch am HTL eigenen GIT-Server kann es aus Plagiats-Gründen ratsam sein, für die Diplomarbeit ein privates Repository zu verwenden. #### Fall 1: Sie beginnen mit einem komplett neuen Repository @@ -265,7 +265,7 @@ Sollten Sie die notwendigen Tools (pandoc, LaTeX, etc.) nicht lokal installieren Ö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. +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. Wenn Sie nicht wissen was in GIT `branches` sind, brauchen Sie den Parameter `GIT_BRANCH` nicht anpassen. Beispiel: `GIT_PATH` ist `"text"` ``` @@ -321,6 +321,8 @@ $ tree ~/Diplomarbeit **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)). +Das Submodule der Vorlage muss mit dem Namen `HTLLE-DA-Vorlage` hinzugefügt sein (siehe `tree` Ansicht von oben). + ### Übertragen des aktuellen Standes nach GIT Es mach Sinn, die Diplomarbeit (auch nach kleinen Änderungen) immer wieder nach GIT zu übertragen. Damit ist sie optimal gesichert und falls Ihre Teammitglieder auch an der DA Arbeiten bekommen sie auch Zugang zum aktuellsten Stand. Falls Sie noch nicht mit GIT gearbeitet haben, stellen die folgenden Absätze eine (ultra-) [Kurzeinführung](https://rogerdudler.github.io/git-guide/) dar. From ed3c301872025f6fbbf0e9950e55c293d99020ce Mon Sep 17 00:00:00 2001 From: Clemens Lauermann Date: Mon, 20 Apr 2020 10:16:24 +0200 Subject: [PATCH 2/4] add some vars clean up code --- Jenkinsfile | 34 +++++++++++++++++++++------------- 1 file changed, 21 insertions(+), 13 deletions(-) diff --git a/Jenkinsfile b/Jenkinsfile index ecc4bfa..ddb577c 100644 --- a/Jenkinsfile +++ b/Jenkinsfile @@ -9,7 +9,7 @@ pipeline { parameters { string( name: 'REPOSITORY', - defaultValue: 'itsp.htl-leoben.at/git/Hg/HTLLE-DA-Vorlage.git', + defaultValue: 'https://itsp.htl-leoben.at/git/Hg/HTLLE-DA-Vorlage.git', description: 'URL git-Repository DA//' ) string( @@ -25,10 +25,13 @@ pipeline { } stages { - stage('Checkout DA') { - steps { - cleanWs() + stage('Set some variables'){ + steps{ script { + // set template values + env.TEMPLATE_URL = 'https://itsp.htl-leoben.at/git/Hg/HTLLE-DA-Vorlage.git' + env.TEMPLATE_NAME = 'HTLLE-DA-Vorlage' + // add https to the url if not present env.REPOSITORY = params.REPOSITORY if(!env.REPOSITORY.startsWith("https://")) { @@ -48,6 +51,11 @@ pipeline { // be sure branch is set env.GIT_BRANCH = params.GIT_BRANCH ?: '*/master' } + } + } + stage('Checkout DA') { + steps { + cleanWs() // checkout out the repository including submodules // builduser acc used in git checkout([ @@ -73,26 +81,26 @@ pipeline { } stage('Build DA') { when { - expression { 'https://itsp.htl-leoben.at/git/Hg/HTLLE-DA-Vorlage.git' != env.REPOSITORY } + expression { env.TEMPLATE_URL != env.REPOSITORY } } steps { dir(env.GIT_PATH) { - sh 'make pdf -C HTLLE-DA-Vorlage SOURCEDIR=$(pwd)' + sh "make pdf -C ${env.TEMPLATE_NAME} SOURCEDIR=`pwd`" } } } stage('Build only template') { when { - expression { 'https://itsp.htl-leoben.at/git/Hg/HTLLE-DA-Vorlage.git' == env.REPOSITORY } + expression { env.TEMPLATE_URL == 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) - ''' + sh """#!/bin/bash + mkdir ${env.TEMPLATE_NAME} + ls | grep -v ${env.TEMPLATE_NAME} | xargs mv -t ${env.TEMPLATE_NAME} + cp -rv ${env.TEMPLATE_NAME}/example/. . + make pdf -C ${env.TEMPLATE_NAME} SOURCEDIR=`pwd` + """ } } stage('Test if diplomarbeit.pdf exists') { From aed5337dc489c6eb0f3277e18e761c0dabe0d127 Mon Sep 17 00:00:00 2001 From: Clemens Lauermann Date: Mon, 20 Apr 2020 10:42:59 +0200 Subject: [PATCH 3/4] always ignore submodule templates and check out a fresh copy of HTLLE-DA-Vorlage --- Jenkinsfile | 35 ++++++++++++++++++++++++++++------- 1 file changed, 28 insertions(+), 7 deletions(-) diff --git a/Jenkinsfile b/Jenkinsfile index ddb577c..0e21d3c 100644 --- a/Jenkinsfile +++ b/Jenkinsfile @@ -25,8 +25,9 @@ pipeline { } stages { - stage('Set some variables'){ + stage('Set some variables and clean workspace'){ steps{ + cleanWs() script { // set template values env.TEMPLATE_URL = 'https://itsp.htl-leoben.at/git/Hg/HTLLE-DA-Vorlage.git' @@ -54,8 +55,10 @@ pipeline { } } stage('Checkout DA') { + when { + expression { env.TEMPLATE_URL != env.REPOSITORY } + } steps { - cleanWs() // checkout out the repository including submodules // builduser acc used in git checkout([ @@ -64,10 +67,10 @@ pipeline { doGenerateSubmoduleConfigurations: false, extensions: [[ $class: 'SubmoduleOption', - disableSubmodules: false, + disableSubmodules: true, parentCredentials: true, - recursiveSubmodules: true, - shallow: false, + recursiveSubmodules: false, + shallow: true, reference: '', trackingSubmodules: false ]], @@ -79,6 +82,26 @@ pipeline { ]) } } + stage('Checkout template') { + steps { + // remove template folder and fresh checkout + sh "rm -rf ${env.TEMPLATE_NAME}" + checkout([ + $class: 'GitSCM', + branches: [[name: '*/master']], + doGenerateSubmoduleConfigurations: false, + extensions: [[ + $class: 'RelativeTargetDirectory', + relativeTargetDir: "${env.GIT_PATH}${env.TEMPLATE_NAME}" + ]], + submoduleCfg: [], + userRemoteConfigs: [[ + credentialsId: 'd65d903b-21ee-4055-98aa-ef82a903e287', + url: "${env.TEMPLATE_URL}" + ]] + ]) + } + } stage('Build DA') { when { expression { env.TEMPLATE_URL != env.REPOSITORY } @@ -96,8 +119,6 @@ pipeline { steps { // build the template with the examples from DA point of view sh """#!/bin/bash - mkdir ${env.TEMPLATE_NAME} - ls | grep -v ${env.TEMPLATE_NAME} | xargs mv -t ${env.TEMPLATE_NAME} cp -rv ${env.TEMPLATE_NAME}/example/. . make pdf -C ${env.TEMPLATE_NAME} SOURCEDIR=`pwd` """ From 6eda6797f61a390f4efc7c797d3c801b8fb315b5 Mon Sep 17 00:00:00 2001 From: Clemens Lauermann Date: Mon, 20 Apr 2020 10:47:12 +0200 Subject: [PATCH 4/4] add info for remote build and submodule --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 3d332aa..8b6ed2e 100644 --- a/README.md +++ b/README.md @@ -321,7 +321,7 @@ $ tree ~/Diplomarbeit **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)). -Das Submodule der Vorlage muss mit dem Namen `HTLLE-DA-Vorlage` hinzugefügt sein (siehe `tree` Ansicht von oben). +Es muss nicht einmal die Vorlage als GIT submodule im Repository eingecheckt sein, weil hier während des Build Prozesses die aktuelle verwendet wird. ### Übertragen des aktuellen Standes nach GIT