擷取儲存庫資訊和記號
get_repo_params ()
函式 get-repo-params 的目的是在提供 repo URL 和 Repo 令牌路徑時,擷取與 repo 相關的資訊。
參數
函數 get-repo-params 需要下列參數:
repo_url儲存庫 URL。 提供需要查找其參數的儲存庫的正確 url。repo_token_path與儲存庫相關聯的記號路徑。
輸出
get-repo-params 函數由管線提供。 函式會傳回下列資訊:
repo_name: 儲存庫名稱。repo_owner:儲存庫的使用者或創建者。scm_type:儲存庫的原始碼控制管理類型( Git、GRIT)。api_url: API URL 與託管 repo 的 Git 服務連結。
函數呼叫
read -r <repo_name> <repo_owner> <scm_type> <api_url> \
< <(get_repo_params "<repo_url>" "<token_path>")
在讀取命令中使用下劃線變數 (_) 作為其值將被丟棄或在腳本的後續部分中不使用的變數的佔位符。
read -r <repo_name> <_> <scm_type> <_> \
< <(get_repo_params "<repo_url>" "<token_path>")
在腳本中使用這些變數作為 shell 變數。
範例
### <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 ()
get_repo_specific_token 函式會擷取與先前使用的 repo URL 相關聯的 token。 儲存庫令牌對特定儲存庫進行身份驗證並授權存取。
它會從環境內容表格中挑選 (git-token-[repo_name]-[repo_org]) 變數的值。
範例
讓 repo_url = <repo_git_url> 其中:
<repo_name> = compliance-app
<repo_org> = user_name
函數呼叫
parameter
### repo_url
token=$(get_repo_specific_token "<repo_url>")
輸出:
會產生以下輸出:
echo "$repo_token"
範例:
### 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 ()
get_api_url 函數為不同類型的原始碼儲存庫確定適當的 API URL。
參數:
repo_url:源代碼倉庫的 URL。
函數呼叫:
api_url=$(get_api_url "<repo_url>")
回覆值:
此函數顯示給定儲存庫的 API URL 值。
範例:
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 類型和對應 API URL:
-
GitHub 整合:
- SCM 類型:
github_integrated - API URL: <api_url>
- SCM 類型:
-
GitHub 合併:
- SCM 類型:
githubconsolidated - 整合 GitHub 儲存庫:
- API URL:
https://<repo_server_name>/api/v3(其中<repo_server_name>是從資源庫 URL 擷取的 )
- API URL:
- 非整合 GitHub 儲存庫:
- API URL:
https://api.github.com
- API URL:
- SCM 類型:
-
代管 Git:
- SCM 類型:
hostedgit - API URL:
https://<repo_server_name>/api/v4(其中<repo_server_name>是從資源庫 URL 擷取的 )
- SCM 類型:
如果 SCM 類型不是其中一個支援的類型,則會顯示警告訊息。
get_repo_scm_type ()
此功能可確定指定儲存庫 URL 的原始碼管理 (SCM) 類型。
參數:
repo_url:需要確定 SCM 類型的儲存庫 URL。
函數呼叫:
scm_type=$(get_repo_scm_type "<repo_url>")
輸出:
指示 SCM 平台的標籤,可能是以下其中之一:
- 對於GitLab-hosted儲存庫:
gitlab - 對於GitHub-integrated儲存庫:
github-若為其他案例 (預設為 GitHub):github
用法範例:
source "${ONE_PIPELINE_PATH}/tools/get_repo_params"
repository_url= <repo_url>
result=$(get_repo_scm_type "$repository_url")
echo "SCM Type: $result"
此範例顯示 github 為輸出值,因為先前提供的儲存庫 URL 與 GitHub 整合在一起。
get_repo_owner ()
這個函式會從之前提供的 Git 儲存庫 URL 中抽取擁有者或子群組資訊。
參數:
repo_url: URL 的 Git 儲存庫。
函數呼叫:
Owner_name=$(get_repo_owner "<repo_url>")
輸出:
- 從儲存庫 URL 擷取的擁有者或子群資訊。
用法範例:
source "${ONE_PIPELINE_PATH}/tools/get_repo_params"
repository_url= <repo_url>
owner=$(get_repo_owner "$repository_url")
echo "Repository Owner: $owner"
此範例顯示 user_name 為輸出,因為 GitHub 存放 URL 的「使用者名稱」帳戶或子群組。
- 如果找不到擁有者,則會抽取 URL 的第一個區段作為擁有者。
get_repo_name ()
這個函式會從指定的 URL 儲存庫中抽取 Git 儲存庫的名稱。
參數:
repo_url: URL 的 Git 儲存庫。
函數呼叫:
Repo_name=$(get_repo_name "<repo_url>")
輸出:
此功能調用會顯示從儲存庫 URL 擷取的儲存庫名稱,作為您的輸出。
用法範例:
source "${ONE_PIPELINE_PATH}/tools/get_repo_params"
repository_url= <repo_url>
repo_name=$(get_repo_name "$repository_url")
echo "Repository Name: $repo_name"
這個範例會輸出 compliance-app,因為所提供的儲存庫 URL 在 GitHub 上的名稱是 "compliance-app"。
如果未找到該名稱,則會嘗試使用 URL 的倒數第二個區段作為名稱。