docker

docker에서 gitLab, gitLab runner 사용하기(clone, push, runner error)

김포레스트 2023. 7. 13. 07:43

https://kimforest.tistory.com/21

 

docker에서 gitlab, gitlab-runner 세팅하기(도메인 변경)

도커 내부에 git lab과 회사 내에서 사용하는 관리도구, vue.js 프로젝트를 넣어 사용 할 예정이다. 책임님이 도커에 예쁘게 담아주셨으므로! 나는 파일을 받아 다시 곱게 펼쳐서 사용하도록 한다.

kimforest.tistory.com

 

-현재 상태

도커에 컨테이너, 이미지 세팅은 끝났으며

git lab 도메인주소와 gitlab runner 도메인 주소 변경을 마침.

 

 

1. 컨테이너에서 git clone 하기

  그 전에, 컨테이너 내의 폴더 구조가 어떻게 되어있는지 알아야 한다. 

   - 관리도구는 /var/www/html 에 

   - vue 프로젝트는  /var/www/html2 에 저장되어있음.

 

   1.1 컨테이너에서 관리도구 git 클론 하기

   

#  /var/www/html 폴더로 진입

cd  /var/www/html

# root@df1f108e42a3:/var/www/html# 요렇게 뜨면 성공. 

# git remote 여부 학인 
git remote -v

# 출력내용
origin  http://220.72.212.247/gitlab-instance-064db724/coforward_manager.git (fetch)
origin  http://220.72.212.247/gitlab-instance-064db724/coforward_manager.git (push)

/var/www/html 에 remote 되어있는 git은 옛날 주소로 되어있기 때문에.......

기존에 연동되어있던 레파지토리 remote를 제거하고

새 레파지토리를 연동해야 한다.

 

#기존에 연동되어있던 git remote 제거

git remote remove origin

# 새로 바뀐 주소의 레파지토리 remote 하기
# git remote add origin 주소

git remote add origin http://127.0.0.1/gitlab-instance-064db724/coforward_manager.git

 

다시 git remote -v 를 통해 리모트 내역을 확인하면

주소가 제대로 연결된 것을 볼 수 있다.

 

이제 git pull을 해서 깃 내역을 땡겨보자..!

 

git pull을 하려고 하니 username과 password를 입력하라고 한다. 

둘다 컨테이너 만든사람이 지정했을 테니 물어봐서 입력하도록 하자.

username은 입력하면 화면에 나타나지만

password는 입력해도 화면에 나타나지 않는다. 심지어 커서도 옮겨지지 않아서 입력이 된건지 안된건지 알 수 없다.

놀라지 말자.

 

# git pull 하기
 git pull
 
 # 정보 입력
 Username for 'http://127.0.0.1': root
 Password for 'http://root@127.0.0.1': (입력해도 티 안남)
 
 # 출력 내용
 http://127.0.0.1/gitlab-instance-064db724/coforward_manager URL에서
 * [새로운 브랜치]   master     -> origin/master
현재 브랜치에 추적 정보가 없습니다.
어떤 브랜치를 대상으로 병합할지 지정하십시오.
자세한 정보는 git-pull(1) 페이지를 참고하십시오.

    git pull <리모트> <브랜치>

이 브랜치에 대한 추적 정보를 설정하려면 다음과 같이 할 수 있습니다:

    git branch --set-upstream-to=origin/<브랜치> master
    
# 하라는대로 해주자.(master가 아니라 main일 수도)

git pull origin master

# 출력내용
http://127.0.0.1/gitlab-instance-064db724/coforward_manager URL에서
 * branch            master     -> FETCH_HEAD
이미 업데이트 상태입니다.

 

이제 컨테이너 내부를 보고 있던 cmd 창을 두고(지우지 말자. 이따 또 쓴다)

내 컴퓨터, 즉 로컬에 같은 레파지토리를 clone 해주도록 한다.

 

1.2 로컬에 git clone 하기

아무데나 열기 편한곳에 새폴더를 만든다. (git clone 해둘 폴더. 본인은 newdocker 폴더 안에 만듦)

폴더 내부에서 git bash를 열고 clone 한다

 

# 로컬 폴더에 git clone 하기

git clone http://127.0.0.1/gitlab-instance-064db724/coforward_manager.git

# 출력내용
Cloning into 'coforward_manager'...
remote: Enumerating objects: 4480, done.
remote: Counting objects: 100% (4480/4480), done.
remote: Compressing objects: 100% (3964/3964), done.
remote: Total 4480 (delta 405), reused 4459 (delta 392), pack-reused 0
Receiving objects: 100% (4480/4480), 27.98 MiB | 24.30 MiB/s, done.
Resolving deltas: 100% (405/405), done.
Updating files: 100% (4092/4092), done.

 

파일을 아무렇게나 수정 해보고 git add ~ git push 해서 반영되는지 확인하도록 한다

gitLab CI/CD - pipelines 에 들어가 확인 해본 결과 fail 되어있는 것을 알 수 있다

이때 중요한 것은 fail jobs.

could not read Username for 'http://127.0.0.1': 그런 장치 혹은 주소가 없음

그런 장치 혹은 주소가 없다니..?

 

그럴리가 없다.

 

 

이 문제는 파일의 소유권이 변경되지 않아 생기는 오류이다.

다시 컨테이너 내부를 보고 있는 cmd 창으로 가자.

 

root가 아니라 /var/www/html 에 진입되어 있는 상태에서 ll 입력

(그 전에 일단 로컬 폴더와 /var/www/html 에서 git pull origin master 를 한번 더 해주기로 한다)

 

** 출력화면 ** 

 

모든 파일의 소유권을 변경해주도록 한다.

 

# 파일 list 확인
ll

# 출력내용 아래 사진 확인

# 파일 소유권 변경

chown gitlab-runner.gitlab-runner -R ./
su gitlab-runner

# 변경 여부 확인 위해 다시 list 확인
ll

 

** 변경 후 출력 화면 **

 

다시 양쪽에서 git pull origin master 해줌. (username과 password를 재입력 해줘야 함)

그 후에 다시 git add . ~ git push 까지 완료 한 뒤에 gitlab runner 에서 확인하면

짜잔~ 패스됨 

 

 

만~~~약에 소유권 변경을 했는데도

계속 같은 내용의 오류 메시지가 뜬다 하면

어느 지점에서인가 pull이 안되었기 때문일것.......

 

그러니 소유권 변경을 한 후에 꼭 컨테이너, 로컬폴더에서 각각 git pull을 해주고

다시 push 해주도록 한다.

 

 

 

 

미래의 내가 기억하고 있길 바라며...

 

끗!