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_urlIl repository URL. Fornire l'url corretto del repo di cui si devono trovare i parametri.repo_token_pathPercorso 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:
-
GitHub integrato:
- Tipo SCM:
github_integrated - API URL: <api_url>
- Tipo SCM:
-
GitHub Consolidato:
- Tipo SCM:
githubconsolidated - Repository GitHub integrato:
- API URL:
https://<repo_server_name>/api/v3(dove<repo_server_name>è estratto dal repository URL )
- API URL:
- Repository GitHub non integrato:
- URL API:
https://api.github.com
- URL API:
- Tipo SCM:
-
Gitospitato:
- Tipo SCM:
hostedgit - API URL:
https://<repo_server_name>/api/v4(dove<repo_server_name>è estratto dal repository URL )
- Tipo SCM:
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.