Konfiguration der Projekte
In einer JSON-Datei können verschiedene Einstellungen für Projekte, zu denen Baselines gehören, vorgenommen werden. Der Ablageort dieser Projektkonfigurationsdatei ist konfigurierbar (siehe Konfiguration des Baseline-Dogus)
Der Admin-Benutzer ist berechtigt, die Projektkonfiguration auf der Projektseite im Baseline-Tool zu ändern, indem er
auf die Schaltfläche Projekte verwalten
klickt.
Die Konfiguration der einzelnen Projekte erfolgt als Array.
1. Beispiel einer vollständigen Projektkonfiguration mit zwei Projekten
Das folgende Beispiel zeigt eine vollständige Projektkonfiguration mit den zwei Projekten petclinic
und cas
.
Das Projekt petclinic
stellt eine Projektkonfiguration mit allen optionalen Attributen dar. In diesem Projekt sind für
das Sammeln von Baseline-Elementen zusätzliche SCM-Repositorys, ein Nexus-Artefakt und eine Jenkins-Build-Logdatei
konfiguriert.
Das Projekt cas
gibt eine simple Projektkonfiguration wieder, in dem eine Baseline jeweils nur aus einem einzigen
SCM-Tag besteht.
[
{
"id": "petclinic",
"scm_url": "https://baseline.cloudogu.net/scm",
"full_qualified_repository_name": "baselineTest/spring-petclinic",
"additional_repository_names": [
"baselineTest/summer-petclinic",
"baselineTest/fall-petclinic",
"baselineTest/winter-petclinic"
],
"tag_regex": "^.*",
"nexus": {
"url": "https://baseline.cloudogu.net/nexus",
"nexus_artefacts": [
{
"repository": "maven-releases",
"name": "Petclinic JAR",
"location": "org/springframework/samples/spring-petclinic/${tag}/spring-petclinic-${tag}.jar"
}
]
},
"jenkins": {
"nexus_url": "https://baseline.cloudogu.net/nexus",
"repository": "maven-releases"
},
"app_version": "0.5.0-1"
},
{
"id": "cas",
"scm_url": "https://baseline.cloudogu.net/scm",
"full_qualified_repository_name": "baselineTest/cas",
"tag_regex": "^.*",
"app_version": "0.5.0-1"
}
]
2. Konfiguration eines einzelnen Projekts
The individual configuration options of a single project are described in more detail below.
2.1 Konfiguration der Projekt-ID
Jedes Projekt hat eine eindeutige ID. Die ID des Projekts entspricht gleichzeitig dem Namen des Projekts. Alle konfigurierten Projekte werden in der Projekte-Übersicht angezeigt.
- Attribut-Key:
id
- Datentyp: String
- Beispiel:
"id": "petclinic"
2.2 Konfiguration der SCM-Repositorys
Für jedes Projekt müssen Einstellungen für den Zugriff auf den SCM-Manager konfiguriert werden. Potenzielle Baselines werden im SCM-Manager ermittelt.
2.2.1 Konfiguration der SCM-URL
In der Projektkonfigurationsdatei muss die URL zu dem SCM-Manager, in dem die konfigurierten Repositorys zu finden sind, angegeben werden.
- Attribut-Key:
scm-url
- Datentyp: String
- Beispiel:
"scm_url": "https://ecosystem.cloudogu.com/scm"
2.2.2 Konfiguration des SCM-Repositorys mit den potenziellen Baselines
In der Projektkonfigurationsdatei muss ein SCM-Repository angegeben werden, in dem die SCM-Tags der potenziellen Baselines zu finden sind. Bei der Ermittlung der potenziellen Baselines wird dieses Repository nach den Tags durchsucht, die dem konfigurierten Tag-Pattern entsprechen.
Beim Sammeln der Elemente einer Baseline wird der entsprechende SCM-Tag mit eingesammelt und in der
Baseline-Detailansicht unter SCM-Manager
angezeigt.
Das SCM-Repository muss mit seinem Namespace angegeben werden: <namespace>/<repository name>
.
- Attribut-Key:
full_qualified_repository_name
- Datentyp: String
- Beispiel:
full_qualified_repository_name": "demo/spring-petclinic"
2.2.3 Konfiguration von weiteren SCM-Repositorys für das Sammeln von SCM-Tags
Für das Sammeln von Baseline-Elementen ist es optional möglich, weitere SCM-Repositorys anzugeben. Beim Sammeln der
Baseline-Elemente werden diese Repositorys dann mit berücksichtigt. Dabei wird in diesem Repositorys nach SCM-Tags mit
gleichem Namen wie die Baseline gesucht. Die Tags, die aus den hier konfigurierten Repositorys gesammelt werden, werden
in der Baseline-Detailansicht unter SCM-Manager
angezeigt.
Die SCM-Repositorys müssen jeweils mit Namespace angegeben werden: <namespace>/<repository name>
.
- Attribut-Key:
additional_repository_names
- Datentyp: Array mit Strings
- Optional
- Beispiel:
"additional_repository_names": [
"demo/spring-petclinic-clone",
"demo/spring-petclinic-additionals"
]
2.2.4 Konfiguration des Patterns für die SCM-Tags
In der Projektkonfigurationsdatei muss ein Pattern (regulärer Ausdruck) für die zu berücksichtigen SCM-Tags angegeben werden. Bei der Ermittlung der potenziellen Baselines werden nur diejenigen Tags berücksichtigt, die dem konfigurierten Pattern entsprechen.
- Attribut-Key:
- Datentyp: String
- Beispiel:
"tag_regex": "^.*"
2.3 Konfiguration zum Sammeln von Artefakten aus Nexus
Für das Sammeln von weiteren Baseline-Elementen ist es optional möglich, ein Nexus mit einem oder mehreren zu sammelnden
Artefakten zu konfigurieren. Beim Sammeln der Baseline-Elemente werden diese Artefakte dann mit berücksichtigt. Die hier
gesammelten Artefakte werden in der Baseline-Detailansicht unter Nexus
angezeigt.
Die Konfiguration erfolgt unter dem Punkt "nexus": { ... }
- Attribut-Key:
nexus
- Datentyp: Struct
- Optional
- Beispiel:
"nexus": {
"url": "https://baseline.cloudogu.net/nexus",
"nexus_artefacts": [
{
"repository": "maven-releases",
"name": "Petclinic JAR",
"location": "org/springframework/samples/spring-petclinic/${tag}/spring-petclinic-${tag}.jar"
}
]
}
2.3.1 Konfiguration der Nexus-URL
Wenn Artefakte aus Nexus gesammelt werden sollen, muss in dem Nexus-Struct die URL zu der Nexus-Instanz konfiguriert werden.
- Attribut-Key:
url
- Datentyp: String
- Beispiel:
"url": "https://baseline.cloudogu.net/nexus"
2.3.2 Konfiguration von Nexus-Artefakten
Es können ein oder mehrere Artefakte angegeben werden, die aus Nexus gesammelt werden. Die Konfiguration der Artefakte erfolgt dabei als ein Array von Nexus-Artefakt-Objekten.
- Attribut-Key:
nexus_artefacts
- Datentyp: Array
- Beispiel:
"nexus_artefacts": [
{
"repository": "maven-releases",
"name": "Petclinic JAR",
"location": "org/springframework/samples/spring-petclinic/${tag}/spring-petclinic-${tag}.jar"
}
]
2.3.2.1 Konfiguration eines Nexus-Artefakts
Für die Konfiguration eines Nexus-Artefakts müssen das Repository, der Name und der Ort des Artefakts angegeben des werden.
2.3.2.2 Konfiguration des Artefakt-Repositorys
Das Artefakt-Repository gibt das Repository an, in dem nach dem bestimmten Artefakt gesucht wird.
- Attribut-Key:
repository
- Datentyp: String
- Beispiel:
"repository": "maven-releases"
2.3.2.3 Konfiguration des Artefakt-Namens
Der Artefakt-Name gibt den Namen an, unter dem das Artefakt an der Baseline gespeichert wird.
- Attribut-Key:
name
- Datentyp: String
- Beispiel:
"name": "Petclinic JAR"
2.3.2.4 Konfiguration des Artefakt-Ortes
Der Ort gibt den Namen an, unter dem das zu sammelnde Artefakt gefunden werden kann. Die Lokation kann andere Werte aus der Projektkonfiguration als Platzhalter verwenden.
- Attribut-Key:
location
- Datentyp: String
- Beispiel:
"location": "org/springframework/samples/spring-petclinic/${tag}/spring-petclinic-${tag}.jar"
2.4 Konfiguration zum Sammeln einer Jenkins-Build-Logdatei
Die Jenkins-Build-Logdatei wird - anders als der Name vielleicht vermuten lässt - nicht direkt aus dem Jenkins selbst, sondern aus Nexus gesammelt. Dort wird die Build-Logdatei vom Jenkins abgelegt.
Konkret wird beim Jenkins-Build über eine Jenkins-Library ein Step zur Verfügung gestellt, über den ein sogenannter Build-Report erzeugt wird. Dieser extrahiert die für den Build relevanten Informationen und lädt sie nach dem deployment des eben generierten Artefakts in den Nexus.
Beim Sammeln der Baseline-Elemente wird für die Jenkins-Build-Logdatei im unter jenkins
konfigurierten
Nexus-Repository nach einer Jenkins-Build-Logdatei (maven.extension=log
) gesucht, die anhand der Revision (Commit-ID)
des Baseline-Tags ermittelt wird. Die Commit-ID ist der classifier
der Maven-Dependency.
Die Konfiguration erfolgt unter dem Punkt "jenkins": { ... }
- Attribut-Key:
jenkins
- Datentyp: Struct
- Optional
- Beispiel:
"jenkins": {
"nexus_url": "https://baseline.cloudogu.net/nexus",
"repository": "maven-releases"
},
2.4.1 Konfiguration eines Nexus-Repositorys für das Sammeln der Jenkins-Build-Logdatei
Wenn eine Jenkins-Build-Logdatei aus Nexus gesammelt werden soll, müssen in dem Jenkins-Struct die URL zu der Nexus-Instanz und das Repository konfiguriert werden.
2.4.1.1 Konfiguration der Nexus-URL
Die Nexus-URL gibt die URL zum Nexus an, in dem sich das Repository mit den Jenkins-Build-Logdateien befindet.
- Attribut-Key:
nexus_url
- Datentyp: String
- Beispiel:
"nexus_url": "https://baseline.cloudogu.net/nexus"
2.4.1.2 Konfiguration des Repositorys
Das Repository gibt das Repository an, in dem nach der Jenkins-Build-Logdatei gesucht wird.
- Attribut-Key:
repository
- Datentyp: String
- Beispiel:
"repository": "maven-releases"
2.4.2 Beispiel-Abfrage zum Sammeln der Jenkins-Build-Log-Datei
Die vom Baseline-Dogu an Nexus gesendete Abfrage zum Sammeln der Jenkins-Build-Log-Datei sieht dann beispielsweise so
aus:
https://baseline.cloudogu.net/nexus/service/rest/v1/search/assets?repository=maven-releases&maven.extension=log&maven.classifier=eb6b0757d6c24727417b417247f73805ad60c0e6
Erläuterung zur Zusammensetzung der URL:
https://baseline.cloudogu.net/nexus
ist die konfiguriertenexus_url
repository=maven-releases
:maven-releases
ist das konfigurierterepository
maven.extension=log
gibt an, dass sich um ein Maven-Artefakt mit der Erweiterunglog
handelt.maven.classifier=eb6b0757d6c24727417b417247f73805ad60c0e6
gibt den Klassizifierer des Maven-Artefakts an.eb6b0757d6c24727417b417247f73805ad60c0e6
ist die zum Commit des Tags zugehörige Commit-ID (Revision).
2.5 App-Version
Im Textfeld für das Verwalten von Projekten wird pro Projekt auch ein Feld app_version
angezeigt. Dieser Wert wird vom
System automatisch geschrieben und ist lediglich für interne, technische Details erforderlich und kann auch nicht
verändert werden.