인프라

[Gitlab] CI/CD 서버 에 배포 계정 추가 방법

소행성왕자 2021. 11. 5. 15:20

본 문서는 서버에 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 스크립트 작성 

  1. ssh 접속
  2. html 디렉토리 이동
  3. git pull origin develop
  4. 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