티스토리 뷰
필요성
이번에 부족한 개발인원으로 인해 외주업체에 프론트엔드 개발을 주면서 자동 배포환경이 필요하게 되었다
기존에는 aws cli를 통해 배포 하고있었으나 그러기 위해선 pem파일을 공유해야 하고 일부 AWS권한을 부여해야하는 문제가 있었다.
그러나 외주업체에 AWS접근권한을 준다는것에 대한 거부감이있었고 github actions를 통해서 자동배포환경을 구성하게 되었다.
찾아보면 Github Actions 템플릿이 많이 존재하여 생각보다 쉽게 구성할 수 있다.
프론트엔드 배포를 위해 아래와 같은 조건을 충족하여야 했다.
1. github push 많으로 빌드, 배포가 자동적으로 이루어져야한다.
2. package.json 기준으로 패키지 인스톨이 가능해야한다.
3. 빌드 과정을통해 production에서 실행할 파일을 생성할 수 있어야한다.
4. 3의 과정에서 생성된 build파일을 Elastic Beanstalk에 배포할 수 있어야한다.
.github/workflows 경로에 yml파일을 만들어서 github actions를 정의할 수 있다.
깃허브 설정을통해 secret 변수를 관리할 수 있고 ${{github.run_number}}등을 통해 unique한 version label을 붙였다.
커스텀해서 테스트환경등을 구성할 수 있으나 아직 그정도까지 필요없으므로 배포환경정도만 구성하도록했다.
빌드된 파일은 Elastic Beanstalk의 Node환경에서 express를 통해 제공하도록 세팅하였다.
AWS에서 Node 웹어플레이케이션 서버에대한 간단한 샘플코드를 제공하므로 참조하여 수정하면 될 것같다.
아래와같이 정상적으로 배포됨을 확인 가능하다.
깃허브 이벤트에대해 트리거되도록 설정가능하니 필요에따라 사용하면 매우 편할 것 같다.
name: Deploy
# Controls when the action will run. Triggers the workflow on push or pull request
# events but only for the master branch
on:
push:
branches: [develop]
pull_request:
branches: [develop]
# A workflow run is made up of one or more jobs that can run sequentially or in parallel
jobs:
# This workflow contains a single job called "build"
build:
# The type of runner that the job will run on
runs-on: ubuntu-latest
# Steps represent a sequence of tasks that will be executed as part of the job
steps:
# Checks-out your repository under $GITHUB_WORKSPACE, so your job can access it
- uses: actions/checkout@v2
- name: Install Packages
run: npm install
- name: Gnerate Bundle File
run: npm run build
- name: check dir
run: cd build && ls -al
- name: Generate deployment package
run: cd build && zip -r deploy.zip .
- name: Deploy to EB
uses: einaregilsson/beanstalk-deploy@v10
with:
aws_access_key: ${{ secrets.AWS_ACCESS_KEY_ID }}
aws_secret_key: ${{ secrets.AWS_SECRET_ACCESS_KEY }}
application_name: cp-admin-client
environment_name: cp-client-dev
version_label: ${{github.run_number}}
use_existing_version_if_available: true
region: ap-northeast-2
deployment_package: build/deploy.zip
© 2020 GitHub, Inc.
'Setting > AWS' 카테고리의 다른 글
Amplify를 이용한 E2E테스트 (Cypress) (0) | 2021.06.30 |
---|---|
Amplify를 이용한 프론트엔드 배포 (0) | 2021.03.28 |
AWS Application Load Balancer를 이용한 리다렉트 (0) | 2020.07.05 |