リポジトリー情報およびトークンの取得
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: API URL レポをホストする Git サービスとリンクしている。
関数呼び出し
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]) 変数の値を選択します。
例
let 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"
この例では、先に提供したリポジトリ 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= <repo_url>
owner=$(get_repo_owner "$repository_url")
echo "Repository Owner: $owner"
この例では、 GitHub がリポジトリをホストしているため、 URL "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= <repo_url>
repo_name=$(get_repo_name "$repository_url")
echo "Repository Name: $repo_name"
この例では、提供されたリポジトリ URL が GitHub 上で "compliance-app" という名前なので、 compliance-app を出力します。
名前が見つからない場合、 URL の最後から2番目のセグメントを名前として使おうとする。