320x100
320x100

깃허브 액션

: 깃허브에서 제공하는 CI/CD 서비스

: 설정파일인 yml 파일을 정의하고 레포지터리에 업로드

: Pull Request, Push 등의 이벤트가 발생했을 때 애플리케이션을 빌드하고 서버에 배포하는 등의 동작 가능

: 코드 변경분에 이상이 있는지 검사, 매일 특정 시간에 통계 데이터 수집도 가능 

 

 

 

 

 

workflows

: 깃허브 액션의 가장 상위 개념으로. 자동화 작업 과정을 일컬음

: 레포지터리 내에서 ./gohub/workflows 디렉터리 아래에 yml 파일로 설정

: 하나의 레포지터리에는 여러 개의 워크플로우를 둘 수 있음

: yml 파일에서 on 속성을 통해 워크플로우가 언제 실행되는지 정의

on:
  push:
    branches:
      - main

jobs:
  # ...(생략)...
on:
  schedule:
  - cron: "0 0 * * *"

jobs:
  # ...(생략)...

 

 

 

 

events

: workflow 실행을 트리거하는 특정 활동이나 규칙

: pull request, push 등

 

 

 

 

 

jobs

: 독립된 인스턴스 또는 컨테이너에서 작동하는 하나의 처리 단위

: 하나의 워크플로우에는 적어도 하나의 작업이 있어야함

: 워크플로우 하나에 여러 개의 작업이 있을 수 있음

: 모든 작업은 동시에 실행되며 필요 시 작업간 의존관계를 설정하여 실행 순서를 제어 가능

: yml 파일 내에서 jobs 속성을 통해 작업 ID와 내용간 mapping 형태로 명시

: 필수로 들어가야하는 runs-on 속성을 통해 실행환경 지정 필요

# ...(생략)...

jobs:
  job1:
    runs-on: ubuntu-latest
    steps:
      # ...(생략)...
  job2:
    # job2에 대한 세부 내용
  job3:
    # job3에 대한 세부 내용

 

 

 

 

 

steps

: 작업 간의 순서를 정하기 위해 단계를 정하는 것

: 작업 단계는 커맨드나 스크립트, 액션이 될 수 있음

: 커맨드나 스크립트를 실행 할 때는 run 속성 사용

: 액션을 사용할 때는 uses속성 사용

: yml 문법에서 시퀀스 타입을 사용하기 때문에 각 단계마다 -을 붙혀줘야함

# ...(생략)...

jobs:
  test:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v3
      - run: npm install
      - run: npm test

 

 

 

 

 

 

Actions

: 깃허브 액션에서 빈번하게 필요한 반복 단계를 재사용하기 용이하도록 제공되는 작업 공유 메커니즘

: 하나의 레포지터리 범위 내에서 여러 워크플로우 간 공유

: 공개 레포지터에서 공유 시 깃허브 상 모든 레포지터리에서도 사용 가능

: 깃허브에서 제공하는 대표적인 액션으로는 actions/checkout이 있음

 

- Github Marketplace

: 수많은 벤더가 공개한 액션을 공개한 저장소

: https://github.com/marketplace?type=actions 

 

GitHub Marketplace: actions to improve your workflow

Find the actions that help your team build better, together.

github.com

 

 

 

 

 

runners

: workflow가 트리거 될 때 실행하는 서버

: 각 runner는 한 번에 1개의 job을 실행할 수 있음

: 깃허브에서 호스팅 해주는 gihub-hosted runner와 직접 호스팅하는 Self-hosted runner로 나뉨

: github-hosted runner는 azure의 standard_DS2_v2를 제공 (vCPU 2 / RAM 7GB / storage 14GB)

 

 

 

 

템플릿 활용

 

 

 

 

 

전체적인 컴포넌트 이해하기

name: CI

  on:
    push:
      branches: [ master ]
    pull_request:
      branches: [ master ]

  jobs:
    build:
      runs-on: ubuntu-latest

      steps:
      - uses: actions/checkout@v2

      - name: Run a one-line script
        run: echo Hello, world!

      - name: Run a multi-line script
        run: |
          echo Add other actions to build,
          echo test, and deploy your project.

 

 

 

 

 

이외 가능한 기능들

: 민감 정보 저장 하고 사용하기

: 여러 버전으로 실행하기

: 캐시 사용하기

: artifact 저장하기 등

 

 

 

 

 

참고

- public 레포지터리

: 완전 무료

 

- private 레포지터리

: 한달에 500MB, 2000분의 사용 시간 제공

: 과금정보 참조 (https://docs.github.com/en/billing/managing-billing-for-github-actions/about-billing-for-github-actions)

 

 

 

 

 

 

 

Refference

 

GitHub Actions의 소개와 핵심 개념

Engineering Blog by Dale Seo

www.daleseo.com

 

Github Action이란

github repository가 있다면 github action을 사용하여 workflow를 구성할 수 있습니다. workflow의 예시는 다음과 같습니다. test code 실행 배포 자동화 하고자 하는 스크립트 파이썬 버전 실행 여부 확인 가격

brownbears.tistory.com

 

Github Action 사용법 정리

Github Action 사용법 및 cron 사용 방법에 대해 정리한 글입니다 Github Action으로 YES24 IT 신간을 파이썬으로 크롤링 후 Issue에 업로드하는 예제가 있습니다 Github Action with Python Github action with cron, Github a

zzsza.github.io

 

 

Github Actions 예제로 workflow 알아보기 (비용, 제한)

2018년 마이크로소프트에서 Github를 인수하고, 여러가지 업데이트 등이 이루어져있다. 빌게이츠 시절 마이크로소프트는 오픈 소스를 배척하는 기업라는 이미지를 가지고 있었는데, Satya Nadella가 C

meaownworld.tistory.com

300x250
728x90