Jenkins 프로젝트 설정 방법 Backend - linewalks/dev-common GitHub Wiki
Back-end API Server
공통 설정
Config files
- {ProjectName}_{branch}.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
내부 자동 배포
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
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}
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 필요 여부
)
}