# Jenkins 저장소를 Codecommit Repository 저장소로 활용하기
- 보통 CodeCommit에 저장되는 소스가 변경될때 Jnekins를 통해 자동으로 배포를 하기 위한 파이프라인을 구성한다.
가장 중요한 것은 CodeCommit(브랜치)의 코드 변동을 Jenkins가 감지를 해야한다.
그리고 해당 작업은 Amazon CodeCommit, Amazon SNS, Amazon SQS + Jenkins를 사용하여 구현이 가능하다.
- 작업의 구성은 아래와 같다.
CodeCommit에 Trigger를 활용해 SNS를 호출하고, 해당 이벤트를 SQS에 저장하고, 저장된 Queue를 Jenkins가 감지하여 자동으로 빌드되는 구조이다.
- 장점과 단점
장점 : 하나의 SNS/SQS 설정을 통해 복수개의 Repository 이벤트 관리가 가능하다.
단점 : AWS 서비스에 종속됨.
- 그렇다면 이제 작업을 진행해보자.
1. Simple Notification Service(Amazon SNS) Topic 설정
- AWS SNS 서비스로 이동 → 주제 생성을 클릭하여 아래와 같이 설정한다.
- 위와 같이 생성한다. 다른 옵션은 디폴트로 둔다.
2. Simple Queue Service (Amazon SQS) 설정
AWS 서비스에서 AWS SQS를 검색하여 이동 → 대기열 생성을 클릭하여 대기열을 생성한다.
다른 설정값은 변경하지 않고 기본 옵션으로 생성한다.
- AWS SQS 설정하기
SQS에서 구독할 SNS 주제 구독을 앞서 생성한 TOPIC으로 선택한다.
- Amazon SNS 주제 구독을 클릭하여 생성한 SQS 주제를 선택한다.
3. CodeCommit 트리거 설정
CodeCommit에서 이벤트를 감지할 소스 Repository → 설정 → 트리거 메뉴에서 아래와 같이 설정한다.
- 일단 나는 여기서 CodeCommitSourceRepository라는 이름으로 Repository를 생성 하였다.
- 그리고 해당 Repository의 main 브랜치를 생성한다. 그리고 1개의 file을 생성한다. 그럼 main 브랜치가 자동적으로 생성된다.
- 해당 Repository에서 설정 → 트리거 생성을 통해 트리거를 생성한다.
- 트리거 생성을 클릭하면 아래와 같은 화면이 나온다.
4. IAM 사용자 설정 (Credentials)
- Jenkins에서 SQS Access를 위한 보안자격을 생성해야한다. 해당 계정은 AmazonSQS Access 권한이 추가 되어 있어야 한다.
- IAM 권한설정에서 AmazonSQSFullAccess 권한을 아래와 같이 부여한다.
- 그리고 보안자격증명에서 생성한 Access Key ID , Secret access key를 따로 기록해둔다.
5. Jenkins 플러그인 설치
- Jenkins에서 AmazonSQS 연동을 위해서는 별도의 플러그인이 필요하다.
Jenkins 관리 → 플러그인 관리 → AWS CodeCommit Trigger SQS Plugin을 설치한다.
- 플러그인을 설치중인 모습 설치하는데 꽤 시간이 걸린다.
- jenkins plugins 설치 방법
- Using the GUI: From your Jenkins dashboard navigate to Manage Jenkins > Manage Plugins and select the Available tab. Locate this plugin by searching for aws-java-sdk.
-
Using the CLI tool:jenkins-plugin-cli --plugins aws-java-sdk:1.12.529-406.vdeff15e5817d
- Using direct upload. Download one of the releases and upload it to your Jenkins instance.
6. AWS CodeCommit Trigger SQS Plugin 기본설정 하기
Jenkins 관리 → 시스템 설정 → AWS CodeCommit Trigger SQS Plugin 설정하기 → Add SQS Config 클릭
- 아래의 화면에서 Credentials 부분에서 Add SQS Config를 클릭하여 위에서 생성한 AccessKey와 Secret 키를 입력하여 자격증명을 설정한다.
- AWS CodeCommit Trigger SQS Plugin 설정은 아래와 같이 수행한다.
- Test access를 수행하면 왼쪽에 결과가 표시된다. queue와 정상적으로 연결이 된것을 확인 할 수 있다.
7. 프로젝트 생성 및 설정
- Jenkins에서 새로운 Item → Project (PipeLine 및 Freestyle 에 상관없이 사용이 가능하지만 PipeLine 을 예로 작성 한다.)
- Jenkins Project Pipeline 설정
- Jenkins Build Trigger 설정
- Pipeline 코드에서 사용할 CodeCommit Credencial 를 생성한다.
여기서는 AWS-CodeCommit-Credentials 가 될 것이다.
(아래는 예전 자료...)
- 위와 같이 AWS-CodeCommit-Credentials 정보는 IAM에서 생성한 HTTPS Git 자격 증명을 사용해야 한다.
8. Jenkins Pipeline 코드 작성하기
DashBoard → Pipeline_Name → Pipeline 클릭하여 파이프라인 코드를 작성한다.
- 예제 파이프라인 코드는 아래와 같다.
node {
stage('Preparation') {
sh "echo 'Preparation phase'"
checkout scm: [
$class : 'GitSCM',
userRemoteConfigs: [[url: "https://git-codecommit.ap-northeast-2.amazonaws.com/v1/repos/{Repository_Name}", credentialsId: "{Credentials_Name}"]], //mins
branches : [[name: "refs/heads/main"]],
], poll: false
}
stage('Build') {
sh "echo 'Build phase'"
}
stage('Results') {
sh "echo 'Result phase'"
}
}
- 실제 파이프라인 코드는 아래와 같다.
- 위의 userRemoteConfigs 는 CodeCommit의 저장소 URL이고 credentialsId는 Jenkins 관리의 Credentials의 ID 이다.
node {
stage('Preparation') {
sh "echo 'Preparation phase'"
checkout scm: [
$class : 'GitSCM',
userRemoteConfigs: [[url: "https://git-codecommit.ap-northeast-2.amazonaws.com/v1/repos/Test-Repository",
credentialsId: "aws-codecommit-credentials-test"]], //mins
branches : [[name: "refs/heads/main"]],
], poll: false
}
stage('Build') {
sh "echo 'Build phase'"
}
stage('Results') {
sh "echo 'Result phase'"
}
}
9. 빌드 결과 확인
- 빌드 결과 확인 시 아래와 같이 정상적으로 빌드가 된 것을 확인 할 수 있다.
- CodeCommit(Private Repository)에서 Jenkins 파이프라인을 생성하여 코드를 빌드하는 작업을 진행 하였다.
- 끝 -
'⭐ CICD > Jenkins' 카테고리의 다른 글
Jenkins에서 BitBucket 환경 설정 방법 (dev, stg, prd) (0) | 2024.07.01 |
---|---|
Jenkins(Localhost) to ec2 배포하기 (0) | 2023.05.15 |
jenkins를 pod로 설치 및 실행하기 (0) | 2023.03.13 |
Jenkins 설치 (0) | 2021.11.17 |
Jenkins을 활용하여 Docker 이미지 빌드하기 (0) | 2021.11.17 |