Fixed security issue during jenkins build

Danke an lcle
This commit is contained in:
Günther Hutter 2020-04-20 09:37:58 +00:00 committed by Gitea
commit 5550c1185a
2 changed files with 58 additions and 20 deletions

68
Jenkinsfile vendored
View File

@ -9,7 +9,7 @@ pipeline {
parameters { parameters {
string( string(
name: 'REPOSITORY', 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//' description: 'URL git-Repository DA//'
) )
string( string(
@ -17,13 +17,22 @@ pipeline {
defaultValue: './', defaultValue: './',
description: "Pfad zur DA in git (z.B.: dipl/)" 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 { stages {
stage('Checkout DA') { stage('Set some variables and clean workspace'){
steps { steps{
cleanWs() cleanWs()
script { 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 // add https to the url if not present
env.REPOSITORY = params.REPOSITORY env.REPOSITORY = params.REPOSITORY
if(!env.REPOSITORY.startsWith("https://")) { if(!env.REPOSITORY.startsWith("https://")) {
@ -40,19 +49,28 @@ pipeline {
if(env.GIT_PATH.startsWith("~/")) { if(env.GIT_PATH.startsWith("~/")) {
env.GIT_PATH = env.GIT_PATH.substring(2, (env.GIT_PATH.length() - 1)) 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'
} }
}
}
stage('Checkout DA') {
when {
expression { env.TEMPLATE_URL != env.REPOSITORY }
}
steps {
// checkout out the repository including submodules // checkout out the repository including submodules
// builduser acc used in git // builduser acc used in git
checkout([ checkout([
$class: 'GitSCM', $class: 'GitSCM',
branches: [[name: '*/master']], branches: [[name: "${env.GIT_BRANCH}"]],
doGenerateSubmoduleConfigurations: false, doGenerateSubmoduleConfigurations: false,
extensions: [[ extensions: [[
$class: 'SubmoduleOption', $class: 'SubmoduleOption',
disableSubmodules: false, disableSubmodules: true,
parentCredentials: true, parentCredentials: true,
recursiveSubmodules: true, recursiveSubmodules: false,
shallow: false, shallow: true,
reference: '', reference: '',
trackingSubmodules: false trackingSubmodules: false
]], ]],
@ -64,28 +82,46 @@ 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') { stage('Build DA') {
when { when {
expression { 'https://itsp.htl-leoben.at/git/Hg/HTLLE-DA-Vorlage.git' != env.REPOSITORY } expression { env.TEMPLATE_URL != env.REPOSITORY }
} }
steps { steps {
dir(env.GIT_PATH) { 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') { stage('Build only template') {
when { when {
expression { 'https://itsp.htl-leoben.at/git/Hg/HTLLE-DA-Vorlage.git' == env.REPOSITORY } expression { env.TEMPLATE_URL == env.REPOSITORY }
} }
steps { steps {
// build the template with the examples from DA point of view // build the template with the examples from DA point of view
sh '''#!/bin/bash sh """#!/bin/bash
mkdir HTLLE-DA-Vorlage cp -rv ${env.TEMPLATE_NAME}/example/. .
ls | grep -v HTLLE-DA-Vorlage | xargs mv -t HTLLE-DA-Vorlage make pdf -C ${env.TEMPLATE_NAME} SOURCEDIR=`pwd`
cp -rv HTLLE-DA-Vorlage/example/. . """
make pdf -C HTLLE-DA-Vorlage SOURCEDIR=$(pwd)
'''
} }
} }
stage('Test if diplomarbeit.pdf exists') { stage('Test if diplomarbeit.pdf exists') {

View File

@ -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. ### 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 #### 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. Ö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"` 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)). **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)).
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 ### Ü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. 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.