Konfiguration der Projekte
Die Projekte und Projektpfade für die zugehörigen Artefakte werden in einer Konfigurationsdatei im JSON-Format konfiguriert.
Die Projekte werden dabei als Array konfiguriert. Alle konfigurierten Projekte werden im Baseline-Dogu in der Projekte-Übersicht auf der Seite "Projekte" angezeigt.
1. Ändern der Konfiguration
Als Mitglied der Baseline-Admin-Gruppe sind Sie berechtigt, die Projektkonfiguration in der JSON-Datei anzupassen. Die Projektkonfiguration können Sie direkt im Baseline-Dogu bearbeiten, indem Sie auf die Schaltfläche Projekte verwalten
klicken, die sich auf der Seite "Projekte" befindet.
Der Ablageort der Konfigurationsdatei ist als String im etcd über den Befehl cesapp edit-config baseline
konfigurierbar. Der Konfigurationspfad ist dabei <baseline_path>/projects_json_url
.
2. Konfiguration eines Projekts
Folgende Attribute können Sie in der Konfigurationsdatei eines Projektes definieren:
id
scm_url
full_qualified_repository_name
additional_repository_names[]
*tag_regex
*nexus
*jenkins
*app_version
*
* Attribut ist optional.
Eine genauere Definition der einzelnen Attribute finden Sie in den folgenden Unterkapiteln.
2.1 Konfiguration der Projekt-ID
Jedes Projekt benötigt einen eindeutigen Namen. Der Name des Projektes wird im Attribut id
definiert:
- Attribut-Key:
id
- Datentyp: String
- Beispiel:
"id": "petclinic"
2.2 Konfiguration der SCM-URL
Eine Baseline benötigt immer Zugriff auf ein zugehöriges SCM-Repository. In der Projektkonfigurationsdatei muss daher die URL zum SCM-Manager, in dem die Repositories zu finden sind, im Attribut scm_url
angegeben werden:
- Attribut-Key:
scm_url
- Datentyp: String
- Beispiel:
"scm_url": "https://ecosystem.cloudogu.com/scm"
2.3 Konfiguration des SCM-Repositories
Eine Baseline bezieht sich auf einen konkreten Zustand des SCM-Repositories. Dieser wird im SCM-Repository über gesetzte Tags identifiziert. In der Projektkonfigurationsdatei muss daher ein SCM-Repository mit dem Attribut full_qualified_repository_name
angegeben werden:
- Attribut-Key:
full_qualified_repository_name
- Datentyp: String
- Beispiel:
"full_qualified_repository_name": "demo/spring-petclinic"
Zur eindeutigen Identifizierung wird das SCM-Repository mit seinem Namespace definiert: <namespace>/<repository name>
.
2.4 Konfiguration weiterer SCM-Repositories
Zur Identifikation von Baselines ist es optional möglich, weitere SCM-Repositories anzugeben, die berücksichtigt werden sollen:
- Attribut-Key:
additional_repository_names
- Datentyp: Array mit Strings
- Optional
- Beispiel:
"additional_repository_names": [
"demo/spring-petclinic-clone",
"demo/spring-petclinic-additionals"
]
Hat eines dieser zusätzlichen Repositories einen gleichen Tag wie das Haupt-Repository unter full_qualified_repository_name
, werden beide Zustände unter einer Baseline zusammengefasst.
Die SCM-Repositories müssen jeweils mit ihrem Namespace angegeben werden: <namespace>/<repository name>
.
2.5 Konfiguration der SCM-Tags
Mögliche Baselines werden über Tags identifiziert. Die zu berücksichtigen Tags können Sie als regulärer Ausdruck mit dem Attribut tag_regex
definieren:
- Attribut-Key:
tag_regex
- Datentyp: String
- Optional
- Beispiel:
"tag_regex": "^.*"
2.6 Konfiguration von Nexus-Artefakten
Für eine Baseline ist es optional möglich, zu konfigurieren, dass ein oder mehrere Artefakte aus einem Nexus beachtet werden sollen. Bei der Identifikation der Baseline-Elemente werden diese Artefakte dann zusätzlich zu den Zuständen eines Repositories berücksichtigt.
Die Konfiguration erfolgt über das Attribut 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.6.1 Konfiguration der Nexus-URL
Wenn Artefakte aus Nexus für eine Baseline berücksichtigt werden sollen, muss im Nexus-Struct die URL zur Nexus-Instanz konfiguriert werden:
- Attribut-Key:
url
- Datentyp: String
- Beispiel:
"url": "https://baseline.cloudogu.net/nexus"
2.6.2 Konfiguration von Nexus-Artefakten
Wenn Artefakte aus Nexus für eine Baseline berücksichtigt werden sollen, sollten Sie mindestens ein Artefakt in der Konfigurationsdatei konfigurieren. Die Konfiguration 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"
}
]
Ein Nexus-Artefakt-Objekt besteht aus dem Namen des Nexus-Repositories, einem Namen und des Pfades des Artefakts im Nexus-Repository.
Das Artefakt-Repository gibt das Repository an, in dem das Artefakt zu finden ist:
- Attribut-Key:
repository
- Datentyp: String
- Beispiel:
"repository": "maven-releases"
Der Artefakt-Name wird in der Baseline-Übersicht zur Identifizierung des Artefakts angezeigt:
- Attribut-Key:
name
- Datentyp: String
- Beispiel:
"name": "Petclinic JAR"
Der Pfad definiert, wo das Artefakt im angegebenen Nexus-Repository liegt:
- Attribut-Key:
location
- Datentyp: String
- Beispiel:
"location": "org/springframework/samples/spring-petclinic/${tag}/spring-petclinic-${tag}.jar"
Da sich der Pfad je nach verwendetem Tag unterscheiden sollte, wird der Ausdruck ${tag}
verwendet. Dieser wird beim Identifizieren der Baseline-Artefakte automatisch mit dem verwendeten Tag einer Baseline ersetzt.
2.7 Konfiguration von Jenkins-Build-Logdateien
Wenn Sie eine Jenkins-Build-Logdatei in der Baseline berücksichtigt haben möchten, können Sie dieses über den Parameter jenkins
definieren.
Dazu müssen Sie den Jenkins-Build so konfigurieren, dass eine Jenkins-Build-Logdatei automatisiert in den Nexus geladen wird. Die Jenkins-Build-Logdatei muss dabei ein Maven-Artefakt mit der Erweiterung log
sein. Diese wird für die Baseline über die Commit-ID des zugehörigen Tags der Baseline identifiziert.
Bei der Konfiguration des Attributs jenkins
geben Sie dann die Nexus-URL und das Nexus-Repository an:
- Attribut-Key:
jenkins
- Datentyp: Struct
- Optional
- Beispiel:
"jenkins": {
"nexus_url": "https://baseline.cloudogu.net/nexus",
"repository": "maven-releases"
},
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"
Im Repository-Attribut definieren Sie, in welchem Nexus-Repository die Jenkins-Build-Logdatei zu finden ist:
- Attribut-Key:
repository
- Datentyp: String
- Beispiel:
"repository": "maven-releases"
2.8 Konfiguration der App-Version
In der Konfiguration für eine Baseline gibt es das Attribut app_version
. Dieses Attribut wird vom
System automatisch definiert. Sie müssen für das Attribut keinen Wert definieren. Das Attribut ist lediglich für interne, technische Details erforderlich und kann auch nicht
verändert werden.
2.9 Beispiel einer Projektkonfiguration
Das folgende Beispiel zeigt eine vollständige Projektkonfiguration mit zwei Projekten petclinic
und cas
:
[
{
"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"
}
]
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-Repositories, ein Nexus-Artefakt und eine Jenkins-Build-Logdatei
konfiguriert.
Das Projekt cas
gibt die minimale Projektkonfiguration wieder. Eine Baseline würde nur aus dem Zustand des definierten Repositories bestehen, der über einen SCM-Tag definiert ist.