기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.
자습서: 4단계 파이프라인 생성
이제 자습서: 간단한 파이프라인 생성(S3 버킷) 또는 자습서: 간단한 파이프라인 생성(CodeCommit 리포지토리)에서 첫 번째 파이프라인을 생성했으므로 더 복잡한 파이프라인 생성을 시작할 수 있습니다. 이 자습서에서는 소스용 GitHub 리포지토리, 프로젝트를 빌드하는 Jenkins 빌드 서버, 빌드된 코드를 스테이징 서버에 배포하는 CodeDeploy 애플리케이션을 사용하는 4단계 파이프라인을 만드는 방법을 안내합니다. 다음 다이어그램은 초기 3단계 파이프라인을 보여줍니다.

파이프라인이 생성된 후 Jenkins도 사용하여 코드를 테스트하는 테스트 작업으로 단계를 추가하도록 이 파이프라인을 편집합니다.
이 파이프라인을 생성하기 전에 필요한 리소스를 구성해야 합니다. 예를 들어 소스 코드에 GitHub 리포지토리를 사용하려면 먼저 리포지토리를 생성해야 파이프라인에 추가할 수 있습니다. 설정의 일부로 이 자습서에서는 데모용으로 EC2 인스턴스에서 Jenkins의 설정에 대해 안내합니다.
중요
이 절차에서 파이프라인에 추가하는 대부분의 작업에는 파이프라인을 만들기 전에 생성해야 하는AWS 리소스가 포함됩니다. AWS소스 액션을 위한 리소스는 항상 파이프라인을 생성한AWS 리전과 동일한 리전에 생성되어야 합니다. 예를 들어, 미국 동부 (오하이오) 리전에서 파이프라인을 생성한 경우 CodeCommit 리포지토리는 미국 동부 (오하이오) 리전에서 있어야 합니다.
파이프라인을 만들 때 지역 간 작업을 추가할 수 있습니다. AWS지역 간 작업을 위한 리소스는 작업을 실행하려는AWS 지역과 동일한 지역에 있어야 합니다. 자세한 정보는 CodePipeline에서 교차 리전 작업 추가을 참조하세요.
이 자습서를 시작하기 전에 CodePipeline 시작하기의 일반적인 사전 조건을 이미 완료했어야 합니다.
1단계: 사전 조건 완료
Jenkins와AWS CodePipeline 통합하려면 사용하려는 모든 Jenkins 인스턴스에 Jenkins용 CodePipeline 플러그인을 설치해야 CodePipeline 합니다. 또한 Jenkins 프로젝트와 간의 권한에 사용할 전용 IAM 사용자 또는 역할을 구성해야 CodePipeline 합니다. Jenkins를 통합하는 가장 쉬운 방법은 Jenkins 통합을 위해 생성한 IAM 인스턴스 역할을 사용하는 EC2 인스턴스에 Jenkins를 설치하는 것입니다. CodePipeline Jenkins 작업에 대한 파이프라인의 링크가 성공적으로 연결되려면 Jenkins 프로젝트에서 사용된 포트에 대한 인바운드 연결을 허용하도록 서버 또는 EC2 인스턴스에 프록시 및 방화벽 설정을 구성해야 합니다. 해당 포트(예: HTTPS 연결만 사용하기 위해 Jenkins를 보호한 경우 443 및 8443 또는 HTTP 연결을 허용한 경우 80 및 8080)에 대한 연결을 허용하기 전에 액세스 제어를 적용하고 사용자를 인증하도록 Jenkins를 구성했는지 확인합니다. 자세한 내용은 Jenkins 보호
참고
이 자습서에서는 코드 샘플을 사용하고 샘플을 Haml에서 HTML로 변환하는 빌드 단계를 구성합니다. 의 단계에 따라 GitHub 리포지토리에서 오픈 소스 샘플 코드를 다운로드할 수샘플을 GitHub 리포지토리로 복사 또는 복제 있습니다. .zip 파일뿐만 아니라 전체 샘플이 GitHub 리포지토리에 있어야 합니다.
이 자습서는 다음 사항도 가정합니다.
-
Jenkins를 설치 및 관리하고 Jenkins 프로젝트를 생성하는 데 익숙합니다.
-
Jenkins 프로젝트를 호스팅하는 동일한 컴퓨터나 인스턴스에 Rake 및 Haml gem for Ruby를 설치했습니다.
-
Rake 명령을 터미널이나 명령줄에서 실행할 수 있도록 필요한 시스템 환경 변수를 설정했습니다(예: Windows 시스템의 경우 Rake를 설치한 디렉터리를 포함하도록 PATH 변수 수정).
샘플을 GitHub 리포지토리로 복사 또는 복제
샘플을 복제하여 GitHub 리포지토리로 푸시하려면
-
GitHub 리포지토리에서 샘플 코드를 다운로드하거나 리포지토리를 로컬 컴퓨터에 복제합니다. 다음과 같은 두 가지 샘플 패키지가 있습니다.
-
Amazon Linux, RHEL 또는 Ubuntu Server 인스턴스에 샘플을 배포하려면 codepipeline-jenkins-aws-codedeploy_linux.zip
를 선택합니다. -
샘플을 Windows 서버 인스턴스에 배포하려면 CodePipeline-Jenkins-AWSCodeDeploy_Windows .zip을
선택합니다.
-
-
리포지토리에서, [Fork]를 선택하여 샘플 리포지토리를 Github 계정의 리포지토리에 복제합니다. 자세한 내용은 GitHub 설명서
를 참조하세요.
Jenkins 통합에 사용할 IAM 역할 생성
가장 좋은 방법은 EC2 인스턴스를 시작하여 Jenkins 서버를 호스팅하고 IAM 역할을 사용하여 인스턴스에 상호 작용하는 데 필요한 권한을 부여하는 CodePipeline 것입니다.
AWS Management Console에 로그인하여 https://console.aws.amazon.com/iam/
에서 IAM 콘솔을 엽니다. -
IAM 콘솔의 탐색 창에서 역할 을 선택한 다음 역할 생성을 선택합니다.
-
신뢰할 수 있는 유형의 엔터티 선택(Select type of trusted entity)에서 AWS 서비스를 선택합니다. Choose the service that will use this role(이 역할을 사용할 서비스 선택) 아래에서 EC2를 선택합니다. Select your use case(사용 사례 선택) 아래에서 EC2를 선택합니다.
-
다음: 권한(Next: Permissions)를 선택합니다. Attach permissions policies(권한 정책 연결) 페이지에서
AWSCodePipelineCustomActionAccess
관리형 정책을 선택한 다음, Next: Tags(다음: 태그)를 선택합니다. Next: Review(다음: 검토)를 선택합니다. -
검토 페이지의 역할 이름에 Jenkins 통합을 위해 특별히 생성할 역할 이름(예:
JenkinsAccess
)을 입력한 다음, 역할 생성을 선택합니다.
Jenkins를 설치하는 EC2 인스턴스를 생성하면 Step 3: Configure Instance Details(단계 3: 인스턴스 세부 정보 구성)에서 인스턴스 역할(예: JenkinsAccess
)을 선택해야 합니다.
인스턴스 역할 및 Amazon EC2에 대한 자세한 내용은 Amazon EC2의 IAM 역할, IAM 역할을 사용하여 Amazon EC2 인스턴스에서 실행 중인 애플리케이션에 권한 부여 및 권한을 위임하기 위한 역할 생성을 참조하십시오AWS 서비스.
젠킨스와 젠킨스용 CodePipeline 플러그인 설치 및 설정
젠킨스와 젠킨스용 CodePipeline 플러그인 설치하기
-
Jenkins를 설치할 EC2 인스턴스를 생성하고 Step 3: Configure Instance Details(단계 3: 인스턴스 세부 정보 구성)에서 방금 생성한 인스턴스 역할(예:
JenkinsAccess
)을 선택해야 합니다. EC2 인스턴스 생성에 대한 자세한 내용은 Amazon EC2 인스턴스 시작을 참조하십시오.참고
사용하려는 Jenkins 리소스가 이미 있는 경우 그렇게 할 수 있지만 특수 IAM 사용자를 생성하고 해당 사용자에게
AWSCodePipelineCustomActionAccess
관리형 정책을 적용한 다음 Jenkins 리소스에서 해당 사용자의 액세스 자격 증명을 구성하고 사용해야 합니다. Jenkins UI를 사용하여 자격 증명을 공급하려면 HTTPS만 허용하도록 Jenkins를 구성합니다. 자세한 정보는 문제 해결 CodePipeline을 참조하세요. -
EC2 인스턴스에 Jenkins를 설치합니다. 자세한 내용은 Jenkins 설치
및 Jenkins 시작 및 액세스 와 CodePipeline과 제품 및 서비스 통합의 details of integration with Jenkins에 대한 Jenkins 설명서를 참조하십시오. -
Jenkins를 시작하고 홈 페이지에서 [Manage Jenkins]를 선택합니다.
-
[Manage Jenkins] 페이지에서 [Manage Plugins]를 선택합니다.
-
[Available] 탭을 선택하고, [Filter] 검색 상자에서,
AWS CodePipeline
을 입력합니다. 목록에서 Jenkins용CodePipeline 플러그인을 선택하고 지금 다운로드를 선택하고 다시 시작한 후 설치를 선택합니다. -
[Installing Plugins/Upgrades] 페이지에서 [Restart Jenkins when installation is complete and no jobs are running]을 선택합니다.
-
[Back to Dashboard]를 선택합니다.
-
기본 페이지에서 [New Item]을 선택합니다.
-
항목 이름에 Jenkins 프로젝트의 이름 (예:
MyDemoProject
) 을 입력합니다. [Freestyle project]를 선택한 다음, [OK]를 선택합니다.참고
프로젝트 이름이 CodePipeline의 요구 사항을 충족해야 합니다. 자세한 정보는 의 할당량AWSCodePipeline을 참조하세요.
-
프로젝트의 구성 페이지에서 [Execute concurrent builds if necessary] 확인란을 선택합니다. [Source Code Management]에서, [AWS CodePipeline]를 선택합니다. EC2 인스턴스에 Jenkins를 설치하고 및AWS CLI Jenkins와의 CodePipeline 통합을 위해 생성한 IAM 사용자의 프로필로 구성한 경우 다른 필드는 모두 비워 두십시오.
-
[고급] 을 선택하고 [공급자] 에 표시되는 작업 제공자의 이름 CodePipeline (예:
MyJenkinsProviderName
) 을 입력합니다. 이 이름은 고유해야 하며 기억하기 쉬워야 합니다. 이 자습서 후반부에 파이프라인에 빌드 작업을 추가할 때 및 테스트 작업을 추가할 때 이 이름을 사용할 것입니다.참고
이 작업 이름은 CodePipeline의 작업에 대한 명명 요구사항을 만족해야 합니다. 자세한 정보는 의 할당량AWSCodePipeline을 참조하세요.
-
[Build Triggers]에서 모든 상자의 선택을 취소한 다음 [Poll SCM]을 선택합니다. [Schedule]에서 다음과 같이 5개의 별표를 공백으로 구분하여 입력합니다.
* * * * *
CodePipeline 매분 분 분 분 분 분 분 분 분 분 분 분
-
[Build]에서 [Add build step]을 선택합니다. 셸 실행 (아마존 리눅스, RHEL 또는 우분투 서버) 배치 명령 실행 (Windows 서버) 을 선택하고 다음을 입력합니다.
rake
참고
rake를 실행하는 데 필요한 변수 및 설정을 사용하여 환경을 구성해야 합니다. 그렇지 않으면 빌드가 실패합니다.
-
빌드 후 작업 추가를 선택한 다음 AWS CodePipeline Publisher를 선택합니다. [Add]를 선택한 다음, [Build Output Locations]에서 위치를 비워 둡니다. 이 구성이 기본 구성입니다. 이렇게 하면 빌드 프로세스 마지막에 압축된 파일이 생성됩니다.
-
[Save]를 선택하여 Jenkins 프로젝트를 저장합니다.
2단계: CodePipeline에서 파이프라인 생성
자습서의 이 부분에서는 Create Pipeline 마법사를 사용하여 파이프라인을 생성합니다.
CodePipeline 자동 릴리즈 프로세스를 만들려면
AWS Management Console로그인하고 http://console.aws.amazon.com/codesuite/codepipeline/home
에서 CodePipeline 콘솔을 엽니다. -
필요하면, 리전 선택기를 사용하여 파이프라인 리소스가 위치하는 리전으로 리전을 변경합니다. 예를 들어 이전 자습서에서
us-east-2
사용할 리소스를 만든 경우 지역 선택기가 미국 동부 (오하이오) 로 설정되어 있는지 확인하십시오.에 사용할 수 있는 리전과 엔드포인트에 대한 CodePipeline 자세한 내용은AWS CodePipeline 엔드포인트 및 할당량을 참조하십시오.
-
[Welcome] 페이지, [Getting started] 페이지 또는 [Pipelines] 페이지에서 Create pipeline(파이프라인 생성)을 선택합니다.
-
1단계: 파이프라인 설정 선택 페이지의 파이프라인 이름에 파이프라인 이름을 입력합니다.
-
서비스 역할에서 IAM에서 서비스 역할을 생성할 수 CodePipeline 있는 새 서비스 역할을 선택합니다.
-
[Advanced settings]의 설정은 기본값 그대로 두고, [Next]를 선택합니다.
-
2단계: 소스 단계 추가 페이지의 소스 공급자에서 을 선택합니다 GitHub.
-
연결에서 기존 연결을 선택하거나 새로 생성합니다. GitHub 소스 작업에 대한 연결을 만들거나 관리하려면 을 참조하십시오GitHub 연결.
-
Step 3: Add build stage(단계 3: 빌드 단계 추가)에서 Jenkins 추가를 선택합니다. 제공자 이름에 Jenkins용 CodePipeline 플러그인에 제공한 작업의 이름을 입력합니다 (예:
MyJenkinsProviderName
). 이 이름은 Jenkins용 CodePipeline 플러그인의 이름과 정확하게 일치해야 합니다. [Server URL]에서 Jenkins가 설치된 EC2 인스턴스의 URL을 입력합니다. 프로젝트 이름에 Jenkins에서 만든 프로젝트의 이름 (예MyDemoProject
:) 을 입력하고 다음을 선택합니다. -
4단계: 배포 단계 추가에서 에서 생성한 CodeDeploy 애플리케이션 및 배포 그룹을 재사용합니다자습서: 간단한 파이프라인 생성(S3 버킷). Deploy provider(배포 공급자)에서 CodeDeploy를 선택합니다. 애플리케이션 이름에
CodePipelineDemoApplication
을 입력하거나 새로 고침 버튼을 선택한 다음, 목록에서 애플리케이션 이름을 선택합니다. 배포 그룹에서CodePipelineDemoFleet
을 입력하거나, 목록에서 이를 선택한 후 다음을 선택합니다.참고
자체 리소스를 사용하거나 새 CodeDeploy 리소스를 만들 수 있지만 추가 비용이 발생할 수 있습니다.
-
5단계: 검토에서 정보를 검토한 다음, 파이프라인 생성을 선택합니다.
-
파이프라인이 자동으로 시작되고 파이프라인을 통해 샘플이 실행됩니다. 파이프라인이 Haml 샘플을 HTML로 빌드하고 이를 CodeDeploy 배포 중인 각 Amazon EC2 인스턴스에 웹 페이지로 배포할 때 진행 상황과 성공 및 실패 메시지를 볼 수 있습니다.
3단계: 파이프라인에 다른 단계 추가
이제 테스트 단계를 추가한 다음 샘플에 포함된 Jenkins 테스트를 사용하는 해당 단계에 테스트 작업을 추가하여 웹 페이지에 콘텐츠가 있는지 여부를 확인합니다. 이 테스트는 데모용일 뿐입니다.
참고
파이프라인에 다른 단계를 추가하지 않은 경우 배포 작업의 이전이나 이후에 파이프라인의 스테이징 단계에 테스트 작업을 추가할 수 있습니다.
파이프라인에 테스트 단계 추가
인스턴스의 IP 주소 조회
코드를 배포한 인스턴스의 IP 주소를 확인하려면
-
파이프라인 상태가 [Succeeded]로 표시되면 스테이징 단계의 상태 영역에서 [Details]를 선택합니다.
-
[Deployment Details] 섹션의 [Instance ID]에서 성공적으로 배포한 인스턴스 중 하나의 인스턴스 ID를 선택합니다.
-
인스턴스의 IP 주소를 복사합니다(예:
192.168.0.4
). Jenkins 테스트에서 이 IP 주소를 사용할 것입니다.
배포 테스트를 위해 Jenkins 프로젝트 생성
Jenkins 프로젝트를 만들려면
-
Jenkins를 설치한 인스턴스에서, Jenkins를 열고 기본 페이지에서 [New Item]을 선택합니다.
-
항목 이름에 Jenkins 프로젝트의 이름 (예:
MyTestProject
) 을 입력합니다. [Freestyle project]를 선택한 다음, [OK]를 선택합니다.참고
프로젝트 이름이 CodePipeline 요구 사항을 충족하는지 확인하세요. 자세한 정보는 의 할당량AWSCodePipeline을 참조하세요.
-
프로젝트의 구성 페이지에서 [Execute concurrent builds if necessary] 확인란을 선택합니다. [Source Code Management]에서, [AWS CodePipeline]를 선택합니다. EC2 인스턴스에 Jenkins를 설치하고 및AWS CLI Jenkins와의 CodePipeline 통합을 위해 생성한 IAM 사용자의 프로필로 구성한 경우 다른 필드는 모두 비워 두십시오.
중요
Jenkins 프로젝트를 구성 중인데 Amazon EC2 인스턴스에 설치되지 않았거나 Windows 운영 체제를 실행하는 EC2 인스턴스에 설치된 경우 프록시 호스트 및 포트 설정에 필요한 필드를 작성하고 Jenkins와 간의 통합을 위해 구성한 IAM 사용자 또는 역할의 자격 증명을 제공하십시오 CodePipeline.
-
[Advanced]를 선택하고, [Category]에서 [Test]를 선택합니다.
-
Provider에 빌드 프로젝트에 사용한 것과 동일한 이름 (예:
MyJenkinsProviderName
) 을 입력합니다. 이 이름은 이 자습서의 후반부에서 파이프라인에 테스트 작업을 추가할 때 사용됩니다.참고
이 이름은 액션의 CodePipeline 이름 지정 요구 사항을 충족해야 합니다. 자세한 정보는 의 할당량AWSCodePipeline을 참조하세요.
-
[Build Triggers]에서 모든 상자의 선택을 취소한 다음 [Poll SCM]을 선택합니다. [Schedule]에서 다음과 같이 5개의 별표를 공백으로 구분하여 입력합니다.
* * * * *
CodePipeline 매분 분 분 분 분 분 분 분 분 분 분 분
-
[Build]에서 [Add build step]을 선택합니다. Amazon Linux, RHEL 또는 Ubuntu Server 인스턴스에 배포하는 경우 셸 실행을 선택합니다. 그런 다음 다음을 입력합니다. 여기서 IP 주소는 이전에 복사한 EC2 인스턴스의 주소입니다.
TEST_IP_ADDRESS=
192.168.0.4
rake testWindows Server 인스턴스에 배포하는 경우 배치 명령 실행을 선택하고 다음을 입력합니다. 여기서 IP 주소는 이전에 복사한 EC2 인스턴스의 주소입니다.
set TEST_IP_ADDRESS=
192.168.0.4
rake test참고
테스트에서는 포트 번호를 기본값인 80으로 간주합니다. 다른 포트를 지정하려면 다음과 같이 테스트 포트 설명문을 추가합니다.
TEST_IP_ADDRESS=
192.168.0.4
TEST_PORT=8000
rake test -
빌드 후 작업 추가를 선택한 다음 AWS CodePipeline Publisher를 선택합니다. [Add]는 선택하지 마십시오.
-
[Save]를 선택하여 Jenkins 프로젝트를 저장합니다.
네 번째 단계 생성
Jenkins 테스트 작업을 포함하는 파이프라인에 단계를 추가하려면
AWS Management Console로그인하고 http://console.aws.amazon.com/codesuite/codepipeline/home
에서 CodePipeline 콘솔을 엽니다. -
[Name]에서 앞에서 만든 파이프라인의 이름( MySecondPipeline)을 선택합니다.
-
파이프라인 세부 정보 페이지에서 [Edit]를 선택합니다.
-
[Edit] 페이지에서 [+ Stage]를 선택하여 빌드 단계 바로 다음에 단계를 추가합니다.
-
새 단계의 이름 필드에 이름(예:
Testing
)을 입력한 다음, + Add action group(+ 작업 그룹 추가)을 선택합니다. -
작업 이름에MyJenkinsTest
-Action을
입력합니다. 테스트 공급자에서 Jenkins에 지정한 제공자 이름 (예:MyJenkinsProviderName
) 을 선택합니다. 프로젝트 이름에 Jenkins에서 만든 프로젝트의 이름 (예:MyTestProject
) 을 입력합니다. 입력 아티팩트에서 기본 이름이 인 Jenkins 빌드의 아티팩트를 선택한 다음 완료를 선택합니다.BuildArtifact
참고
Jenkins 테스트 작업은 Jenkins 빌드 단계에서 빌드된 애플리케이션에서 실행되므로 이 테스트 작업에 대한 입력 아티팩트에 빌드 아티팩트를 사용하십시오.
입력 및 출력 아티팩트 및 파이프라인의 구조에 대한 자세한 내용은 CodePipeline 파이프라인 구조 참조 단원을 참조하십시오.
-
[Edit] 페이지에서 [Save pipeline changes]를 선택합니다. [Save pipeline changes] 대화 상자에서 [Save and continue]를 선택합니다.
-
새로운 단계가 파이프라인에 추가되었더라도 변경 사항에 의해 파이프라인이 다시 실행되도록 트리거되지 않았으므로 해당 단계의 상태가 [No executions yet]으로 표시됩니다. 수정된 파이프라인을 통해 샘플을 실행하려면 파이프라인 세부 정보 페이지에서 Release change를 선택합니다.
파이프라인 보기에 파이프라인의 상태 및 작업과 해당 네 단계를 통해 실행되는 개정 상태가 표시됩니다. 파이프라인이 모든 단계를 통해 실행되는 데 걸리는 시간은 아티팩트의 크기, 빌드 및 테스트 작업의 복잡성, 그리고 기타 요인에 따라 달라집니다.
4단계: 리소스 정리
이 자습서를 완료한 후에는 사용한 파이프라인과 리소스를 삭제해야 이 리소스를 계속 사용할 경우 부과되는 요금을 피할 수 있습니다. 계속 사용하지 않으려면 파이프라인 CodePipeline, CodeDeploy 애플리케이션 및 관련 Amazon EC2 인스턴스, 마지막으로 아티팩트를 저장하는 데 사용된 Amazon S3 버킷을 삭제하십시오. GitHub 저장소와 같은 다른 리소스를 계속 사용하지 않으려는 경우 해당 리소스를 삭제할지 여부도 고려해야 합니다.
이 자습서에서 사용한 리소스를 정리하려면
-
로컬 Linux, macOS 또는 Unix 시스템에서 터미널 세션을 열거나 로컬 Windows 시스템에서 명령 프롬프트를 열고delete-pipeline 명령을 실행하여 생성한 파이프라인을 삭제합니다.
MySecondPipeline
의 경우, 다음 명령을 입력합니다.aws codepipeline delete-pipeline --name "MySecondPipeline"
이 명령은 아무 것도 반환하지 않습니다.
-
CodeDeploy 리소스를 정리하려면 정리의 지침을 따르세요.
-
인스턴스 리소스를 정리하려면 Jenkins를 설치한 EC2 인스턴스를 삭제합니다. 자세한 내용은 인스턴스 정리를 참조하십시오.
-
파이프라인을 더 만들거나 CodePipeline 다시 사용하지 않으려는 경우 파이프라인의 아티팩트를 저장하는 데 사용되는 Amazon S3 버킷을 삭제하십시오. 버킷을 삭제하려면 버킷 삭제의 지침을 따릅니다.
-
이 파이프라인에 다른 리소스를 다시 사용하지 않으려는 경우, 해당 특정 리소스에 대한 지침을 따라 이를 삭제하는 것을 고려하십시오. 예를 들어 리포지토리를 삭제하려면 GitHub 웹 사이트에서 GitHub 리포지토리 삭제에 나와 있는
지침을 따르십시오.