/var/opt/gitlab/git-data/repositories 아래에 프로젝트 아래에 위치해있다.
여기에서
명령어를 사용해 레포지토리 목록을 파일로 받아오고 이어서
for문 을 돌려서 차례로 git clone을 실행한다.
ll /var/opt/gitlab/git-data/repositories/해당프로젝트 | grep -v '생략할 문자열' | cut -d" " -f9 > /home/user/list.txt
또는
cd /var/opt/gitlab/git-data/repositories/해당프로젝트
ll | grep -v '생략할 문자열' | cut -d" " -f9 > /home/user/list.txt
목록 생성 뒤
powershell 기준 ps1 파일 스크립트
####################################################
# list.txt 파일의 내용을 읽어옵니다
$fileList = Get-Content -Path "./list.txt"
# 파일 목록을 반복하여 처리합니다
foreach ($fileName in $fileList) {
# 파일 이름에 공백이나 특수 문자가 있을 수 있으니, 따옴표로 감쌉니다
$fileName = $fileName.Trim()
# 파일 이름이 디렉토리 또는 파일의 이름일 때 경로를 완성합니다
$filePath = Join-Path -Path (Get-Location) -ChildPath $fileName
git clone ssh://git@URL:포트/해당프로젝트/$fileName
}
####################################################
이렇게 정할 수 있으며 위 예시에서는 30, developer의 권한을 사용자에게 할당하고 있다.
gitlab 서버의 cli 환경에서 진행했다.
등록하고 싶은 유저가 여러명인 경우 파이썬의 for 문을 이용해서 진행해본다
import requests
gitlab_url = "http://깃랩주소:포트/api/v4"
access_token = "토큰"
# 추가할 멤버와 그룹 ID 설정
user_id = 1 # 사용자의 ID
group_id = 1 # 그룹의 ID
# 멤버 추가 요청을 위한 데이터 설정
user_data = [{
"user_id": user_id,
"access_level": 30 # 액세스 수준
},
{
"user_id": 2,
"access_level": 30 # 액세스 수준
}
]
# API 요청을 보내기 위한 HTTP 헤더 설정
headers = {
"Private-Token": access_token,
"Content-Type": "application/json" # 데이터 형식 지정
}
# 그룹에 멤버 추가 요청 보내기
# 응답 확인
for data in user_data:
response = requests.post(f"{gitlab_url}/groups/{group_id}/members", headers=headers, json=data)
if response.status_code == 201:
print("그룹 멤버 추가가 성공적으로 완료되었습니다.")
else:
print("그룹 멤버 추가에 실패했습니다. 상태 코드:", response.status_code)
print("에러 메시지:", response.json())
curl --header "PRIVATE-TOKEN: 토큰자리" "http://주소/api/v4/users?per_page=100&page=2"|jq -r '.[] | select(.state == "active") 이렇게 하면 blocked된 상태가 아닌 현재 사용중인 상태의 사용자만을 보여준다.
curl --header "PRIVATE-TOKEN: 토큰자리" "http://주소/api/v4/users?per_page=100&page=2"|jq -r '.[] | select(.state == "active") | {password: "password", name: .name, username: .username, email: .email, "skip_confirmation" : "true"} 원래 보여주던 항목에서 값을 가져오려면 key앞에 .을 붙여서 value를 만든다 ( key: .key) 비밀번호나 boolean의 경우 값을 관리자가 직접 정해줄 수 있다.
이렇게 원하는 값을 추출하고 다시 json으로 가공하려면 tojson을 사용하고 , 로 분리 해주기 위해 paste -sd ',' - 를 사용한다. 그리고 출력 값을 user_info1.json에 리다이렉션하여 저장하는데 모든 페이지를 한 번에 저장하기 위해 >> 를 써서 순차적으로 기록되게 한다. > 를 사용하면 덮어쓰기가 되어서 마지막에는 마지막 페이지에서 출력한 값만 남는다.
그리고 이렇게 출력한 사용자 정보를 다른 깃랩에 올리기 위해
파이썬 함수를 사용한다. 3.6 버전을 사용했다. 이 이상의 버전은 openSSL이나 다른 라이브러리가 호환되지 않을 수 있다.
pip list | grep requests 라는 명령어로 requests 라는 라이브러리가 사용가능한지 보고