Notice
Recent Posts
Recent Comments
Link
«   2024/07   »
1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30 31
Tags
more
Archives
Today
Total
관리 메뉴

JINIers

GitLab 저장소 → Cloud Source Repositories 로 미러링(CI방법) 본문

GCP/구성연습

GitLab 저장소 → Cloud Source Repositories 로 미러링(CI방법)

JINIers 2022. 6. 22. 10:45

수정

221111 : pull, push 개념 작성


하 이거 정말 힘들었다. ㅜㅠㅜ

깃랩을 소스리포지터리에 연동해서 미러링이 되는지 보는건데 이게 안되서 리포지토리를 몇개를 설치했다 지웠는지..

그와중에 다른분 리포지토리와 함께 꼬여서(명령어 입력하다가 모르고 지워버림;;) 너무 죄송했쟈나..

 

무튼 이건 많이 쓰일 것 같아서 고생한만큼 기록하기

 

참고링크

 

GitLab 저장소를 Cloud Source Repositories로 미러링  |  클라우드 아키텍처 센터  |  Google Cloud

의견 보내기 GitLab 저장소를 Cloud Source Repositories로 미러링 컬렉션을 사용해 정리하기 내 환경설정을 기준으로 콘텐츠를 저장하고 분류하세요. 이 가이드에서는 GitLab 저장소를 Cloud Source Repositories

cloud.google.com

 


 

대충 내가 이해한 미러링 개념

일단 3번은 시도했을 때 안되는 걸로 확인했는데..

다른 방법이 있을 수도 있음

내가 잘못 시도 했을수도..

내가 모를 수도....

떠올리지 못했을 수도..

내가 무지했을 수도..

내가 감히..

내가 또 잘못을..

 

 

pull : vs code에서 작성된 코드 파일들을 가져오는 거 / 데이터 가져오기 명령어라고 보면 됨

push : 작성한 파일이나 코드를 내보내는 거

 

대충 pull / push의 개념을 생각해보면 이건 된단 소리다.

일단 개념을 이해하고 있어야 CI를 하기 쉽다.


이 구성을 사용하면 gitlab 저장소로 푸시한 커밋이 cloud source repositories에 호스팅되는 저장소로 자동으로 복사되거나 미러링된다.


[소개 : gitlab을 기본호스트로 사용할 때 장점]

  • 지속적인 빌드, 테스트, 배포를 위해 cloud build와 통합
  • cloud functions 및 app engine에 배포 등

 


사전작업 : gitlab 생성

이렇게 미리 만들어놨다.


1. cloud source repositories에서 git 저장소 만들기

 

source repositories 생성

gcloud source repos create [사용할 scr이름]

* gitlab repository 이름과 gcp scr에서 사용할 이름은 별개다

  gitlab repository name ≠ gcp scr name

source repositories 생성
리포지터리 생성확인

 

검색창 : source repositories > 리포지토리 확인 > 생성한 리포지토리 클릭('song-git-3') >

을 누르면 뭐 하라고 블라블라 뜨는데 거기서 '정적 사용자 인증정보 생성' 탭을 눌러 인증한다.
* 무조건 1번 먼저 해줘야함

정적 사용자 인증정보 생성


계정 액세스 : 허용

계정허용

 

 

 

* 계정을 허용하면 이런 창이 뜰 것이다. 그럼

configure git : 복사 → shell에 붙여넣

configure git 복붙

 

이거 보기 어려우니까


생성된 사용자 인증정보에서 비밀번호 추출

grep 'source.developers.google.com' ~/.gitcookies | tail -1 | cut -d= -f2

비밀번호 추출


사용자 이름을 CSR_USER 환경변수에 저장

CSR_USER=$(grep 'source.developers.google.com' ~/.gitcookies | \
    tail -1 | cut -d$'\t' -f7 | cut -d= -f1)

사용자 이름 : CSR_USER 환경변수에 저장

 

 

저장소의 URL을 CSR_REPO 환경변수에 저장

CSR_REPO=$(gcloud source repos describe [설정한 gcp scr이름] --format="value(url)")

