2023. 9. 7. 22:19ㆍ🔴 ETC/CICD
목표 :
- Github Actions를 사용하여 CI/CD를 구축한다
- workflow :
- build my project -> login to my Docker hub -> build and push my Image
- 즉, 빌드한 결과물을 Docker Image로 만들어서 내 Docker Hub으로 push 하는 일련의 작업을 자동화한다.
(https://kkangdda.tistory.com/121 > 기존에 직접 손으로 했던 내용을 Github Action으로 자동화)
1. Github Action workflow yml파일 생성
자신의 repository > Actions > set up a workflow yourself 를 누르면 .github/workflow 하위에 yml 파일을 작성할 수 있다.
- workflow : 가장 상위 개념 = 자동화 작업 과정
- job : 독립된 환경에서 실행되는 작업들의 묶음
- 하나의 workflow 안에서 job 단위로 완전히 격리된 환경(가상머신 또는 컨테이너)에서 실행됨
- 병렬처리 가능해짐 -> 성능 올라감
- 여러 실행환경에서 실행할 수 있음 (ex. 리눅스, 윈도우즈)
(job을 설정하는 부분은 이 포스트 참고 : https://www.daleseo.com/github-actions-jobs/)
- step : 하나의 job 안에서 순차적으로 실행되는 단계
- action : 작업 공유 메커니즘, Github Marketplace에서 다양한 action을 사용할 수 있음
내가 작성한 github-action.yml
name: WORKFLOW_FOR_DOCKER
on:
push:
branches: [ "main" ]
# Allows you to run this workflow manually from the Actions tab
workflow_dispatch:
jobs:
# 1. 빌드 머신 준비
build:
runs-on: ubuntu-latest
steps:
# 2. 빌드 머신에 Repository Check Out
- uses: actions/checkout@v3
- name: Start Actions
run: echo Start Actions!
# 3. Docker Meta를 이용하여 생성할 이미지의 이름과 버전 정보 태깅
- name: Docker meta
id: docker_meta
uses: crazy-max/ghaction-docker-meta@v1
with:
images: iDaeun/daeun-portfolio-app
tag-semver: |
{{version}}
{{major}}.{{minor}}
# 4. 빌드 머신에 Docker 빌드에 필요한 사항 준비
- name: Set up Docker Buildx
uses: docker/setup-buildx-action@v1
# 5. 이미지를 업로드 할 내 도커허브 로그인
- name: Login to DockerHub
uses: docker/login-action@v1
with:
username: ${{ secrets.DOCKERHUB_USERNAME }}
password: ${{ secrets.DOCKERHUB_TOKEN }}
# 6. 도커 이미지 빌드하고 허브로 푸쉬
- name: Build and push
uses: docker/build-push-action@v2
with:
context: .
file: ./Dockerfile
platforms: linux/amd64
push: true
tags: ${{ steps.docker_meta.outputs.tags }}
labels: ${{ steps.docker_meta.outputs.labels }}
- name: Finish Git Actions
run: |
echo Finished All Actions 🥳
echo Please Check Your Docker Hub!
2. 필요한 Secret 등록
Docker Hub에 이미지를 push 해야 하기 때문에 로그인할 때 필요한 내용을 아래와 같이 Secret으로 등록해줘야 한다.
등록된 Secret Key로 Github Action workflow yml 내에서 참조하여 사용한다.
username: ${{ secrets.DOCKERHUB_USERNAME }}
password: ${{ secrets.DOCKERHUB_TOKEN }}
3. Docker에 관련된 파일은 이전 포스트 참고
2023.09.07 - [🔴 ETC/CICD] - [CI/CD적용기1] React앱을 Docker Image으로 생성 후 Docker hub에 업로드
4. Run Github Actions !
main 브랜치에 코드를 푸쉬하면 Github Action이 yml 파일에 정의한 작업내용에 따라 실행된다.
먼저 프로젝트를 빌드해 놓은 뒤 main 브랜치에 강제로 test 코드를 푸쉬하여 Github Action이 시작되도록 하였다.
steps 내에서 내가 정의한 작업 name들을 확인할 수 있다.
작업들이 끝난 뒤, docker hub으로 가면 내가 빌드한 프로젝트가 Docker Image로 빌드되어 올라간 걸 확인할 수 있다.
로컬에서 해당 Docker Image를 pull 받아 띄워보는 것까지 끝!
'🔴 ETC > CICD' 카테고리의 다른 글
[CI/CD적용기3] 프로젝트 build - 로컬 vs Dockerfile vs Github Actions (1) | 2023.09.07 |
---|---|
[CI/CD적용기1] React앱을 Docker Image으로 생성 후 Docker hub에 업로드 (0) | 2023.09.07 |