January 19, 2020
기존에 존재하는 CI/CD 서비스들이 많이 존재하는데 예를들어,
travisCI, circleCI 등 써드파티앱등을 깃헙내에 연동해서 사용할수 있었다.
그 서비스들을 이용해서 테스트,빌드 등을 배포하거나 테스트할수 있는 환경을 (e.g. aws, gcp)
Github이 action이라는 이름으로 서비스를 제공하는것이다.
프로젝트 repo안에 action 탭을 확인가능하다.
깃헙액션을 사용한 경험에 대해 작성해보고자 한다.
일단 aws amplify 로 기존에 프론트를 배포하고있었다.
amplify CLI를 통해서 수동배포를 하고있었는데 이 부분을
깃헙액션을 통해 CI/CD 를 구축해보고자 한다.
amplify-cli-action 이라는 깃헙 액션 워크플로우 템플릿을 base로 yml을 작성했다.
깃헙액션 탭에 들어가면 기본적으로 많이쓰이는 템플릿을 제공하는데 그외에도 github-action marketplace 에 가면 유저들이 만들어 놓은 많은 템플릿도 제공하고있다. 이중 자신이 필요한 CI/CD 베이스를 가져와 사용할 수 있다.
아래와 같이 workflow 파일을 생성할 수 있다.
파일위치는 .github > workflows 에 파일명 aws.yml 으로 위치해있다.
여러가지 다중 워크플로우를 설정해놓을 수도 있다.
보안이 필요한 키들은 깃헙 레포지터리 setting > secrets에 변수 설정해 놓고 가져올 수 있다.
e.g. ${ secrets.AWS_ACCESS_KEY_ID }
아래 workflow는 aws amplify를 활용한 배포방식을 사용하고있는데,
rnd 라는 env 환경으로 체크아웃후 빌드 및 배포하고 있다.
체크아웃후 npm install 로 필요한 노드모듈들을
설치후 amplify build_command 로 빌드 커맨드를 실행시켜준다.
name: 'Amplify Deploy'
on:
push:
branches:
- github-action-deploy
jobs:
test:
name: test amplify-cli-action
runs-on: ubuntu-latest
strategy:
matrix:
node-version: [12.x]
steps:
- uses: actions/checkout@v1
- name: use node.js ${ matrix.node-version }
uses: actions/setup-node@v1
with:
node-version: ${ matrix.node-version }
- name: configure amplify
uses: ambientlight/amplify-cli-action@0.2.0
with:
amplify_command: configure
amplify_env: rnd
env:
AWS_ACCESS_KEY_ID: ${ secrets.AWS_ACCESS_KEY_ID }
AWS_SECRET_ACCESS_KEY: ${ secrets.AWS_SECRET_ACCESS_KEY }
AWS_REGION: ap-northeast-2
- name: install, build and test
run: |
npm install
npm rebuild node-sass
- name: deploy
uses: ambientlight/amplify-cli-action@0.2.0
with:
build_command: 'npm run build'
amplify_command: publish
amplify_env: rnd
env:
AWS_ACCESS_KEY_ID: ${ secrets.AWS_ACCESS_KEY_ID }
AWS_SECRET_ACCESS_KEY: ${ secrets.AWS_SECRET_ACCESS_KEY }
AWS_REGION: ap-northeast-2