Vue.js + Express + AWS EC2 + GitLab CI/CD
- 참고자료
-
GitLab Runner 설치
파이프라인의 각 Job을 담당할 GitLab Runner를 Ubuntu(EC2)에 설치한다.
-
바이너리 설치 파일 다운로드
# Linux x86-64 sudo curl -L --output /usr/local/bin/gitlab-runner https://gitlab-runner-downloads.s3.amazonaws.com/latest/binaries/gitlab-runner-linux-amd64 # Linux x86 sudo curl -L --output /usr/local/bin/gitlab-runner https://gitlab-runner-downloads.s3.amazonaws.com/latest/binaries/gitlab-runner-linux-386 # Linux arm sudo curl -L --output /usr/local/bin/gitlab-runner https://gitlab-runner-downloads.s3.amazonaws.com/latest/binaries/gitlab-runner-linux-arm
-
실행 권한 부여
sudo chmod +x /usr/local/bin/gitlab-runner
-
GitLab CI를 위한 User를 생성한다.
sudo useradd --comment 'GitLab Runner' --create-home gitlab-runner --shell /bin/bash
-
서비스를 설치한다.
sudo gitlab-runner install --user=gitlab-runner --working-directory=/home/gitlab-runner sudo gitlab-runner start
-
-
-
등록 명령어를 입력한다.
sudo gitlab-runner register
-
URL, Token 입력
Please enter the gitlab-ci coordinator URL (e.g. https://gitlab.com ) https://gitlab.com
Please enter the gitlab-ci token for this runner xxx
-
Runner에 대한 설명 입력
Please enter the gitlab-ci description for this runner [hostname] my-runner
-
Runner Tag 입력
Please enter the gitlab-ci tags for this runner (comma separated): my-tag,another-tag
-
Runner executor 입력
Please enter the executor: ssh, docker+machine, docker-ssh+machine, kubernetes, docker, parallels, virtualbox, docker-ssh, shell: shell
-
-
활성화 된 Runner
-
.gilab-ci.yml
파일 만들기runner의 작업에 대한 설정 파일, 프로젝트 디렉토리의 루트에 위치시킨다.
# 배포 작업 deploy-to-server: # stage는 build, test, deploy가 있다. stage: deploy # only 옵션을 통해 특정 상황에서만 runner를 호출할 수 있다. only: - master # script는 해당 job에서 실행할 명령어 script다. script: - echo 'DEPLOY RUNNING' - cd client - npm install --progress=false - npm run build - cd ../server - npm install # 해당 job을 담당할 Runner의 Tag tags: - deploy # 빌드 테스트 작업 build-test: stage: build script: - echo 'BUILD TEST RUNNING' - cd client - npm install --progress=false - npm run build - whoami tags: - build
-
파이프라인 현황
-
Push 했을 때 빌드 테스트를 실시한다.
-
Merge Request 했을 때 빌드 테스트를 통과해야 Merge가 활성화 된다.
-
브랜치 보호정책
-
Merge request 정책
- Vue.js 프로젝트는 배포시에 서버를 재부팅할 필요없이 서버가 가동중인 상태에서 배포파일을 교체해주면 된다.
- shell이 닫히더라도 계속해서 프로세스가 가동되어야하기 때문에
nohup npm run start&
명령어를 사용한다.