Github은 CI/CD를 모두 제공하는 플랫폼이다.
코드 변경 사항을 레포지토리에 푸시할 때마다 자동으로 빌드 및 테스트를 실행하는 프로세스다. CI는코드 품질과 안정성을 높이고, 팀원들이 개발한 코드가 통합되면서 충돌이나 버그가 발생하는 것을 미리 방지하는 데 도움이 된다. GitHub Actions를 사용하여 CI 워크플로우를 구성할 수 있으며, 이를 통해 코드 빌드, 유닛 테스트, 통합 테스트 등을 자동화할 수 있다.
코드 변경 사항이 테스트를 통과하면 자동으로 프로덕션 환경으로 배포되도록 하는 프로세스다. CI/CD 파이프라인을 설정하면, 개발자가 코드 변경을 커밋하고 푸시하면 이 변경 사함이 자동으로 데스트되고, 빌드되고, 스테이징 환경에서 검증된 후, 자동으로 운영 환경에 배포될 수 있다.
AWS - S3와 연결해서 자동적으로 빌드하여 S3 버킷에 올려 배포하는 방식을 나열한다.

해당 워크플로우가 특정 이벤트가 발생할 때 실행되도록 설정할 수 있다. 워크플로우 파일 내에서 원하는 액션들을 호출하고, 작업 단계를 정의하여 소프트웨어 개발과 배포 프로세스를 자동화할 수 있다.
.github 디렉토리를 만들고 workflows 디렉토리도 만들어서 여기에 .yml 파일
name: client
on:
push:
branches:
- reference
jobs:
build:
runs-on: ubuntu-latest
steps:
- name: Checkout source code.
uses: actions/checkout@v2
- name: Install dependencies
run: npm install
working-directory: ./my-agora-states-client-react
- name: Build
run: npm run build
working-directory: ./my-agora-states-client-react
- name: SHOW AWS CLI VERSION
run: |
aws --version
- name: Sync Bucket
env:
AWS_ACCESS_KEY_ID: ${{ secrets.AWS_ACCESS_KEY_ID }}
AWS_SECRET_ACCESS_KEY: ${{ secrets.AWS_SECRET_ACCESS_KEY }}
AWS_EC2_METADATA_DISABLED: true
run: |
aws s3 sync \
--region ap-northeast-2 \
build s3://{ 연결할 버킷이름 } \
--delete
working-directory: ./my-agora-states-client-react
name: client
on:
push:
branches:
- reference
push 이벤트에만 동작한다.jobs:
build:
runs-on: ubuntu-latest
steps:
- name: Checkout source code.
uses: actions/checkout@v2
actions/checkout@v2 액션을 사용하여 소스 코드를 체크아웃한다. 이 액션은 현재 Repository의 코드를 가져온다.- name: Install dependencies
run: npm install
- name: Build
run: npm run build
working-directory: ./my-agora-states-client-react
npm install 명령을 실행하여 ./my-agora-states-client-react 디렉토리에 있는 의존성을 설치한다.npm run build 명령을 실행하여 ./my-agora-states-client-react 디렉토리에 있는 클라이언트 애플리케이션을 빌드한다.- name: SHOW AWS CLI VERSION
run: |
aws --version
- name: Sync Bucket
env:
AWS_ACCESS_KEY_ID: ${{ secrets.AWS_ACCESS_KEY_ID }}
AWS_SECRET_ACCESS_KEY: ${{ secrets.AWS_SECRET_ACCESS_KEY }}
AWS_EC2_METADATA_DISABLED: true
run: |
aws s3 sync \
--region ap-northeast-2 \
build s3://{ 연결한 버킷 이름 } \
--delete
aws s3 sync명령을 사용하여 ./my-agora-states-client-react/build 디렉토리에 있는 빌드된 애플리케이션을 Amazon S3 버킷과 동기화한다.AWS_ACCESS_KEY_ID와 AWS_SECRET_ACCESS_KEY는 GitHub 리포지토리의 Secrets에서 가져와서 환경 변수로 설정합니다. 이를 통해 AWS CLI가 액세스 키를 사용하여 S3 버킷과 상호 작용할 수 있다.--region ap-northeast-2는 동기화할 S3 버킷이 있는 AWS 리전을 지정합니다.--delete 옵션은 로컬 디렉토리에는 없지만 원격 버킷에는 있는 파일들을 동기화하는 동안 로컬 디렉토리에서 삭제합니다.AWS CLI는 미리 설치되어 있지 않아도, GitHub Actions 환경에서 기본적으로 사용할 수 있다. GitHub Actions 환경은 여러 사전 설치된 도구 및 라이브러리를 제공하여 워크플로우를 쉽게 설정하고 사용할 수 있도록 한다. 이러한 사전 설치된 도구 중에서는 AWS CLI도 포함된다.
push 하면 yml에 설정한 순서대로 동작한다. 빌드 후 버킷에 업로드된다.

첫번째 있는 것이 실행되어 완료된 커밋이다.


마지막 수정이 업데이트 되었다.
속성탭에 들어가서 정적 웹 사이트 호스팅된 주소로 들어가면 배포가 된 것을 확인할 수 있다.