가장 많이 사용 하는 방법이다. 하지만 경우에 따라서는 아직 젠킨스를 이용한 방법도 많이 쓰이고 있다.
먼저 주의할점. Github Action을 통해 도커 이미지 빌드 -> AWS 업로드 후 ECS로 돌릴경우, x86으로 설정해야 한다.
Github Action에서 도커 빌드하는 경우 기본적으로 이미지가 x86으로 빌드하므로, 실행환경이랑 맞춰줘야 한다.
순서를 요약하면 다음과 같다.
- AWS 의 IAM 에서 github action 용 계정 생성 및 권한 부여
- Github 리파지토리 생성 및 클론
- 로컬에서 해당 리파지토리 프로젝트를 오픈
- 루트에 .github 폴더 생성
- .github 폴더에 workflows 폴더 생성
- workflows 폴더에 github workflow 파일 생성 (예 : deploy.yaml)
- 문법에 맞추어 내용 작성
- 소스코드 push
하나씩 살펴보자.
- Github Action용 IAM 계정 생성
- IAM 에서 계정 생성 하고, 원하는 권한을 준다 (예 : EC2ContainerRegistryFullAccess, ECS_FullAccess 등)
- 보안자격증명에서 Access, Secret 키를 생성하고 잘 기록해 둔다.
- 생성할때 서드파티 접근으로 체크하고 생성하면 된다.
- Github 리파지토리 설정
- 생성방법은 스킵하고, Github 리파지토리 -> Settings -> Security에서 Secrets and variables 메뉴 -> actions 클릭
- Repository secrets 항목에서, New repository secret 버튼 클릭
- Name에는 환경변수 이름으로 쓰일 이름을 넣고, 값에는 해당 값을 넣는다. 적어도 다음의 항목이 필요하다
- AWS의 계정아이디 (숫자로 되어 있는 아이디)
- Access키
- Secret키
- 리전 정보
- 해당 정보들은, Github worlflow 파일 내용 작성시, 환경변수 값으로서 주입한다.
- 로컬에서 Github workflow 파일 작성
- 띄어쓰기 및 탭에 매우 유의해야 한다.
- run: | 같이 명령어 다음: 는 붙어야 하고, 이후 한칸 띄고 | 를 작성해야 한다.
- linux 명령어인 date를 이용할 때, date+(형식) 을 쓸때 date+는 붙어 있어야 한다.
- 위의 내용에 맞추어 폴더 및 파일 생성을 한 후, 위에서 정의한 환경변수 이름을 참고하여 내용을 작성한다.
- 아래는 연결 테스트 및 ECR 리파지토리 정보를 가져오는 테스트 파일이다.
- 띄어쓰기 및 탭에 매우 유의해야 한다.
name: AWS Connection Test
on:
workflow_dispatch: # 수동 실행 가능하도록 설정
jobs:
test-aws-connection:
runs-on: ubuntu-latest
steps:
- name: Configure AWS credentials
uses: aws-actions/configure-aws-credentials@v5.1.0
with:
aws-access-key-id: ${{ secrets.AWS_DEPLOY_ACCESS_KEY_ID }}
aws-secret-access-key: ${{ secrets.AWS_DEPLOY_SECRET_KEY }}
aws-region: ${{ secrets.AWS_REGION }}
- name: Test AWS CLI
run: |
aws sts get-caller-identity
aws ecr describe-repositories --repository-names ECR리파지토리이름
- jobs: 하위에 있는 test-aws-connection 은 이름이다. 아무거나 지어도 된다.
- 이후, 이 내용을 Push한다.
- Github 리파지토리 -> Actions 에서 해당 워크플로우 이름 (여기서는 AWS Connection Test)를 선택 -> Run workflow 로 실행하여 테스트 한다.
- Github workflow 파일 작성 기본 문법
- name : 워크플로우 이름
- on : 워크플로우 트리거 이벤트
- push : 코드가 푸시됬을때
- pull_request : PR이 열릴때
- workflow_dispatch : 수동으로 트리거 (개발자가 github action에 가서 실행해줘야 함)
- schedule : 특정 시간대에 실행 (cron 표현식을 따른다)
- - cron : '0 0 * * *' => 매일 자정에 실행 한다는 뜻.
- jobs : 수행할 작업 목록. 병렬 혹은 순차적으로 실행된다.
- runs-on : 작업 실행환경
- steps : 각 작업 단계
- uses : 미리 만들어진 Github 액션 불러와서 사용
- 여러가지 액션들이 많이 있다.
- run : 명령어 실행
- with : 액션에 전달할 파라메터
- env : 환경변수 정의
- uses : 미리 만들어진 Github 액션 불러와서 사용
이어서, ECR 에 이미지를 올리는 과정은 다음과 같다 (https://dean83.tistory.com/370)
'Backend > 공통' 카테고리의 다른 글
| Github Action을 통한 AWS CI/CD (3) (0) | 2025.11.11 |
|---|---|
| Github Action을 통한 AWS CI/CD (2) (0) | 2025.11.11 |
| EC2, RDS 등 컴퓨팅 설정 및 ECS 설명 (0) | 2025.11.07 |
| REST API, RESTful API (0) | 2025.09.19 |
| AWS S3 버킷 웹설정 (CloudFront, Route 53) (0) | 2024.11.13 |