私は彼らのサーバーでgitlabを使用しています。このようなAPIを使用して、最新のビルドされたアーティファクト(gitlab-ciでビルド)をダウンロードしたい
curl --header "PRIVATE-TOKEN: 9koXpg98eAheJpvBs5tK" "https://gitlab.com/api/v3/projects/1/builds/8/artifacts"
このプロジェクトIDはどこにありますか?または、APIを使用するこの方法は、ホストされているgitlabプロジェクト向けではありませんか?
BWヒューバート
所有プロジェクトを照会できます:
curl -XGET --header "PRIVATE-TOKEN: XXXX" "https://gitlab.com/api/v3/projects/owned"
所有プロジェクトごとにJSONを受け取ります。
[
{
"id":48,
"description":"",
"default_branch":"master",
"tag_list":[
...
プロジェクトのトリガー構成からプロジェクトIDを取得することもできます。トリガー構成には、IDのサンプルコードが既に含まれています。
トリガーページから:
curl -X POST \
-F token=TOKEN \
-F ref=REF_NAME \
https://<GitLab Installation>/api/v3/projects/<ProjectID>/trigger/builds
プロジェクトIDを取得するさらに簡単な方法を見つけました。プロジェクトをホストしているgitlabページのHTMLコンテンツを表示するだけです。 project_idと呼ばれるフィールドを持つ入力があります、例えば:
<input type="hidden" name="project_id" id="project_id" value="335" />
[プロジェクトの編集]ページの右上隅に[プロジェクトID]フィールドがあります。
(IDは、トリガーセクションのサンプルコードのCI/CDパイプラインページでも確認できます。)
古いバージョンでは、サンプルコードのURLの[トリガー]ページで確認できます。
プロジェクトを入力します。
左側のメニューで、[設定]-> [一般]-> [一般設定を展開]をクリックします。
プロジェクトIDというラベルがあり、プロジェクト名の横にあります。
これはバージョンGitLab 10.2にあります
here で述べたように、すべてのプロジェクトスコープAPIは、IDまたはプロジェクトパス(URLエンコード)のいずれかを想定しています。したがって、プロジェクトとやり取りする場合は、 https://gitlab.com/api/v4/projects/gitlab-org%2Fgitlab-ce を直接使用します。
問題を実際に解決するソリューションを提供します特定のgitlabプロジェクトのプロジェクトIDを取得するAPI
curl -XGET -H "Content-Type: application/json" --header "PRIVATE-TOKEN: $GITLAB_TOKEN" http://<YOUR-GITLAB-SERVER>/api/v3/projects/<YOUR-NAMESPACE>%2F<YOUR-PROJECT-NAME> | python -mjson.tool
または、プロジェクトIDのみが必要な場合があります。
curl -XGET -H "Content-Type: application/json" --header "PRIVATE-TOKEN: $GITLAB_TOKEN" http://<YOUR-GITLAB-SERVER>/api/v3/projects/<YOUR-NAMESPACE>%2F<YOUR-PROJECT-NAME> | python -c 'import sys, json; print(json.load(sys.stdin)["id"])'
repo url(namespace/repo name)はエンコードされているであることに注意してください。
次の検索属性を使用してプロジェクトをクエリできます:
http://gitlab.com/api/v3/projects?private_token=xxx&search=myprojectname
記録のために、他の誰かがgitlab-ciで作成されたgitlab.comからアーティファクトをダウンロードする必要がある場合
curl -XGET --header "PRIVATE-TOKEN: YOUR_AD_HERE?" "https://gitlab.com/api/v3/projects/owned"
を介してプロジェクトIDを取得しますcurl -XGET --header "PRIVATE-TOKEN: YOUR_AD_HERE?" -o myapp.jar "https://gitlab.com/api/v3/projects/4711/builds/artifacts/master/download?job=release"
というgitlab-ciステップを介して作成されたマスターブランチから最後のアーティファクトをダウンロードしますGitlabの美しさに非常に感銘を受けました。
プロジェクト名がわかっている場合は、次のAPIを使用してプロジェクトIDを取得できます。
curl --header "Private-Token: <your_token>" -X GET https://gitlab.com/api/v4/projects?search=<exact_project_name>
これにより、IDを含むJSONが返されます。
[
{
"id":<project id>, ...
}
]
Gitlab API v4以降、次のAPIは所有するすべてのプロジェクトを返します。
curl --header 'PRIVATE-TOKEN: <your_token>' 'https://gitlab.com/api/v4/projects?owned=true'
応答にはプロジェクトid
が含まれます。 Gitlabアクセストークンは、このページから作成できます- https://gitlab.com/profile/personal_access_tokens
プロジェクト名が一意である場合は、shunyaの回答に従う、名前で検索する、API doc を参照するのが便利です。
より強力なアクセストークンがあり、Gitlabに異なるグループ内のいくつかの同じ名前のプロジェクトが含まれている場合、グループ内の検索がより便利です。 APIドキュメント ここ 。例えば.
curl --header "PRIVATE-TOKEN: <token>" -X GET https://gitlab.com/api/v4/groups/<group_id>/search?scope=projects&search=<project_name>
グループIDは、グループドメインの下のSettingsページから見つけることができます。
出力からプロジェクトIDを取得するには、次のようにします。
curl --header "PRIVATE-TOKEN: <token>" -X GET https://gitlab.com/api/v4/groups/<group_id>/search?scope=projects&search=<project_name> | jq '[0].id'
すべてのプロジェクトからIDを取得するには、次を使用します。
curl --header 'PRIVATE-TOKEN: XXXXXXXXXXXXXXXXXXXXXXX' 'https://gitlab.com/api/v4/projects?owned=true' > curloutput
grep -oPz 'name\":\".*?\"|{\"id\":[0-9]+' curloutput | sed 's/{\"/\n/g' | sed 's/name//g' |sed 's/id\"://g' |sed 's/\"//g' | sort -u -n