Repository-Informationen und -Tokens abrufen

get_repo_params ()

Die Funktion get-repo-params dient dazu, die Repo-Informationen abzurufen, wenn der Repo URL und der Repo-Token-Pfad angegeben werden.

Parameter

Die Funktion get-repo-params erfordert die folgenden Parameter:

  • repo_url Das Repository URL. Geben Sie die korrekte URL des Repo an, dessen Parameter gefunden werden müssen.
  • repo_token_path Pfad zu dem dem Repository zugeordneten Token.

Ausgabe

Die Funktion get-repo-params wird von der Pipeline bereitgestellt. Die Funktion gibt die folgenden Informationen zurück:

  • repo_name: Name des Repositorys.
  • repo_owner: Benutzer oder Ersteller des Repos.
  • scm_type: Typ der Versionskontrollverwaltung des Projekts (Git, GRIT).
  • api_url: API URL verlinkt mit dem Git Dienst, der das Repo hostet.

Funktionsaufruf

   read -r <repo_name> <repo_owner> <scm_type> <api_url> \
    < <(get_repo_params "<repo_url>" "<token_path>")

Verwenden Sie die Unterstrichvariable (_) im Lesebefehl als Platzhalter für eine Variable, deren Wert verworfen oder in nachfolgenden Teilen des Skripts nicht verwendet wird.

   read -r <repo_name> <_> <scm_type> <_> \
    < <(get_repo_params "<repo_url>" "<token_path>")

Verwenden Sie diese Variablen als Shell-Variablen in Ihrem Skript.

Beispiel

   ### <repo_url> = $EVIDENCE_LOCKER_URL
   ### <token_path> = ${WORKSPACE}/$EVIDENCE_TOKEN_PATH

   source "${ONE_PIPELINE_PATH}"/tools/get_repo_params

   read -r EVIDENCE_REPO_NAME EVIDENCE_REPO_ORG EVIDENCE_SCM_TYPE EVIDENCE_API_URL \
   < <(get_repo_params "$EVIDENCE_LOCKER_URL" "${WORKSPACE}/$EVIDENCE_TOKEN_PATH")

   ### Printing the value of EVIDENCE_LOCKER_URL

   echo "EVIDENCE_LOCKER_URL $EVIDENCE_LOCKER_URL"

get_repo_specific_token ()

Die Funktion get_repo_specific_token ruft das Token ab, das mit dem zuvor verwendeten Repo URL verbunden ist. Ein Repository-Token authentifiziert und autorisiert den Zugriff auf ein bestimmtes Repo.

Der Wert der Variablen (git-token-[repo_name]-[repo_org]) wird aus der Tabelle mit den Umgebungseigenschaften ausgewählt.

Beispiel

let repo_url = <repo_git_url> Dabei gilt:

<repo_name> = compliance-app
<repo_org> = user_name

Funktionsaufruf

   parameter
   ### repo_url
   token=$(get_repo_specific_token "<repo_url>")

Ausgabe:

Folgende Ausgabe wird generiert:

   echo "$repo_token"

Beispiel:

   ### parameter:
   # <repo_url>: URL of repo of which token is required.

   source "${ONE_PIPELINE_PATH}"/tools/get_repo_params

   repo_url= <repo_url>
   token=$(get_repo_specific_token "$repo_url")

   ### Output
   # repo_token

   echo "Repository Token: $token"

get_api_url ()

Die Funktion get_api_url bestimmt das entsprechende API URL für verschiedene Arten von Quellcode-Repositories.

Parameter:

  • repo_url: Die URL des Quellcode-Repositorys.

Funktionsaufruf:

   api_url=$(get_api_url "<repo_url>")

Rückgabewert:

Die Funktion zeigt den API URL-Wert für das angegebene Repository an.

Beispiel:


   source "${ONE_PIPELINE_PATH}/tools/get_repo_params"

   repo_url= <repo_url>
   api_url=$(get_api_url "$repo_url")

   echo "API URL for $repo_url is: $api_url"

SCM-Typen und entsprechende API-URLs:

  1. GitHub Integriert:

    • SCM-Typ: github_integrated
    • API URL: <api_url>
  2. GitHub konsolidiert:

    • SCM-Typ: githubconsolidated
    • Integriertes GitHub-Repository:
      • API URL: https://<repo_server_name>/api/v3 (wobei <repo_server_name> aus dem Repository URL extrahiert wird)
    • Nicht integriertes GitHub-Repository:
      • API-URL: https://api.github.com
  3. Gehostete Git:

    • SCM-Typ: hostedgit
    • API URL: https://<repo_server_name>/api/v4 (wobei <repo_server_name> aus dem Repository URL extrahiert wird)

Wenn der SCM-Typ keiner der unterstützten Typen ist, wird eine Warnung angezeigt.

get_repo_scm_type ()

Diese Funktion ermittelt den Source Code Management (SCM)-Typ eines bestimmten Repositorys URL.

Parameter:

  • repo_url: Die URL des Repositorys, für das der SCM-Typ ermittelt werden muss.

Funktionsaufruf:

   scm_type=$(get_repo_scm_type "<repo_url>")

Ausgabe:

Eine Kennzeichnung, die die SCM-Plattform angibt, die eine der folgenden sein kann:

  • Für GitLab-hosted Repositories: gitlab
  • Für GitHub-integrated Repositories: github -Für andere Fälle (standardmäßig GitHub): github

Beispiel:

   source "${ONE_PIPELINE_PATH}/tools/get_repo_params"

   repository_url= <repo_url>
   result=$(get_repo_scm_type "$repository_url")

   echo "SCM Type: $result"

In diesem Beispiel wird github als Ausgabewert angezeigt, da das zuvor bereitgestellte Repository URL mit GitHub integriert ist.

get_repo_owner ()

Diese Funktion extrahiert die Eigentümer- oder Untergruppeninformationen aus dem zuvor bereitgestellten Repository Git URL.

Parameter:

  • repo_url: Die URL des Git Repository.

Funktionsaufruf:

   Owner_name=$(get_repo_owner "<repo_url>")

Ausgabe:

  • Die Eigentümer- oder Untergruppeninformationen, die aus dem Repository URL extrahiert werden.

Beispiel:

   source "${ONE_PIPELINE_PATH}/tools/get_repo_params"

   repository_url= <repo_url>
   owner=$(get_repo_owner "$repository_url")

   echo "Repository Owner: $owner"

In diesem Beispiel wird user_name als Ausgabe angezeigt, da GitHub das Repository beherbergt URL das Konto oder die Untergruppe "username".

  • Wenn der Besitzer nicht gefunden wird, wird das erste Segment der URL als Besitzer extrahiert.

get_repo_name ()

Diese Funktion extrahiert den Namen eines Git Repositories aus einem gegebenen Repository URL.

Parameter:

  • repo_url: Die URL des Git Repository.

Funktionsaufruf:

   Repo_name=$(get_repo_name "<repo_url>")

Ausgabe:

Dieser Funktionsaufruf zeigt den Namen des Repositorys, der aus dem Repository URL extrahiert wurde, als Ihre Ausgabe an.

Beispiel:

   source "${ONE_PIPELINE_PATH}/tools/get_repo_params"

   repository_url= <repo_url>
   repo_name=$(get_repo_name "$repository_url")

   echo "Repository Name: $repo_name"

Dieses Beispiel würde compliance-app ausgeben, da das bereitgestellte Repository URL auf GitHub "compliance-app" genannt wird.

Wenn der Name nicht gefunden wird, wird versucht, das vorletzte Segment der URL als Name zu verwenden.