LoginSignup
1
0
お題は不問!Qiita Engineer Festa 2024で記事投稿!
Qiita Engineer Festa20242024年7月17日まで開催中!

[gitlab] 新規参画者のために、Group 配下の Project をまとめて git clone するスクリプトを作った

Last updated at Posted at 2024-07-01

はじめに

仕事環境では、以下のように Group(=サービス) の中にそれぞれ機能ごとに Project が格納されている構造を取っています。

sample
├── documents
├── sample-client
├── sample-database
├── sample-api
├── sample-admin-api
...

そのため、新規サービスに参画したときや、新人たちは一つ一つ Project 数ぶん git clone する必要があり、とても面倒でした。
多いときは同じ Group 内に 30 以上も Project があったりします。。。

なので新規参画者のために効率化しようと思い、一発でまとめてクローンできるようなスクリプトを作成しました!

使い方

  1. $(GROUP_ID) に clone したい Group(リポジトリ)を指定する。
  2. clone したい階層にて git bash でコマンドを実行する。

前提

  • Group 配下に Subgroup がある場合、その Subgroup は clone してくれない。
    • その場合は、その配下分、同じようにスクリプトを実行すること。

スクリプト

#!/bin/sh

GITLAB_HOST=git.sample.com
PRIVATE_TOKEN=XXXXXXXXXX

# Group ID を指定
GROUP_ID=9999999

curl -sS --request GET \
    --header "PRIVATE-TOKEN: ${PRIVATE_TOKEN}" \
    "https://${GITLAB_HOST}/api/v4/groups/${GROUP_ID}" | jq '.projects[].http_url_to_repo' | xargs -n 1 git clone

もし gitlab クライアント証明書使用している場合、$(KEY_FILE) と $(CERT_FILE) に自身の gitlab クライアント証明書のパスを指定します。

#!/bin/sh

GITLAB_HOST=git.sample.com
PRIVATE_TOKEN=XXXXXXXXXX

# gitlab クライアント証明書のパスを指定
KEY_FILE=xxx-key.pem
CERT_FILE=yyy-cert.pem

# Group ID を指定
GROUP_ID=9999999

curl -sS --request GET \
    --header "PRIVATE-TOKEN: ${PRIVATE_TOKEN}" \
    --key ${KEY_FILE} \
    --cert ${CERT_FILE} \
    "https://${GITLAB_HOST}/api/v4/groups/${GROUP_ID}" | jq '.projects[].http_url_to_repo' | xargs -n 1 git clone

さいごに

前提にも書いてあるように、今回のスクリプトでは「Group 配下に Subgroup がある場合、その Subgroup は clone してくれない。」ので、これも解決できるようなスクリプトを今後は書きたいです!

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0