Extraction des informations et des jetons du référentiel

get_repo_params ()

La fonction get-repo-params est conçue pour récupérer les informations relatives au repo, lorsqu'on lui fournit le repo URL et le chemin du jeton Repo.

Paramètre

La fonction get-repo-params requiert les paramètres suivants:

  • repo_url Le référentiel URL. Fournir l'url correcte du repo dont les paramètres doivent être trouvés.
  • repo_token_path Chemin d'accès au jeton associé au référentiel.

Sortie

La fonction get-repo-params est fournie par le pipeline. La fonction renvoie les informations suivantes :

  • repo_name: Nom du référentiel.
  • repo_owner: Utilisateur ou créateur du repo.
  • scm_type: Type de gestion du contrôle de source du repo (Git, GRIT).
  • api_url: API URL liée au service Git qui héberge le repo.

Appel de fonction

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

Utilisez la variable de soulignement (_) dans la commande de lecture comme un espace réservé pour une variable dont la valeur est rejetée ou n'est pas utilisée dans les parties suivantes du script.

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

Utilisez ces variables comme variables shell dans votre script.

Exemple

   ### <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 ()

La fonction get_repo_specific_token récupère le jeton associé au repo URL utilisé précédemment. Un jeton de dépôt authentifie et autorise l'accès à un dépôt spécifique.

Il sélectionne la valeur de la variable (git-token-[repo_name]-[repo_org]) dans la table des propriétés d'environnement.

Exemple

let repo_url = <repo_git_url> où :

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

Appel de fonction

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

Sortie :

La sortie suivante est générée :

   echo "$repo_token"

Exemple :

   ### 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 ()

La fonction get_api_url détermine le API URL approprié pour différents types de dépôts de code source.

Paramètres :

  • repo_url: Le site URL du dépôt de code source.

Appel de fonction:

   api_url=$(get_api_url "<repo_url>")

Valeur de retour:

La fonction affiche la valeur API URL pour le référentiel donné.

Exemple :


   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"

Types SCM et URL d'API correspondantes:

  1. GitHub intégré:

    • Type SCM: github_integrated
    • API URL: <api_url>
  2. GitHub Consolidé:

    • Type SCM: githubconsolidated
    • Référentiel GitHub intégré:
      • API URL: https://<repo_server_name>/api/v3 (où <repo_server_name> est extrait du référentiel URL )
    • Référentiel GitHub non intégré:
      • Adresse URL de l'API : https://api.github.com
  3. Githébergé:

    • Type SCM: hostedgit
    • API URL: https://<repo_server_name>/api/v4 (où <repo_server_name> est extrait du référentiel URL )

Si le type SCM n'est pas l'un des types pris en charge, un message d'avertissement s'affiche.

get_repo_scm_type ()

Cette fonction détermine le type de gestion du code source (SCM) d'un référentiel donné URL.

Paramètre :

  • repo_url: Le site URL du référentiel pour lequel le type de SCM doit être déterminé.

Appel de fonction:

   scm_type=$(get_repo_scm_type "<repo_url>")

Sortie :

Une étiquette indiquant la plate-forme SCM, qui peut être l'une des suivantes :

  • Pour les dépôts hébergés par GitLab-hosted: gitlab
  • Pour les dépôts GitHub-integrated: github -Pour les autres cas ( GitHubpar défaut): github

Exemple d'utilisation :

   source "${ONE_PIPELINE_PATH}/tools/get_repo_params"

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

   echo "SCM Type: $result"

Cet exemple affiche github comme valeur de sortie parce que le référentiel URL fourni précédemment est intégré à GitHub.

get_repo_owner ()

Cette fonction extrait les informations relatives au propriétaire ou au sous-groupe du référentiel Git URL fourni précédemment.

Paramètre :

  • repo_url: Le URL du référentiel Git.

Appel de fonction:

   Owner_name=$(get_repo_owner "<repo_url>")

Sortie :

  • Les informations sur le propriétaire ou le sous-groupe qui sont extraites du référentiel URL.

Exemple d'utilisation :

   source "${ONE_PIPELINE_PATH}/tools/get_repo_params"

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

   echo "Repository Owner: $owner"

Cet exemple affiche user_name en sortie car GitHub héberge le référentiel URL le compte ou le sous-groupe "nom d'utilisateur".

  • Si le propriétaire n'est pas trouvé, il extrait le premier segment du site URL en tant que propriétaire.

get_repo_name ()

Cette fonction extrait le nom d'un référentiel Git d'un référentiel donné URL.

Paramètres :

  • repo_url: Le URL du référentiel Git.

Appel de fonction:

   Repo_name=$(get_repo_name "<repo_url>")

Sortie :

Cet appel fonctionnel affiche en sortie le nom du référentiel extrait du référentiel URL.

Exemple d'utilisation :

   source "${ONE_PIPELINE_PATH}/tools/get_repo_params"

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

   echo "Repository Name: $repo_name"

Cet exemple produirait compliance-app puisque le référentiel fourni URL est nommé "compliance-app" sur GitHub.

Si le nom n'est pas trouvé, il tente d'utiliser l'avant-dernier segment du site URL comme nom.