Github Actions 란 무엇일까

jjuyaa·2022년 12월 12일
0

CloudClub

목록 보기
8/8

Github Actions 란

💡 Github actions 란 build,test,deployment pipeline 을 자동화해주는 CI/CD 플랫폼이다.

  • repository 의 모든 PR 를 test,build 하고 production 환경에 PR 를 merge 하는 workflow 를 생성할 수 있다.
  • repository 에서 events 가 발생할 경우 workflow 를 실행할 수 있는것이 기존 DevOps 와의 차이점이다.
    • ex) repository 에 누군가 새 issue 를 만들때, 자동으로 적절한 label 을 설정하는 workflow 를 실행할 수 있다.

Github Actions 의 구성요소

  • repository event 가 발생할 경우 trigger 될 workflow 를 정의할 수 있다.
  • workflow 는 하나 이상의 순차적 또는 병행적으로 실행될 job 을 가진다.
  • 각각의 job 은 virtual machine runner 또는 container 내부 에서 실행된다.
  • job 은 정의한 script 를 실행하는 여러개의 step 을 가지거나 workflow를 간단하게 하는 reusable extension 인 action 을 실행한다.

workflow

하나이상의 jobs 를 실행하는 configurable automated process

  • repository에 위치한 YAML 파일로 정의된다.
  • 수동또는 정의된 schedule 에 의해 trigger 될 수 있다.
    - code repository 내의 .github/workflows 폴더 안에 정의된다.
  • repository 내부에 다수의 workflow 를 가질 수 있다. 각각의 workflow 다양한 task 를 수행할 수 있다.
    • ex) 하나는 PR 를 test 하고, build 다른 하나는 release 가 생길 때 마다 depoly 해주기 등등

events

workflow 가 run 하도록 trigger 하는 특정한 활동

  • ex) PR, issue 발행, repository로 commit emdemd

Jobs

같은 runner 실행되는 workflow 안의 steps 의 집합

  • 각각의 step은 shell script 또는 실행될 수 있는 action 이다.
  • Job 내부의 step 은 순서대로 실행되고 서로 dependent 하다.
  • 각 step 이 같은 runner 에서 실행되기 때문에 서로 data 를 공유한다.
  • job 간의 dependency 를 정의할 수 있다. 일반적으로 job 은 의존성을 가지지 않고 , 병렬적으로 실행된다.
  • job 이 다른 job과 dependency 를 가질 경우, 해당 job 이 실행되기 이전에 dependent 한 job 이 먼저 실행되길 기다린다.

Actions

복잡하지만 빈번하게 반복되는 작업을 수행하는 Github Actions platform 의 custom application

  • action 을 사용해 workfile 파일 안에 기입한 반복되는 많은 양의 코드를 줄일 수 있다.
    - Github 로 부터 나의 repository 를 pull 할 수 있고, 나의 build 환경에 맞는 toolchain 을 setting 할 수 있다. 또는 cloud provider 에 인증을 셋팅할 수 있다.
  • 자신의 action 을 직접 쓰거나, github Marketplace 에서 workflow에 적용할 action 을 찾을 수 있다.

Runners

trigger 된 workflow 를 실행할 서버

Workflow 예제

1. workflow 생성하는 방법

  • workflow를 생성하고픈 repository에 workflow 를 저장하기 위한 .github/workflow/ 이름의 폴더를 생성한다.
  • .github/workflow/ 파일에 learn-github-actions.yml 파일명의 workflow 파일을 생성한다.
name: learn-github-actions
run-name: ${{ github.actor }} is learning GitHub Actions
on: [push]
jobs:
  check-bats-version:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v3
      - uses: actions/setup-node@v3
        with:
          node-version: '14'
      - run: npm install -g bats
      - run: bats -v
 
  • 이 변경 사항을 commit 하고 repository 에 push 한다.

    결과, 생성한 workflow 가 repository 에 저장되고, 누군가가 해당 repository 에 push 할 때 마다 생성한 workflow 가 실행된다.

workflow 파일 이해하기

  • name: learn-github-actions : (optional) Github repository 의 Actions 탭에 나타날 workflow 명
  • run-name: ${{ github.actor }} is learning GitHub Actions : (optional) workflow 가 실행될 경우의 이름이다. 만약 지정하지 않거나 공백으로 입력할 경우 해당 workflow 를 run 시킨 event 와 관련된 정보가 기입된다
    - 예를들어, workflow 가 push 또는 pull request 에 의해 trigger 됐다면,run-namecommit message 로 지정된다.
    (예시 실행 결과)

    (공백일 경우)
  • on: [push] : workflow trigger를 지정한다. 이 예시는 모든 브런치에 push 가 발생할 경우 trigger 된다.

  • jobs: : 해당 workflow 에서 실행될 모든 job 의 그룹
    - check-bats-version: : job 이름 지정

  • runs-on: ubuntu-latest : 최신의 Ubuntu Linux runner 에서 job 실행되도록 정의

  • steps: : check-bats-version job 에서 실행되는 모든 step 의 그룹. 여기에 기입되는 item 은 각각 분리된 action 또는 shell script

  • - uses: actions/checkout@v3 : 코드 저장소에 올려둔 코드를 CI 서버로 내려받은 후 특정 브랜치로 전환하는 행위를 일련의 과정으로 묶어서 제공해주는 것. Github Actions 에서 처리되는 모든 작업의 시작점이라고 할 수 있다.

결과 확인 방법

  1. repository 의 Actions tab 에 들어간다.
  2. 생성한 workflow 를 클릭한다.
  3. "Workflow runs" 아래에 , 보고자하는 run 의 이름을 클릭한다.
  4. Jobs 또는 visualization graph에서 , 보고자하는 job 을 클릭한다.
  5. step 의 결과를 확인한다.

결론

한마디로 해서 Github Actions 의 workflow 를 작성해 작성한 application 의 이미지를 repository 내에서 바로 이미지를 자동으로 만들 수 있다.(CI)

참고자료


0개의 댓글