擷取儲存庫資訊和記號

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:

  1. GitHub 整合:

    • SCM 類型: github_integrated
    • API URL: <api_url>
  2. GitHub 合併:

    • SCM 類型: githubconsolidated
    • 整合 GitHub 儲存庫:
      • API URL: https://<repo_server_name>/api/v3 (其中 <repo_server_name> 是從資源庫 URL 擷取的 )
    • 非整合 GitHub 儲存庫:
      • API URL: https://api.github.com
  3. 代管 Git:

    • SCM 類型: hostedgit
    • API URL: https://<repo_server_name>/api/v4 (其中 <repo_server_name> 是從資源庫 URL 擷取的 )

如果 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 的倒數第二個區段作為名稱。