URL : CSR_REPO 환경변수 저장

 

 

사용자 이름을 포함하여 저장소의 url을 콘솔로 출력

echo $CSR_REPO | sed "s/:\/\//:\/\/${CSR_USER}@/"

URL 출력

 

* cloud shell은 끄지 않는다.


2. 미러링 설정

이제 gitlab으로 가자

gitlab > setting > repository > 

mirroring repositories > expand

 

그럼 밑에 이런게 뜨는데 아까 cloud shell에서 추출했던 password와 url을 입력해준다.

 


git repository url 입력 > password 입력 > mirror repository 눌러

* 1// 이거 빼먹으면 안됨!!

 

그럼 이 밑에 쨔라랑 하고 미러링이 된게 뜬다.

미러링 완료

 



그 다음에 아래 가이드를 참고해서

 

2번부터 차례대로 해주는데 이걸 그냥 하면 에러가 남(젠장

git push -u origin master
git push -u origin main

에러난다고

 

그렇기때문에 이걸 해준다.

git config user.name "이름 넣어"
git config user.email "이메일 넣어"

* git confit --global user.name & user.email을 해줘도 되지만 이러면 수정이 불가함.

사용자와 이메일을 유동적으로 변경해주고 싶다면 --global을 빼고 설정해주도록 하자.

 

설정 후 다시 

git push -u origin main

 

master가 에러가 나면 main으로 한다.

 

안되면 나는 멍충인가 하며 자책을 한번 한 뒤에

git pull origin main
git pull origin master

이걸 해 준다.


* master인지 main인지 확인 방법

 

gitlab > repository > files > README.md > edit > target branch 확인

master & main 확인 방법

 


3. 미러링 확인

 

source-repositories 새로고침 하면 빈창이 뜰것임

그렇지만 당황하지말고 
HEAD > Branch > main 을 누르면 

빈 창이라 당황했지만 당황하지말고

 

 

미러링된 파일이 쨔란 하고 뜬다.

* 왜 git-3으로 만들었으면서 캡처는 git-2 보여주냐 하지마

이미 연동되어있어서 그런거임

쨔란 미러링 됐음

 


그렇담 정말로 미러링이 잘 되는건지 확인해보자.

 

비주얼스튜디오코드 > test.txt에 입력 내용입력 & 수정,추가

test.txt 수정


그리고 test 파일을 스테이징 > commit

파일 스테이징 > 커밋

 

 

commit 내용 확인 > push

커밋 확인 > gitlab 푸시

 

 

미러링이 됐는지 확인하면 history에서 확인할 수 있다.

gitlab 연동 확인

 

gcp source repository 미러링 확인

 

 


하 너무 힘들었어 이거 진짜 만들기도 번거롭고 그랬지만 만들어놓고나면 생각보다 간편하다는게..

그리고 이렇게 할 수 있는 방법을 배우고 적용한다는 것만으로도 충분히 공부가 되었다고 생각

덕분에 부장님을 열심히... 괴롭히고...괴롭히고....괴롭.. 아니고요.

한번 해놓으면 써먹기 편함

나중에 비주얼스튜디오코드랑 깃랩&깃허브랑 연동방법도 정리해야겠다.

배워서 설정은 했지만 기억이 안나는관계로... ;;ㅁ;;

 


* 221111

gitlab에서 scr로 푸시하면 생기는 문제점

1. 연동이 느림(5~10분정도)

2. commit, push, sync 해도 scr로 연동되지 않음(vscode → git으로는 미러링 완료)

 

▶ 해결

git → settings → repository → mirroring repositories를 연다 → 강제 동기화 해줌

 

찾아보니 gitlab 말고도 github도 이런 문제가 발생하는 것 같다.

그래서 깃허브도 강제로 동기화 해주던데 깃랩도 마찬가진인듯

git의 문제인걸까..

대충 한 3번 중 1번정도는 동기화가 안되는 문제가 발생하니..

무튼 강제동기화 해주면 잘 들어간다.

Comments