IBM Cloud Docs
リポジトリー情報およびトークンの取得

リポジトリー情報およびトークンの取得

get_repo_params ()

関数 get-repo-params は、リポジトリー URL とリポジトリー・トークン・パスが指定されている場合に、リポジトリー関連の情報を取得するように設計されています。

パラメーター

関数 get-repo-params には、以下のパラメーターが必要です。

  • repo_url リポジトリー URL。 パラメーターを検出する必要があるリポジトリーの正しい URL を指定していることを確認してください。
  • repo_token_path リポジトリーに関連付けられたトークンへのパス。

出力

get-repo-params 関数はパイプラインによって提供されます。 この関数は、以下の情報を戻します。

  • repo_name: リポジトリーの名前です。
  • repo_owner: 所有者またはリポジトリーに関連付けられているユーザー。
  • scm_type: リポジトリーのソース・コントロール管理のタイプ (Git、GRIT)。
  • api_url: リポジトリーをホストしている Git サービスに関連付けられている API URL。

機能呼び出し

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

read コマンドで下線変数 (_) を変数のプレースホルダーとして使用します。この変数の値は破棄されるか、スクリプトの後続の部分では使用されません。

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

これらの変数は、スクリプト内でシェル変数として使用できます。

   ### <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 関数は、指定されたリポジトリー URL に関連付けられたトークンを取得するように設計されています。 リポジトリー・トークンは、特定のリポジトリーへのアクセスを認証および許可するために使用されます。

環境プロパティー・テーブルから (git-token-[repo_name]-[repo_org]) 変数の値を選択します。

repo_url = "https://github.ibm.com/user_name/compliance-app" ここで、

<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="https://github.ibm.com/user_name/compliance-app"
   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="https://github.ibm.com/user_name/compliance-app"
   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: https://github.ibm.com/api/v3
  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がホストするリポジトリーの場合: gitlab
  • GitHub統合リポジトリーの場合: github -その他の場合 (デフォルトは GitHub): github

使用例:

   source "${ONE_PIPELINE_PATH}/tools/get_repo_params"

   repository_url="https://github.ibm.com/user_name/compliance-app"
   result=$(get_repo_scm_type "$repository_url")

   echo "SCM Type: $result"

この例では、提供されたリポジトリー URL が GitHubに統合されているため、 github が出力されます。

get_repo_owner ()

この関数は、指定された Git リポジトリー URL から所有者またはサブグループの情報を抽出します。

パラメーター:

  • repo_url: Git リポジトリーの URL です。

関数呼び出し:

   Owner_name=$(get_repo_owner "<repo_url>")

出力:

  • リポジトリー URL から抽出された所有者またはサブグループの情報。

使用例:

   source "${ONE_PIPELINE_PATH}/tools/get_repo_params"

   repository_url="https://github.ibm.com/user_name/compliance-app"
   owner=$(get_repo_owner "$repository_url")

   echo "Repository Owner: $owner"

この例では、指定されたリポジトリー URL が GitHubの「username」アカウントまたはサブグループの下でホストされているため、「user_name」が出力されます。

  • 所有者が見つからない場合は、URL の最初のセグメントを所有者として抽出します。

get_repo_name ()

この関数は、指定されたリポジトリー URL から Git リポジトリーの名前を抽出します。

パラメーター:

  • repo_url: Git リポジトリーの URL です。

関数呼び出し:

   Repo_name=$(get_repo_name "<repo_url>")

出力:

リポジトリー URL から抽出されたリポジトリーの名前が出力として表示されます。

使用例:

   source "${ONE_PIPELINE_PATH}/tools/get_repo_params"

   repository_url="https://github.ibm.com/user_name/compliance-app"
   repo_name=$(get_repo_name "$repository_url")

   echo "Repository Name: $repo_name"

この例では、提供されたリポジトリー URL の名前が GitHub上の「compliance-app」であるため、 compliance-app が出力されます。

名前が見つからない場合は、URL の最後から 2 番目のセグメントを名前として使用しようとします。