자동 배포
전반적인 배포 과정
우리가 작성한 소스코드를 github이나 다른 소스코드 저장소에 올리게 되면, 이것을 기반으로 자동배포를 해주기 위해 환경을 구축하고 있다. 배포도구로 선택한 젠킨스가 우리의 일을 해주기 위해서는, github 레포지토리와 연결되어 소스코드를 다운로드하여 올 수 있도록 설정해주어야 한다.
Github 연결하기
jenkins에서 우리의 레포지토리로 액세스 하기 위해서는 토큰 키가 필요하니 위와 같이 repo를 선택하고 발급해 줬다.
젠킨스 관리 → Security 탭에 Credentials → Stores scoped to Jenkins의 Store 아래에 있는 System 클릭 → Global credentials (unrestricted) 클릭 → Add credentials 순서로 들어가 주면 위와 같은 창이 나오게 되고, 아까 발급받은 토큰을 password에 넣어준다.
Kind: Username with password
Username: 본인 깃허브 아이디
Password: 발급 받은 토큰 붙여 넣기
ID: 내 마음대로 부여해 주기 (어떤 credentials인지 구분하기 위함)
AWS IAM 생성
젠킨스 스크립트 파일에 작성해 줄 environment를 위해서 AWS IAM을 이용한다.
사용자 생성 → 이름 적어주고 다음(나는 Jenkins라고 지었다.)→ 직접 정책 연결 AdminstratorAccess 체크 다음(실무에서는 정책을 복잡하게 설정해서 직원들의 권한을 제한해야 한다.) → 사용자 생성 → 액세스키 만들고 기억해 두기
젠킨스 credentials로 돌아가서 Add credentials을 해주자. 여기서 pubilc, private 두 개의 credentials를 생성해 준다.
<pubilc>
Kind : Secret text
Secret :. csv 파일에서 2행에 있는 값
ID : awsAccessKeyId (pipeline 코드의 environment의 ‘’ 안에 들어갈 값과 일치시키기)
<private>
Kind : Secret text
Secret :. csv 파일에서 2행에 있는 값
ID : awsSecretAccessKey (pipeline 코드의 environment의 ‘’ 안에 들어갈 값과 일치시키기)
배포에 성공할 때 이메일 알림이 오도록 설정하고 싶다면 위의 경로로 들어가 설정하자.
Jenkins에서 docker를 사용하기 위해서 Docker, Docker Pipeline 플러그인을 다운로드해주었다.
이후 위와 같은 과정으로 pipeline 설정을 해주었고, pipelin script from SCM 옵션을 통해 젠킨스 파일을 읽어서 작동하도록 해주었다.
스크립트 작성
마지막으로, 프로젝트 폴더에 Jenkinsfile(꼭 대문자로 이름을 설정하자. 소문자로 하면 배포 시 인식을 못한다...)을 작성해 주었다.
environment 부분에 발급받은 AWS 액세스 키 등 필요한 환경변수 설정을 해주고, 밑으로 스테이지 별로 어떠한 동작을 해줄지 정하면 된다. 아직 테스트 코드를 작업하지 않아서 일단 임시로 젠킨스파일을 저장해 주고, 실제로 배포까지 연결이 잘 되는지 확인해보았다.
마무리
당연히 제대로 작성되어 있는 스크립트가 없기 때문에 failed가 되지만, 파일을 잘 읽고 동작하는 것을 확인하였다.😁
이제 테스트 코드와 여러 세부적인 사항만 수정해 준다면, 무리 없이 자동 배포가 될 것 같다. 다음 포스팅에서 추가적인 부분을 다뤄보겠다.