개발자로서 코드의 변경사항을 신속하게 라이브 환경에 반영하는 것은 중요합니다. GitHub Actions와 AWS S3를 활용하면 쉽고 빠르게 CI/CD 파이프라인을 구축할 수 있습니다. 이 포스팅에서는 그 방법을 자세히 알아보겠습니다.
로그인: AWS Management Console에 로그인
S3로 이동: 서비스 목록에서 S3를 선택.
버킷 생성: '버킷 생성' 버튼을 클릭하여 이름과 리전을 설정합니다.
버킷 생성 시 '퍼블릭 엑세스 차단' 옵션을 해제합니다. (이로써 모든 사용자가 호스팅된 파일에 접근할 수 있게 됩니다.)
'속성' 탭으로 이동합니다.
맨아래 '정적 웹 사이트 호스팅' 옵션을 선택하고, '활성화'을 선택합니다.
인덱스 문서와 오류 문서 이름을 입력하고 저장합니다.
버킷의 보안 및 접근 권한을 적절히 설정하는 것은 중요합니다. 이를 통해 누가 버킷에 접근하고, 어떤 작업을 수행할 수 있는지를 제어할 수 있습니다.
버킷 접근 권한 설정: 생성한 버킷을 클릭하고 '권한' 탭으로 이동합니다.
ACL(Access Control Lists): 여기서 객체의 접근 권한을 세부적으로 설정할 수 있습니다. 일반적으로는 기본 설정을 유지하는 것이 안전합니다.
버킷 정책: 버킷에 대한 액세스 권한을 지정하기 위해 사용되는 JSON 문서입니다. 예를 들어, 특정 IP에서만 접근을 허용하는 정책을 설정할 수 있습니다.
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "PublicReadGetObject",
"Effect": "Allow",
"Principal": "*",
"Action": "s3:GetObject",
"Resource": "arn:aws:s3:::<bucket-name>/*"
}
]
}
GitHub Actions는 코드를 자동으로 빌드, 테스트, 배포하는 작업을 자동화하는 도구입니다.
출처: GitHub Actions 공식문서(https://docs.github.com/en/actions/learn-github-actions/understanding-github-actions)
Workflow
Event
Jobs
Step
Actions
use
키워드와 함께 사용할 수 있으며 브랜치로 체크아웃하고, 환경을 설정하는 등 복잡하지만 자주 사용되는 과정들을 미리 정의해두고 편리하게 활용할 수 있습니다.Runner
Workflow는 YAML 형식의 파일로 .github/workflows 디렉터리에 저장됩니다. 예: main.yml.
name: CI/CD Pipeline
on:
push:
branches:
- main
repositories:
- upstream/repository-name
jobs:
build:
runs-on: ubuntu-latest
steps:
- name: Checkout code
uses: actions/checkout@v2
- name: Install dependencies
run: npm ci
- name: Test
run: npm run test
- name: Build
run: npm run build
3.2 AWS S3로 배포하기
AWS CLI를 사용하여 빌드 결과물을 S3에 업로드할 수 있습니다.
- name: deploy to s3
uses: jakejarvis/s3-sync-action@master
with:
args: --delete
env:
AWS_S3_BUCKET: ${{ secrets.AWS_S3_BUCKET }}
AWS_ACCESS_KEY_ID: ${{ secrets.AWS_ACCESS_KEY_ID }}
AWS_SECRET_ACCESS_KEY: ${{ secrets.AWS_SECRET_ACCESS_KEY }}
AWS_REGION: 'ap-northeast-2'
SOURCE_DIR: 'build'
이때, AWS 인증 정보는 GitHub Secrets에 안전하게 저장하고 사용합니다.
--delete 옵션은 이전 배포되어있는 파일을 삭제하고 다시올리는 작업입니다.
선생님 깃허브가 안보여서 그런데 괜찮다면 팔로우 해주십셩. 종종 구경가고 싶습니당
https://github.com/pengooseDev