개요
github action을 이번에 공부하고 실제로 간단한 내용을 적용해보기로 했다.
그리고 간단한 실제 깃헙 액션 코드를 적용해보고 내용을 정리해둔다.
인사이트
github actions를 이용하면 github webhook을 통해 연계하여 하고자 하는 부분들을 상당히 클라우드 에서 자체 소화 할 수 있다.
예를 들어 PR이 올라왔을때 테스트 자동화, push 이후 docker build 및 registry 배포 등의 작업을 자연스럽게 수행 할 수 있다.
이게 가능한 이유는 위와 같은 devops 의 니즈가 git에 대한 action에 기인하는 경우가 대부분이기 때문이다.
다만 젠킨스, airflow와 github actions의 관계는 고민해봐야 할듯 하다.
VM 종류
- 리눅스
- 윈도우
- 맥
간단 개념 정리
- worflow
- 가장 큰 단위로 N개이 job으로 구성
- job은 직/병렬 실행 가능
- jobs
- 하나의 runner 단위로 task를 수행
- actions
- workflow 내에서 호출하는 메서드 개념
- 예: git clone 등이 가능함
- runners
- 실행되는 서버
보면 유용한점
- advanced-workflow-features
- secrets 처리
- job 의존성 처리
- db 사용
- workflow에서 로컬 actions 추가하는 법
github action 코드
repo 코드 push가 올라오면 docker image build 후 ecr에 push하는 코드를 작성해보았다.
name: Deploy to Amazon ECR
on:
push:
branches:
- main
pull_request:
branches:
- main
env:
AWS_REGION: region
ECR_REGISTRY: ecr_registry주소
ECR_REPOSITORY: repo주소
IMAGE_TAG: latest
jobs:
deploy:
name: Deploy
runs-on: ubuntu-latest
environment: production
steps:
- name: Checkout
uses: actions/checkout@v2
- name: Configure AWS credentials
uses: aws-actions/configure-aws-credentials@v1
with:
aws-access-key-id: ${{ secrets.AWS_ACCESS_KEY_ID }}
aws-secret-access-key: ${{ secrets.AWS_SECRET_ACCESS_KEY }}
aws-region: ${{ env.AWS_REGION }}
- name: Login to Amazon ECR
id: login-ecr
uses: aws-actions/amazon-ecr-login@v1
- name: Build, tag, and push image to Amazon ECR
id: build-image
env:
ECR_REGISTRY: ${{ steps.login-ecr.outputs.registry }}
IMAGE_TAG: ${{ github.sha }}
run: |
docker build -t $ECR_REGISTRY/$ECR_REPOSITORY:$IMAGE_TAG .
docker push $ECR_REGISTRY/$ECR_REPOSITORY:$IMAGE_TAG
echo "::set-output name=image::$ECR_REGISTRY/$ECR_REPOSITORY:$IMAGE_TAG"
secrets 등록하기
위 코드 스니펫의 민감정보는 git repo settings에서 secrets로 등록할 수 있다.
settings -> secrets -> new repository secret
을 선택한다.
이후 새로운 key value값을 입력한다.
검증
타겟 브랜치로 push가 올라오면 정상 동작하는것을 확인 할 수 있다.
build 상태 badge 달아보기
Reference
github action 공부하기
- https://github.com/features/actions
- https://zzsza.github.io/development/2020/06/06/github-action/