쿼카러버의 기술 블로그
[Github Action] Github Action 간단 시리즈 2탄 : 간단하게 github action으로 CI 구현해보기 본문
[Infra & Server]/데브옵스
[Github Action] Github Action 간단 시리즈 2탄 : 간단하게 github action으로 CI 구현해보기
quokkalover 2022. 1. 20. 21:02앞 글에서는 github action의 core 개념에 대해서 알아보았다.
Github액션을 최대한 쉽게 이해시켜주기 위해 간단히 정리했으니, 바로 실습에 들어가기전에 아래 글에서 Core개념을 간단하게나마 익히는 것을 추천한다.
https://etloveguitar.tistory.com/74
자 그러면 이번 글에는 직접 Github 액션을 실행시켜보기 위해 직접 workflow를 만들어보기
그냥 결과만 보고 싶으신 분들은 페이지 제일 하단에 내 개인 레포를 참고하면 된다.
Start!
Workflow 정의
목적 : python의 기본적인 패키지를 여러 python버전에서 테스트하는 것을 목표로 한다.
방법 : workflow에 대한 내용은 .github/workflows 폴더 안에 .yml파일을 생성한다.
- 이미 만들어진 템플릿이 많기 때문에 참고하거나 활용할 수 있다.
(1) Github Repo에서 Actions클릭
(2) 원하는 Workflow Configure클릭
- 본 예시에서는 그냥 심플하게 Simple workflow로 진행 (기본적인 개념 파악을 위해)
(3) Yml파일 예시
# This is a basic workflow to help you get started with Actions
name: CI
# Controls when the workflow will run
on:
# Triggers the workflow on push or pull request events but only for the main branch
push:
branches: [ main ]
pull_request:
branches: [ main ]
# Allows you to run this workflow manually from the Actions tab
workflow_dispatch:
# 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
# Runs a single command using the runners shell
- name: Run a one-line script
run: echo Hello, world!
# Runs a set of commands using the runners shell
- name: Run a multi-line script
run: |
echo Add other actions to build,
echo test, and deploy your project.
위 코드를 순차적으로 자세히 살펴보자.
코드 설명
name: CI
- Workflow의 이름 지정
# Controls when the workflow will run
on:
# Triggers the workflow on push or pull request events but only for the main branch
push:
branches: [ main ]
pull_request:
branches: [ main ]
# Allows you to run this workflow manually from the Actions tab
workflow_dispatch:
- main branch에 대한 push와 pull_request 이벤트 발생했을 때 workflow가 실행된다고 함.
- 위처럼 단일 event를 쓸 수도 있고, 아래처럼 list에 담아서 처리할 수도 있음
on: push # 또는 on: [pull_request, issues]
# 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
# Runs a single command using the runners shell
- name: Run a one-line script
run: echo Hello, world!
# Runs a set of commands using the runners shell
- name: Run a multi-line script
run: |
echo Add other actions to build,
echo test, and deploy your project.
- Core에서 설명했듯이, Workflow에는 여러개의 Job을 구성할 수 있다.
- 다수의 Job이 있을 때는 Default로 병렬으로 실행된다.
- 첫번째 indent에 job을 하나 생성할 수 있고, 위 예시에서는 build라는 job을 생성한다.
- 그리고 이 job에는 총 2개의 step이 존재한다.
runs-on
: 어떤 OS 환경에서 실행할 것인지 정할 수 있다.- steps의 uses는 어떤 액션을 사용할지 지정하는 것으로, 이미 만들어진 액션을 사용할 때 지정한다.
- 위 예시에서는
actions/checkout@v2
를 use한다고 돼있는데, 이는 Github Action의 공식적인 액션 중 하나로, repository를 확인하고, workflow가 access할 수 있도록 하기 위해 사용되는 액션이다. 그냥 들어간다고 생각해주면 될 것 같다. 구체적으로 뭘하는지 궁금하면 아래 설명을 보자. - https://github.com/actions/checkout
- This action checks-out your repository under $GITHUB_WORKSPACE , so your workflow can access
- The current repo in which the workflow is being triggered gets cloned.
- Depending on the defined events such as a push or pull request:
- For a push event, it runs the command below, where $GITHUB_REF points to the latest commit on the specified branch for the push event in the workflow.
git fetch --depth 1 $GITHUB_REF
- For pull requests, it checks $GITHUB_REF points to the latest commit on the pull request source branch. This means it points to the would-be code/result from merging the pull request. This is the code/result other steps within the job are executed on such as running builds or tests. (Not completely sure of the command which runs under the hood)
- The default steps being executed are:
- 위 예시에서는
- 추가로 strategy - matrix라는 인자가 있는데, 위 예시에는 없지만, 해당 테스트를 실행할 버전 등을 설정할 수 있다.
- steps의 uses는 어떤 액션을 사용할지 지정하는 것으로, 이미 만들어진 액션을 사용할 때 지정한다.
위 대로 설정 후에 한번 main브랜치에 커밋을 push하면서 한번 테스트 결과를 봐보자.
푸쉬를 하고나면, 노란색 불빛이 뜨는걸 볼 수 있는데, 이를 눌러보면 어떤 잡들이 실행되는지 볼 수 있다.
Details를 눌러서 확인해보면
위처럼 설정해두었던 여러 step내 Task(커맨드 or 액션)들을 실행한다.
그냥 코드 전체를 보고 싶으면 아래 레포를 fork떠서 실행시켜봐도 된다.
'[Infra & Server] > 데브옵스' 카테고리의 다른 글
[Ansible] Ansible 시리즈 1탄 - Ansible 기본 개념 및 설치 튜토리얼 (2) | 2022.08.10 |
---|---|
[쿠버네티스] Helm이란? Helm 차트란? (11) | 2022.05.18 |
[Github Action] Github Action 간단 시리즈 3탄 : Secret 및 Environment적용해보기 (0) | 2022.01.20 |
[Github Action] Github Action 간단 시리즈 1탄 : Core 개념 (Workflow, Event, Job, steps, runner, step, action 개념 쉽게 정리) (0) | 2022.01.20 |
docker-compose restart (0) | 2021.12.12 |
Comments