다양한 상황에 대응하기 위해 여러가지 복잡한 구조가 필요한 상황이 있을 수 있다. 예를 들어 젠킨스에서 빌드하고 Tag 값을 CodeBuild 에 전달하기 위한 상황에서 AWS 에 권한이 없다거나 하는 경우가 있다. 이러한 상황을 해결하기 위해 Jenkins 에서 CodeBuild 를 호출하는 방법을 정리했다. 또한 원하는 변수 값을 같이 전달한다.
Access Key 와 Secret Key 를 발급받았다면 Jenkins 에서 연동할 Plugin 을 설치한다. 해당 문서에는 Pipeline 에서 사용하는 방법만 작성되어 있어서 불편하다. 해당 작업할 때 Pipeline 으로 구성할 만큼 내용이 많지도 않아서 job 설정에서 처리하였다.
Plugin 이 설치된다면 jenkins job 의 build step 에서 AWS CodeBuild 항목을 찾을 수 있다.
해당 항목에 값을 입력해서 jenkins job 이 실행되면 codebuild 를 수행할 수 있도록 할 예정이다. CodeBuild 는 사전에 설정이 완료되어 있어야 한다.
앞서 언급한 Access Key 와 Secret Key 가 발급되어 있어야 한다. AWS Configuration 에 값을 입력해준다. 정상적으로 입력했다면 원하는 AWS 계정에 접근이 가능해진다. 해당 키는 외부와 공유하면 안되는 Key 로 유출된다면 반드시 변경이 필요하다.
Project Configuration 에서는 AWS Codebuild 의 region 과 이름을 작성해서 호출할 프로젝트 정보를 제공한다. 만약 jenkins 에서 값을 변경하고 싶다면 빌드할 Repository 의 주소 와 브랜치를 작성할 수 있다. Repository 의 주소는 CodeCommit 뿐 아니라 GitHub, S3, BitBucket 등 다양한 저장소를 사용할 수 있다. 여기서는 기존 CodeBuild 에서 CodeCommit Repository 가 설정되어 있기 때문에 branch 정보만 입력해서 호출하는 식으로 하였다.
빌드할 때 변수 값을 jenkins 에서 codebuild 로 전달할 필요가 있을 수 있다. 이때는 Build Configuration 항목의 Environment Variables Override 항목에 설정이 가능하다.
상단에서 value 변수에 값을 설정한 후 Environment Variables Override 항목에 Codebuild 에 전달할 변수 이름, 전달할 값을 순서대로 입력하여 작성해주면 해당 값을 환경변수로 Codebuild 를 호출하게 된다.
실행한 결과를 보면 Project Name, Source Branch, 원하는 환경 변수 값 등을 가지고 호출하는 것을 볼 수 있다.