GitHub Actions는 GitHub에서 제공하는 클라우드형 CI/CD 툴이다. 코드가 변경되면 자동으로 테스트를 실행하거나, 빌드하고, 배포하는 등의 작업을 수행할 수 있으며 GitHub에서 제공하는 서비스로 GitHub 레파지토리와의 연동이 쉽다.
출처 ) https://docs.github.com/en/actions/learn-github-actions/understanding-github-actions
use
키워드와 함께 사용할 수 있으며, 예를 들어 브랜치로 체크아웃하고, 환경을 설정하는 등 복잡하지만 자주 사용되는 과정들을 미리 정의해두고 편리하게 활용할 수 있다.지금까지 AWS S3를 통해 정적 웹사이트를 호스팅하는 방법과(S3 버킷에서 기존 자료 삭제 후 재 업로드), AWS CLI를 이용해 명령어로 자동화 배포하는 방법에 대해 알아보았다. 이제 더 나아가 GitHub Actions을 활용하여 CD를 구축하는 방법에 대해 알아보겠다.
위의 과정으로 자동화가 진행된다.
해당 레파지토리/.github/workflows/<액션이름>.yml을 가진 확장자가 있으면 액션으로 인식하고 돌아간다.
로컬에서 작업 중인 프로젝트 폴더에 액션을 만들어준다.
.github/workflows/CD.yml
name: CD
on:
push:
branches:
- main
workflow_dispatch:
jobs:
cd:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@main
- run: npm install
- run: npm run build
- 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'
.github/workflows/CD.yml
name: workflows이름
on: 언제 실행 되는지(push)
push:
branches: 어디 브랜치로(-main)
- main
workflow_dispatch: 푸시하지 않고 실행 할 수 있게 도와주는 트리거
jobs:
cd:
runs-on: ubuntu-latest //우분트의 최신버전 이용
steps: 어떤동작
- uses: actions/checkout@main //main으로 체크아웃
- run: npm install
- run: npm run build
- 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_S3_BUCKET
Name : AWS_S3_BUCKET
Secret : bucket에서 설정한 이름
AWS_ACCESS_KEY_ID
AWS_SECRET_ACCESS_KEY
- Name : AWS_S3_BUCKET
- Secret : 발급 받은 Secret Access Key
설정이 완료된 경우
이제 main 브랜치로 push하면, GitHub Actions를 실행하여 프로젝트를 배포할 수 있다. 프로젝트를 배포하는 과정에서 eslint 라이브러리를 사용하여 경고를 오류로 처리하도록 설정했기 때문에, 액션이 실패한 경험이 있었다. 이렇게 나도 모르게 발생하는 오류를 찾아 수정할 수 있게 되어, 전체 개발 과정에서 더욱 전문적인 시야를 갖출 수 있게 되었다.
https://docs.github.com/en/actions
원티드 프리온보딩 9차 강의