개발자 블로그
Azure DevOps Pipeline - 8. AWS CodeArtifact 연동 본문
반응형
AWS CodeArtifact는 무엇?
- 완전관리형 소프트웨어 아티팩트 리포지토리 서비스
- AWS CodeArtifact는 규모에 관계 없이 모든 조직이 소프트웨어 개발 프로세스에서 사용되는 소프트웨어 패키지를 안전하게 저장, 게시 및 공유 할 수 있도록 지원하는 완전관리형의 아티팩트 리포지토리 서비스입니다. CodeArtifact는 퍼블릭 아티팩트 리포지토리에서 소프트웨어 패키지 및 종속 항목을 자동으로 가져오도록 구성할 수 있으므로, 개발자는 최신 버전에 대한 엑세스 권한을 가집니다. CodeArtifact는 일반적으로 사용되는 패키지 관리자와 빌드 도구(예: Maven, Gradle, npm, yarn, twine, pip 및 NuGet)에서 작동하므로 기존 개발 워크플로에 손쉽게 통합할 수 있습니다.
- 출처: https://aws.amazon.com/ko/codeartifact/
- 쉽게 요약하면 인가 된 사용자만 접근할 수 있도록한 private repository.. 정도인 것 같습니다.
- 예제에서는 제 3자가 라이브러리를 AWS CodeArtifact를 통해서 딜리버리 하는 상황을 가정하고 설명하겠습니다.
AWS 액세스 키 생성
- AWS CodeArtifact에 접근하기 위해서는 액세스 키가 필요합니다. (Access key ID & Secret access key)
- 이 키는 AWS IAM 자격증명에서 생성 할 수 있습니다.
- 위 IAM 접근을 위해서는 라이브러리 제공 업체로부터 AWS 접속 URL과 계정 정보(ID, PW)를 받아야 됩니다.
- 그런 다음 해당 URL에 로그인을 하고 (최초 로그인 시 패스워드 변경이 요구될 수 있습니다.)
- 내 보안 자격 증명에서 "엑세스 키 만들기" 버튼을 클릭해서 엑세스 키를 생성합니다.
로컬 머신에서 AWS 설정하기
- 파이프라인을 설정하기에 앞서 우선 로컬 머신에서 AWS 설정하는 방법을 먼저 살펴보겠습니다. (로컬 머신에서도 빌드를 해봐야 하니깐요.)
- 먼저 AWS CLI가 설치되지 않았으면, AWS CLI를 먼저 설치합니다.
- 자세한 내용은 아래 가이드 문서 링크를 참고하세요.
- AWS CLI 설치가 모두 끝났으면 터미널에서 아래 스크립트를 실행합니다.
-
aws configure set aws_access_key_id ${AWS_IAM_ACCESS_KEY_ID} aws configure set aws_secret_access_key ${AWS_IAM_SECRET_KEY} aws configure set region us-east-2
- ⚠️ 주의 - 환경변수로 작성 된 부분은 실제 AWS에서 생성한 액세스 키 값으로 입력해야 됩니다.
- region 값 역시 라이브러리 제공 업체로부터 제공 받으면 됩니다.
-
- 이제 마지막으로 gradle에 CodeArtifact 인증 토근을 제공해주면 됩니다. 제공 방법은 총 3가지가 있는데, 자세한 내용은 아래 링크를 참고 바랍니다.
- https://docs.aws.amazon.com/ko_kr/ko_kr/codeartifact/latest/ug/maven-gradle.html#:~:text=%ED%94%84%EB%A1%9C%EC%A0%9D%ED%8A%B8%EB%A5%BC%20%EB%AA%A8%EB%93%88%EB%A1%9C%20%EA%B2%8C%EC%8B%9C-,IntelliJ%20%EC%95%84%EC%9D%B4%EB%94%94%EC%96%B4%EC%97%90%EC%84%9C%20Gradle%20%EB%B9%8C%EB%93%9C%20%EC%8B%A4%ED%96%89,-CodeArtifact%EC%97%90%EC%84%9C%20%EC%A2%85%EC%86%8D%EC%84%B1%EC%9D%84
- 첫 번째 방법(Token stored in gradle.properties)이 간단해보이는데, 로컬에서는 잘 되지만 막상 파이프라인에서 빌드하면 에러가 발생합니다. (무려 40트 넘게 시도했지만 원인은 못 찾았습니다..ㅠㅠ)
- 그래서 세 번째 방법(Token generated for each run in build.gradle)을 사용하도록 합니다.
- gradle 스크립트는 위 링크에서 복사 & 붙여넣기 해서 사용하시면 됩니다.
Azure 파이프라인에서 AWS 설정하기
- Azure 파이프라인 OS 이미지에는 이미 AWS CLI가 설치되어 있습니다. 따라서 AWS CLI 설치 단계는 필요하지 않습니다.
- CodeArtifact 인증 토큰은 gradle 파일을 수정하는 것으로 해결 했습니다.
- 따라서 "aws configure set"으로 시작하는 명령어 세 줄만 추가해주면 됩니다.
- 근데 이건 어떻게 추가해야 될까요?
- 파이프라인 YAML 에디터 오른쪽에 Tasks 목록에서 찾아보면 AWS CLI라는 항목이 보입니다.
- 클릭을 해서 세부정보(오른쪽 이미지)를 보니 뭔가 우리가 추가하려는 것과 거의 일치하는 것 같습니다.
- 이걸 추가하면 될 것 같지만..
- 훗, 당신은 Azure 파이프라인 함정카드에 걸려들었습니다.
- 무려 40트 넘게 삽질하면서 알아낸 것이지만.. 결론만 말하면 그냥 "CmdLine@2"를 사용하시면 됩니다. (매우 간단하죠)
- 수정 된 스크립트는 아래와 같습니다.
-
- task: CmdLine@2 input: script: | aws configure set aws_access_key_id $(AWS_IAM_ACCESS_KEY_ID) aws configure set aws_secret_access_key $(AWS_IAM_SECRET_KEY) aws configure set region us-east-2 echo 'set aws config done' displayName: 'Set AWS config'
- 위 스크립트는 gradle 스크립트 이전에 추가해주면 됩니다.
-
- 환경변수가 사용되었으니 "Variables"에 이 두 환경변수를 추가해 줍니다.
- 환경변수 추가는 이미 전에 Firebase 인증 토큰을 추가하면서 해봤기 때문에 스샷만 보고 넘어가도록 하겠습니다.
- 이제 파이프라인을 돌려봅시다.
- 20분이라는 긴 시간이 소요되긴 했지만 AWS CodeArtifact에서 정상적으로 모듈을 내려받아서 빌드가 성공했습니다.
- 여담이지만, 로컬에서 빌드를 해도 빌드 시간이 꽤 오래 걸립니다. CodeArtifact에서 모듈을 내려받는데 속도가 너무 느려서 다운로드 하는데 시간을 많이 잡아먹습니다.
마무리
- 여기까지 Azure Pipelines 구축에 대해서 살펴보았습니다.
- 안드로이드 기준이라서 얼마나 도움이 될런지 모르겠네요.
- 긴 글 봐주셔서 감사합니다.
반응형
'프로그래밍 > DevOps' 카테고리의 다른 글
Azure DevOps Pipeline - 7. gradle 빌드 속도 개선 (2) | 2025.07.01 |
---|---|
Azure DevOps Pipeline - 6. 테스트 자동화 (2) | 2025.06.30 |
Azure DevOps Pipeline - 5. git 체크아웃 속도 개선 (0) | 2022.08.30 |
Azure DevOps Pipeline - 4. 배포 자동화 (0) | 2022.08.24 |
Azure DevOps Pipeline - 3. YAML로 만들기 (0) | 2022.07.31 |
Comments