우선 yml에서 사용할 수 있도록, AWS에 접근이 가능한 AWS-ACCESS-KEY와 SECRET-KEY를 Github에 설정하여야 합니다.
AWS_ACCESS_KEY_ID : IAM -> 보안자격증명 에있는 access_key_id
AWS_SECRET_ACCESS_KEY : IAM -> 보안자격증명 에있는 secret_access_key_id
REACT_APP_ENDPOINT : 연결한 backend서버 주소
S3_BUCKET : s3버킷 이름 ( 주의! arn아님! )
프로젝트 최상단에 .github/workflows/s3-deploy.yml 파일을 만든다.
#s3-deploy.yml
name: Example workflow for S3 Deploy
on: [push]
env:
AWS_ACCESS_KEY_ID: ${{ secrets.AWS_ACCESS_KEY_ID }}
AWS_SECRET_ACCESS_KEY: ${{ secrets.AWS_SECRET_ACCESS_KEY }}
REACT_APP_ENDPOINT: ${{ secrets.REACT_APP_ENDPOINT }}
S3_BUCKET: ${{ secrets.S3_BUCKET }}
S3_BUCKET_REGION: ap-northeast-2
jobs:
run:
runs-on: ubuntu-latest
steps:
- name: Checkout repository
uses: actions/checkout@v3
- name: Setup Node.js 16
uses: actions/setup-node@v3
with:
node-version: 16
cache: 'npm'
- name: Build Project
run: |
npm install
CI=false REACT_APP_ENDPOINT=$REACT_APP_ENDPOINT npm run build
- name: Deploy_S3
uses: reggionick/s3-deploy@v3
with:
folder: build
bucket: ${{ env.S3_BUCKET }}
bucket-region: ${{ env.S3_BUCKET_REGION }}
delete-removed: true
no-cache: true
private: true
filesToInclude: ".*/*,*/*,**"
발생한 에러
- Deploy_S3의 filesToInclude를 files-to-include로 써서 에러가 발생했다
- 환경변수 S3_BUCKET을 s3버킷 arn주소로 지정하여 파일일 올라가지 않았다.