//Cloudogu EcoSystem Docs

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.

Fixed element group

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.