リポジトリー情報およびトークンの取得
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:
-
GitHub 統合:
- SCM タイプ:
github_integrated
- API URL:
https://github.ibm.com/api/v3
- 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がホストするリポジトリーの場合:
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 番目のセグメントを名前として使用しようとします。