Jenkins 프로젝트 설정 방법 Backend - linewalks/dev-common GitHub Wiki

Back-end API Server

공통 설정

Config files
  • {ProjectName}_{branch}.cfg
    • API 실행시 사용할 cfg 파일
  • {ProjectName}_{branch}.test.cfg
    • test용 cfg가 필요하다면 설정
    • 현재 branch는 develop만 가능
  • pytest_{branch}.ini
    • test용 pytest.ini가 필요하다면 설정
    • 현재 branch는 develop만 가능
  • Dockerfile
    • Docker build 시 사용할 도커파일
    • 소스코드를 복사하는 경로는 src로 고정
COPY src/requirements.txt .
COPY src .
  • docker-compose.{ProjectName}.yml
    • docker-compose.yml 파일
    • 파일 내에 ${IMAGE_NAME} 변수를 이용해 빌드된 것을 자동으로 활용할 수 있게 작성
clue_connect:
  container_name: ${IMAGE_NAME}
  image: "${IMAGE_NAME}:latest"
  entrypoint: bash bin/run_server.sh
Credentials
  • google_chat_bot_url
    • 알림이 갈 구글 챗 봇 정보

내부 자동 배포

Folder Properties
  • REMOTE_HOST_MAIN, REMOTE_HOST_DEVELOP
    • 배포될 HOST 주소
    • 여러 REPO를 묶어서 상위 폴더에서 설정 가능
  • REMOTE_PROJECT_FOLDER_MAIN, REMOTE_PROJECT_FOLDER_DEVELOP
    • 배포될 HOST의 작업 주소
    • 여러 REPO를 묶어서 상위 폴더에서 설정 가능
Credentials
  • remote-host-ssh-main, remote-host-ssh-develop
    • 내부 자동 배포시, 사용할 ssh 계정 정보
Jenkinsfile
node {
  backend.autoDeployInternal('Repository Name')
}

외부 배포 (ssh)

Folder Properties
  • REMOTE_HOST_{DeployName}
    • 배포될 HOST 주소
    • 여러 REPO를 묶어서 상위 폴더에서 설정 가능
  • REMOTE_PROJECT_FOLDER_{DeployName}
    • 배포될 HOST의 작업 주소
    • 여러 REPO를 묶어서 상위 폴더에서 설정 가능
Credentials
  • remote-host-ssh-{repoName}
    • 배포시, 사용할 ssh 계정 정보
Jenkinsfile
@Library('Google-Chat-Notification') _gcn
@Library('lw-jenkins') _lw
node {
  backend.deployExternal('Repository Name', 'DeployName like ncloud') 
}

테스트 커버리지 추출

node {
  backend.testCoverage(
    'Repository Name'
    'develop',    // Branch 이름
    false,        // test cfg 필요 여부
    true          // pytest.ini 필요 여부
  )
}