먼저 플러그인을 설치하고 아래 과정을 순서대로 진행하면 됩니다.
젠킨스를 설치할 때 기본으로 다운되어 있는 플러그인도 있으니, 없는 플러그인만 찾아서 설치 해 주면 됩니다.
Artifact Manager on S3 plugin
S3 publisher plugin
AWS Elastic Beanstalk Publisher Plugin
위 3가지 플러그인을 다운 받으면, 저 플러그인들을 작동시키기 위한 플러그인을 추가로 설치합니다.
aws 플러그인을 활용해 AWS EB에 배포하려면 Jenkins → 시스템 설정 →Amazon S3 profiles와 Deploy into AWS Elastic Beanstalk 를 먼저 설정 해 줘야 합니다.
AWS IAM 계정 및 권한을 만들 때 받았던 credential~.csv 파일을 열어서 두 가지 설정을 완료 합니다.
Test Connection을 클릭하면 Credential이 잘 입력 되었는지, 접속 권한이 있는지 확인할 수 있습니다.
다음은 젠킨스에서 배포 할 프로젝트를 클릭 한 다음, 구성을 선택 해 빌드 정보를 구성합니다.
아래 사진 순서대로 작성하면 됩니다.
프로젝트에 대한 설명과 필요한 경우 Git Parameter / String Parameter를 작성합니다.
소스코드 관리에서 소스가 저장되어있는 Repo의 주소를 적어줍니다.
아래 Credential은 이 Repo에 접근할 수 있는 권한을 가진 Credential이어야 합니다.
없다면 위에서 설정한 S3 / EB Credential처럼 한 개 생성 해 주면 됩니다.
프로젝트를 빌드 할 빌드 도구를 설정합니다. Gradle로 빌드했다면 위 처럼 Gradle을 선택하고 Tasks에는 이전 빌드를 지우고 새로 jar파일을 빌드할 수 있도록 clean build를 입력 해 줍니다.
아래 Credential은 위에서 입력한 크리덴셜을 추가하고, 소스가 올라가는 EB/S3의 Region을 입력합니다. 보통 ap-northeast-2(서울) 입니다. 아래 Number of Attempts는 기본값인 30으로 둡니다.
좌측 하단의 Validate Credentials를 클릭하면 연결정보를 확인할 수 있는데, 크리덴셜이 적합하지 않으면 ERROR, 정상이라면 이 크리덴셜이 가지고 있는 IAM 권한 및 접근 가능한 EB/어플리케이션 등의 내용을 출력 해 줍니다.
Application and Environment 에는 배포할 어플리케이션 이름과 EB환경 이름을 적어줍니다. 역시 우측 하단의 Validate~를 클릭하면 어떤 환경에 연결되었는지 출력 해 줍니다.
Packaging의 Root Object 위치는 이 젠킨스의 Workspace에 업로드 된 소스를 대상으로 위치를 찾아갑니다. build된 JAR파일이 어디에 저장되는지 먼저 숙지하고 이 젠킨스의 Workspace를 확인해 보면 됩니다.
Uploading에는 버킷 이름을 적어줍니다. Prefix는 생략했습니다.
Versioning에는 배포 할 어플리케이션 버전을 어떻게 관리할 것인지 설정하는 부분입니다. 한 번 빌드 될 때 마다 같은 이름으로 버전을 1씩 올려서 배포 할 것이기 때문에,
${BUILD_TAG} 매개변수를 작성 해 줍니다. 아래 Description Format은 넘어갑니다.
기본으로 위 사진처럼 설정되어 있습니다. 그대로 두면 됩니다.
젠킨스가 프로젝트를 빌드 한 다음 어떤 행동을 할 지 설정하는 부분입니다. 여기서는 젠킨스가 소스를 빌드 한 다음 S3에 JAR파일을 ZIP으로 압축해서 업로드 → EB에 업로드 → 환경 업데이트 및 배포 순으로 작동하게 됩니다.
EB에 접속할 수 있는 Credential을 선택하고(바로 아래 AWS Credentials lookup by name 는 넘어갑니다. AWS Credential을 userName으로 찾는 부분인 것 같은데, 미리 저장 해 준 크리덴셜을 사용하면 됩니다.)
Region은 똑같이 서울리전, 아래 Application Name에는 EB어플리케이션 이름을 적어줍니다.
Version Label Format.과 Version Description Format은 둘 다 ${BUILD_TAG}로 작성하고 아래 Fail if any failures를 체크 해 줍니다. 한 번이라도 실패하면 업로드 및 배포를 하지 않도록 합니다.
이제 방금 설정 한 프로젝트를 빌드 해 봅니다. 젠킨스 메인 화면에서 실행합니다.
GIT에서 마지막 소스 버전을 찾아 업데이트 → jar 빌드 → 빌드한 파일을 AWS에 업로드하고 배포합니다.
eb에서 기본으로 제공하는 api url에 접속하면 배포가 완료 된 것을 확인할 수 있습니다.
간혹 젠킨스에서 빌드 할 때, 젠킨스 내 용량이 부족해서 빌드가 되지 않는 경우가 있습니다. 젠킨스가 예상하는 빌드 output 메모리와 실제 빌드 된 파일의 크기가 맞지 않으면 에러가 발생합니다. workspace나 build 기록 등이 너무 많이 쌓여서 발생하는게 대부분이기 때문에 이 두 가지를 주기적으로 비워줘야 합니다.
단!! api는 workspace를 비우지 않고 빌드 기록만 지워줍니다. workspace를 비우면 빌드가 되지 않습니다.