1. Github Action
- Github에서 공식적으로 제공하는 CI/CD tool로써 소프트웨어 workflow를 자동화할 수 있도록 도와주는 도구
- workflow의 예로는 Test, Deploy, 자동화 스크립트 등
2. Github Action Core Concept
1) Workflow
- 여러 Job으로 구성, Event로 트리거될 수 있는 자동화 전체 프로세스를 의미
- 최상위 개념
- yaml 파일로 작성되며, Github Repository의 .github/workflows 디렉토리 아래에 저장
2) Event
- Workflow를 트리거하는 특정 규칙을 의미
- Push, Pull, Cron, Webhook 등
3) Job
- 여러 Step으로 구성, 가상 환경의 인스턴스에서 실행
- 다른 Job과 의존 또는 독립적으로 별령 실행 가능
4) Step
- Job 안에서 순차적으로 실행되는 프로세스 단위로 Task 집합
- Step에서 Command를 내리거나 Action 실행
5) Action
- Workflow의 Smallest portable building block
- Job을 만들기 위해 Step들을 연결 가능 -> Job을 구성하기 위한 Steop들의 조합으로 구성된 독립적인 명령
- workflow에서 action을 사용하기 위해서는 action이 step을 포함해야 함
- 재사용 가능한 컴포넌트
- 개인이 만든 Action 또는 공용 Action 사용 가능
6) Runner
- Github Action Runner 어플리케이션이 설치된 머신
- Workflow가 실행될 인스턴스
- Github-hosted runner, Self-hosted runner로 나뉨
Github Action 생성 흐름
1) 코드 작성
2) Workflow 정의
- .github/workflows 디렉토리 아래에 .yml 파일 생성
(1) Github Repository에서 Actions 클릭
(2) Set up this workflow 클릭 후, workflow 생성
# This is a basic workflow to help you get started with Actions
# Workflow's name
name: CI
# Controls when the workflow will run
on:
# Triggers the workflow on push or pull request events but only for the "master" branch
# 이벤트에 대해 작성하는 부분으로 어떤 조건에서 Workflow를 Trigger 시킬지 지정한다.
# 특정 브랜치나, tag, path에만 실행되도록 지정 가능
push:
branches: [ "master" ]
pull_request:
branches: [ "master" ]
# on:
# push:
# branches: [ master, dev ]
# pull_request:
# branches: [ master ]
# path:
# - "**.js"
# path-ignore:
# - "doc/**"
# path로 특정 패턴을 설정하여 해당 패턴에 일치하는 파일이 변경되었을 때, workflow가 실행되도록 설정
# '!path', 'paths-ignore'를 사용해 무시할 패턴을 설정할 수도 있음
# 아래와 같이 단일 이벤트 또는 array로 작성 가능하다.
# on: psh
# on: [pull_request, issues]
# 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
# Workflow는 여러 Job으로 구성되며, 여러 Job이 있을 경우에는 default로 병렬로 실행된다.
jobs:
# This workflow contains a single job called "build"
build:
# 여러 환경에서 테스트/배포를 위해 build matrix 구성
# strategy:
# matrix:
# The type of runner that the job will run on
# 어떤 os에서 실행될 지 지정
runs-on: ubuntu-latest
# Steps represent a sequence of tasks that will be executed as part of the job
# job이 가질 수 있는 동작의 집합. 각 step은 독립적인 프로세스를 가짐
steps:
# Checks-out your repository under $GITHUB_WORKSPACE, so your job can access it
# 해당 step에서 사용할 액션.
# Github marketplace의 Action을 사용할 수도 있음
# [owener]/[repo]@[ref|version]
- uses: actions/checkout@v3
# Runs a single command using the runners shell
# step의 이름
- name: Run a one-line script
# shell 명령어를 통해 command line 실행
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.
# 해당 action에 의해 정의되는 input parameter
# key/value fair로 구성
# with:
# path:
# key:
참고 : https://zzsza.github.io/development/2020/06/06/github-action/
Github Action 사용법 정리
Github Action 사용법 및 cron 사용 방법에 대해 정리한 글입니다 Github Action으로 YES24 IT 신간을 파이썬으로 크롤링 후 Issue에 업로드하는 예제가 있습니다 Github Action with Python Github action with cron, Github a
zzsza.github.io
Github Action에 대한 소개와 사용법
Github Action은 github에서 공식적으로 제공하는 CI/CD 툴, 다시 말해 개발의 work flow를 자동화할 수 있게 도와주는 툴이다. CI는 Continuous Integration(지속적 통합), CD는 Continuous Delivery(지속적 전
velog.io
'Web Programming > Server' 카테고리의 다른 글
[Airflow] Overview (0) | 2023.07.13 |
---|---|
WSGI, WAS, CGI (0) | 2022.07.05 |
[AWS EC2] Docker 설치 (0) | 2022.07.03 |
도커(Docker) (0) | 2021.10.17 |
쿠버네티스 컨피그맵 (0) | 2021.10.16 |
댓글