Git

Gitlab API 사용하여 수동으로 데이터 이동(Project, User, Group)

황동리 2024. 5. 25. 01:35
반응형

이번에 해볼 것은

Gitlab API를 사용하여 Group, User를 먼저 옮겨주고, 필요한 Project를 export하여 새롭게 생성한 Gitlab 서버에 import 해주는 작업을 해보겠습니다.


Gitlab API를 사용하여 Group, User 데이터 생성

우선, 원래 사용하고 있던 Gitlab에서 API를 사용하여 Group과 User 데이터를 받아보겠습니다.

http://<Gitlab 주소>/api/v4/groups 를 URL 창에 넣어줍니다.

 

그러면 json 형태로 데이터 값이 나오는데, 이걸 복사해서 vi 편집기에 복사한 내용을 적어서 groups.json 파일로 만들어 줍니다.

위와 비슷하게 http://<Gitlab 주소>/api/v4/users 를 URL 창에 입력해서 나온 json 데이터를 vi 편집기를 열어서 복사해준 후 users.json 파일로 만들어 줍니다.

이 때, user가 많으면 URL에 page를 추가해주어서 복사해주시면 됩니다.
ex) http://<Gitlab 주소>/api/v4/users?page=2

Gitlab API 사용하여 Group, User 데이터 전달

이제 위에서 생성한 json 데이터를 새롭게 생성한 Gitlab 서버로 옮겨 줍니다.

먼저 Group json 데이터를 전달 해줍니다.

group.sh

for group in $(cat <groups.json 파일 위치> | jq -r '.[] | @base64'); do
  _jq() {
    echo ${group} | base64 --decode | jq -r ${1}
  }

  curl --request POST --header "PRIVATE-TOKEN: <목적지 Gitlab Access token 값>" "http://10.10.92.10/api/v4/groups" \
  --data "name=$(_jq '.name')" \
  --data "path=$(_jq '.path')"
done

 

이제 User json 데이터를 전달 해줍니다.

user.sh

for user in $(cat <users.json 파일 위치> | jq -r '.[] | @base64'); do
  _jq() {
    echo ${user} | base64 --decode | jq -r ${1}
  }

  curl --request POST --header "PRIVATE-TOKEN: <목적지 Gitlab Access token 값>" "http://10.10.92.10/api/v4/users" \
  --data "email=$(_jq '.email')" \
  --data "username=$(_jq '.username')" \
  --data "name=$(_jq '.name')" \
  --data "password=<default_password>" \
  --data "skip_confirmation=true"
done

 

그리고 새롭게 생성한 Gitlab에 들어가서 확인해보면 생성된 것을 확인 할 수 있습니다.

Project import

이제 Project import를 해보겠습니다.

  1. 먼저 이전에 사용하던 Gitlab에 들어가서 옮기려는 프로젝트 선택
  2. Settings -> General
  3. 최하단에 Advanced Expand
  4. Export project 선택
  5. 새로고침 해준 다음 다시 Export project 클릭해서 Download Export
  6. 새로운 Gitlab 서버에 들어가서 Create Project
  7. Import project 선택
  8. Gitlab export 해주면 클릭 후, tar 파일을 넣어주면 끝

이상입니다.

반응형