본 문서는 서버에 GitLab 설치된후 배포 하는 방법에 대해서 알아봅시다.
.GitLab Runner 등록
| root$ gitlab-runner register |
| |
| .Gitlab의 서버 주소를 입력한다. |
| Please enter the gitlab-ci coordinator URL (e.g. https://gitlab.com/): |
| http://gitlab.zzz.com:8081/ |
| |
| .Gitlab CI 에서 발급된 토근 값을 입력한다. |
| Please enter the gitlab-ci token for this runner: |
| EyypdV3nLLypZxAAAn2G |
| |
| 토큰 값을 확인 하는 방법은 Gitlab의 프로젝트를 선택하고 |
| Settings > CI/CD > Runners settings > Specific Runners 영역을 살펴보면 |
| URL과 토큰 값을 확인 할 수 있다. |
| |
| .Runner 의 설명을 추가한다. |
| Please enter the gitlab-ci description for this runner: |
| [localhost.localdomain]: |
| Deploy Runner |
| |
| .Runner의 태그를 설정한다. (중요하다.) |
| Please enter the gitlab-ci tags for this runner (comma separated): |
| deploy |
| |
| .Runner가 어떤 작업으로 동작할지 결정 |
| Registering runner... succeeded runner=EyypdV3n |
| Please enter the executor: parallels, shell, virtualbox, docker-ssh+machine, kubernetes, docker-ssh, docker, ssh, docker+machine, custom: |
| shell |
| |
| Runner registered successfully. Feel free to start it, but if it's running already the config should be automatically reloaded! |
| |
| Runner가 정상 등록 되었다면 |
| Settings > CI/CD > Runners settings > Specific Runners |
| Runner가 등록된 것을 확인 할 수 있다. |
| |
| 해당내용은 /etc/gitlab-runner/config.toml 저장됨 |
.ssh 비밀번호 없이 로그인 설정 (공개키 설정)
GitLab 배포는 gitlab-runner 계정이 타계정으로 전환후 git pull 하기 때문에 로그인이 자유로워야 한다.
공개키 없으면 생성 있다면 그다음으로 패스
| .key 생성 (gitlab-runner 계정으로 로그인) |
| |
| $ su gitlab-runner |
| $ ssh-keygen |
| 걍 엔터 |
| |
| $ cd ~/.ssh |
| $ ll |
| 합계 8 |
| -rw------- 1 nz nz 1675 8월 2 09:45 id_rsa |
| -rw-r--r-- 1 nz nz 408 8월 2 09:45 id_rsa.pub |
.ssh-copy-id 이용하여 공개키 remote 서버에 복사
| $ su gitlab-runner |
| $ ssh-copy-id -p 22 접속할계정@아이피 |
| |
| 예) |
| $ ssh-copy-id -p 22 testacc@1.1.1.1 |
| |
| 안되면 |
| $ ssh-copy-id "-p 22 testacc@1.1.1.1" |
| |
| 접속확인 (testacc 암호 물어보지않고 바로 접속) |
| ssh -p '22' 'testacc@1.1.1.1' |
| Last login: Fri Nov 5 11:09:15 2021 |
| [testacc@~]$ |
.git pull / push 암호 물어보지 않기
| [testacc@~]$ git clone http://gitlab.zzz.com:8081/testacc.git |
| [testacc@~]$ git pull |
| Username for 'http://gitlab.zzz.com:8081': aa@aa.com |
| Password for 'http://aa@aa.com@gitlab.zzz.com:8081': |
| |
| [testacc@~]$ git config credential.helper store |
| 위에 gitlab 아이디와 비번을 저장하여 기억함 |
| |
| [testacc@~]$ git pull |
| 암호 물어보지 않음 |
.gitlab-ci.yml 스크립트 작성
- ssh 접속
- html 디렉토리 이동
- git pull origin develop
- exit
| $ vi .gitlab-ci.yml |
| |
| deploy-to-develop-server: |
| stage: deploy |
| only: |
| - develop |
| script: |
| - pwd |
| - ssh -p '22' 'testacc@1.1.1.1' "cd html && git checkout develop && git pull origin develop && exit" |
| tags: |
| - deploy |
| |
| deploy-to-master-server: |
| stage: deploy |
| only: |
| - master |
| script: |
| - pwd |
| - ssh -p '22' 'testacc@1.1.1.1' "cd html && git checkout master && git pull origin master && exit" |
| tags: |
| - deploy |