본문 바로가기
Web Programming/Server

Github Action

by 테리는당근을좋아해 2022. 7. 3.

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

 

참고 : https://velog.io/@ggong/Github-Action%EC%97%90-%EB%8C%80%ED%95%9C-%EC%86%8C%EA%B0%9C%EC%99%80-%EC%82%AC%EC%9A%A9%EB%B2%95

 

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

댓글