Richiamo delle informazioni sul repository e dei token

get_repo_params ()

La funzione get-repo-params è progettata per recuperare le informazioni relative alla repo, quando vengono forniti il repo URL e il percorso del token Repo.

Parametro

La funzione get-repo-params richiede i parametri seguenti:

  • repo_url Il repository URL. Fornire l'url corretto del repo di cui si devono trovare i parametri.
  • repo_token_path Percorso del token associato al repository.

Output

La funzione get-repo-params viene fornita dalla pipeline. La funzione restituisce le seguenti informazioni:

  • repo_name: Nome del repository.
  • repo_owner: Utente o creatore del repo.
  • scm_type: Tipo di gestione del controllo sorgente del repo (Git, GRIT).
  • api_url: API URL collegata al servizio Git che ospita il repo.

Chiamata alla funzione

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

Utilizzate la variabile underscore (_) nel comando read come segnaposto per una variabile il cui valore viene scartato o non utilizzato nelle parti successive dello script.

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

Utilizzate queste variabili come variabili di shell nel vostro script.

Esempio

   ### <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 funzione get_repo_specific_token recupera il token associato al repo URL usato in precedenza. Un token di repository autentica e autorizza l'accesso a uno specifico repo.

Seleziona il valore della variabile (git - token-[repo_name]-[repo_org]) dalla tabella delle proprietà dell'ambiente.

Esempio

let repo_url = <repo_git_url> dove:

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

Chiamata alla funzione

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

Output:

Viene generato il seguente output:

   echo "$repo_token"

Esempio:

   ### 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 funzione get_api_url determina l'appropriato API URL per i diversi tipi di archivi di codice sorgente.

Parametri:

  • repo_url: URL del repository del codice sorgente.

Chiamata funzione:

   api_url=$(get_api_url "<repo_url>")

Valore di ritorno:

La funzione visualizza il valore API URL per il repository indicato.

Esempio:


   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"

Tipi SCM e URL API corrispondenti:

  1. GitHub integrato:

    • Tipo SCM: github_integrated
    • API URL: <api_url>
  2. GitHub Consolidato:

    • Tipo SCM: githubconsolidated
    • Repository GitHub integrato:
      • API URL: https://<repo_server_name>/api/v3 (dove <repo_server_name> è estratto dal repository URL )
    • Repository GitHub non integrato:
      • URL API: https://api.github.com
  3. Gitospitato:

    • Tipo SCM: hostedgit
    • API URL: https://<repo_server_name>/api/v4 (dove <repo_server_name> è estratto dal repository URL )

Se il tipo SCM non è uno dei tipi supportati, viene visualizzato un messaggio di avvertenza.

get_repo_scm_type ()

Questa funzione determina il tipo di gestione del codice sorgente (SCM) di un determinato repository URL.

Parametro:

  • repo_url: URL del repository per il quale è necessario determinare il tipo di SCM.

Chiamata funzione:

   scm_type=$(get_repo_scm_type "<repo_url>")

Output:

Un'etichetta che indica la piattaforma SCM, che potrebbe essere una delle seguenti:

  • Per i repository GitLab-hosted: gitlab
  • Per i repository GitHub-integrated: github
  • Per gli altri casi (impostazione predefinita GitHub): github

Esempio di utilizzo:

   source "${ONE_PIPELINE_PATH}/tools/get_repo_params"

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

   echo "SCM Type: $result"

Questo esempio visualizza github come valore di uscita perché il repository URL fornito in precedenza è integrato con GitHub.

get_repo_owner ()

Questa funzione estrae le informazioni sul proprietario o sul sottogruppo dal repository Git URL fornito in precedenza.

Parametro:

  • repo_url: Il sito URL del repository Git.

Chiamata funzione:

   Owner_name=$(get_repo_owner "<repo_url>")

Output:

  • Le informazioni sul proprietario o sul sottogruppo che vengono estratte dal repository URL.

Esempio di utilizzo:

   source "${ONE_PIPELINE_PATH}/tools/get_repo_params"

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

   echo "Repository Owner: $owner"

Questo esempio visualizza user_name come output perché GitHub ospita il repository URL l'account o il sottogruppo "nomeutente".

  • Se il proprietario non viene trovato, estrae il primo segmento di URL come proprietario.

get_repo_name ()

Questa funzione estrae il nome di un repository Git da un repository dato URL.

Parametri:

  • repo_url: Il sito URL del repository Git.

Chiamata funzione:

   Repo_name=$(get_repo_name "<repo_url>")

Output:

Questa chiamata funzionale visualizza il nome del repository estratto dal repository URL come output.

Esempio di utilizzo:

   source "${ONE_PIPELINE_PATH}/tools/get_repo_params"

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

   echo "Repository Name: $repo_name"

Questo esempio produrrebbe l'output compliance-app poiché il repository fornito URL è chiamato "compliance-app" su GitHub.

Se il nome non viene trovato, tenta di usare il penultimo segmento di URL come nome.