CI/CD로 프로젝트 배포하기

원지렁·2023년 9월 16일
0
post-thumbnail

Gitlab Runner를 이용하여 프로젝트를 배포한 경험을 공유해보고자 한다.

기술스택

  • Gitlab Runner
  • Vercel

진행 과정

1. Gitlab Runner 등록하기

Gitlab Project > Settings > CI/CD 의 경로로 진입하여 Runner를 등록해야 한다.
나는 이미 등록되어있는 Shared Runner를 이용하여 배포를 진행했기 때문에, 이 부분은 생략 예정이다.

2. Vercel & Gitlab 환경설정

1) Vercel Token, Project id, Org id 설정/등록

Vercel을 배포 작업을 위해서는 Token을 인증 후, 배포를 원하는 Project의 project id/org id 연결이 필요하다.

1-1) Token 발급

로그인 후 Settings > Tokens 경로에서 토큰을 발급한다.

1-2) Project, Org ID 확인

VERCEL CLI 로그인 후 vercel link 명령어를 통해 프로젝트와 연결하면 .vercel > project.json에서 확인 가능하다.

  • Vercel Login - Project link  

  • .vercel > project.json

// 예시
{
	"projectId":"your project id",
  	"orgId": "your org id"
}

2) Variable 등록

2-1) Vercel

Project > Settings > Environment Variables
상기 경로로 프로젝트에 사용중인 .env나 사용하는 변수들을 등록해준다.

2-2) Gitlab

Project > Settings > CI/CD > Variables
상기 경로로 위에서 발급한 Vercel Token, Project id, Org id를 등록해준다.
(yaml 배포 작업 진행 시 로그인과 프로젝트를 연결하는 역할)

3. gitlab-ci.yml 작성하기

Runner를 사용하여 진행하려는 작업은 다음과 같았다.

1) 브랜치(Dev / Main) 별로 Push나 Merge가 발생하면 작업이 수행되도록 한다.

2) Vercel로 각각 연결된 프로젝트에 배포 작업을 진행한다.

  • Runner의 환경설정에 따라 리눅스에 맞춰 작성하였다.
  • node LTS 버젼(18.17.0)을 사용한다.
  • 브랜치마다 적용되어야하는 now.json(현 vercel.json)을 적용하여 배포를 진행한다.
default:
  image: node:18.17.0

stages:
- deploy

# Vercel 배포(예: dev branch)
deploy_dev:
# 수행하는 작업이 무엇인지 입력해준다.
  stage: deploy
  # 사용하는 Gitlab Runner 이름을 입력해준다.
  tags:
    - wongee-runner
  # 본 작업을 수행하기 전, 수행해야하는 작업을 입력해준다.
  before_script:
  	# nvm 설치 후 LTS 버젼 사용
    - curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.38.0/install.sh | bash
    - source ~/.nvm/nvm.sh
    - nvm install 18.17.0
    - nvm use 18.17.0
    # 제대로 설치되었는지 버젼 확인
    - node -v
    - npm -v
  # 수행해야 하는 본 작업을 입력해준다.
  script:
  	# Vercel 배포를 위한 vercel 설치
    - npm install -g vercel@latest
    # 브랜치 별로 적용해야하는 now.json(vercel.json) 파일 지정 - main branch 생략 가능
    - rm -rf now.json
    - cp now.wongee.json now.json
    - rm -rf .vercel
    - mkdir -p .vercel
    # VERCEL TOKEN을 사용하여 프로젝트 빌드/배포
    - VERCEL_DEBUG=1 vercel pull --yes --environment=production --token="$VERCEL_TOKEN_DEV"
    - NODE_OPTIONS="--max-old-space-size=4096" vercel build --prod --token="$VERCEL_TOKEN_DEV"
    - vercel deploy --prebuilt --prod --token="$VERCEL_TOKEN_DEV"

# 배포가 이루어질 브랜치 지정
  only:
    - dev
profile
새싹 개발자 지렁이의 벨로그입니다.

0개의 댓글