Github Action 알아보기

반디·2023년 7월 2일
0

개발기

목록 보기
9/16

Github Action

소프트웨어 Workflow 자동화를 도와주는 도구
테스트 코드, 배포, Github Tag 설정 등 다양한 작업을 지원

  • 제약 사항
    • 하나의 repo당 최대 20개까지의 workflow를 등록
    • workflow에 존재하는 job은 최대 6시간까지만 실행될 수 있음(초과 시 중지),
    • 각 workflow의 최대 수행시간은 35일 & 최대 256개의 job
    • 최대 1000번의 API requests
    • 동시에 실행할 수 있는 job에 제한 있음 (plan에 따라 다름)

Github Action Core

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
  • workflow

    • 여러 job으로 구성, event로 실행되는 자동화된 process
    • yaml 파일로 작성, .github/workflows 폴더에 저장
  • event

    • workflow를 실행하는 특정 활동, 규칙
      ex) 특정 Branch로 Push하는 경우, 특정 Branch로 Pull Request하는 경우, 특정 시간대에 반복(Cron)
  • jobs

    • Runner에서 실행되는 Steps의 조합
    • 여러 job이 있는 경우 병렬로 실행 (순차적으로도 실행 가능)
    • job들끼리 의존성이 있을 수 있음 (ex. A job 성공 시 B job 실행)
  • steps

    • job에서 실행되는 개별 작업
    • action 혹은 shell command 실행
    • 하나의 job에서는 데이터 공유 가능
  • actions

    • workflow의 제일 작은 단위
    • job을 생성하기 위해 여러 step을 묶은 것
    • 재사용이 가능한 component
  • runner

    • workflow가 실행될 서버
    • Github-hosted Runner: Github Action의 서버를 이용
    • Self-hosted Runner: 직접 서버를 호스팅해서 사용하는 방법

Github Action 사용해보기

  1. (실습을 위한) repository 생성 & create new file

  2. hello-github-action.py 생성 후 main branch에 commit
    (실습을 위해 main branch에 직접 commit)

  3. actions 탭에서 python application 선택

  4. .github/workflows/python-app.yml 생성
    원하는 기능에 맞춰 수정

  • on: event, 언제 workflow를 실행할 것인지
  • jobs: jobs를 정의하는 부분, 아래 example에서 build는 jobs의 이름
  • runs-on: 어떤 환경에서 실행하는지
  • uses: 사용할 github action 명시
  • name: step의 이름
    • uses가 없는 경우 run 이하에 작성된 shell command 실행
# This workflow will install Python dependencies, run tests and lint with a single version of Python
# For more information see: https://docs.github.com/en/actions/automating-builds-and-tests/building-and-testing-python

name: Python application

on:
  push:
    branches: [ "main" ]
  pull_request:
    branches: [ "main" ]

permissions:
  contents: read

jobs:
  build:

    runs-on: ubuntu-latest

    steps:
    - uses: actions/checkout@v3
    - name: Set up Python 3.10
      uses: actions/setup-python@v3
      with:
        python-version: "3.10"
    - name: Install dependencies
      run: |
        python -m pip install --upgrade pip
        pip install flake8 pytest
        if [ -f requirements.txt ]; then pip install -r requirements.txt; fi
    - name: Lint with flake8
      run: |
        # stop the build if there are Python syntax errors or undefined names
        flake8 . --count --select=E9,F63,F7,F82 --show-source --statistics
        # exit-zero treats all errors as warnings. The GitHub editor is 127 chars wide
        flake8 . --count --exit-zero --max-complexity=10 --max-line-length=127 --statistics
    - name: run hello github action
      run: |
        python hello-github-action.py
  1. main 브랜치에 commit 후 check 표시를 눌러 상태 확인

  • details를 누르면 로그 확인 가능

참고문헌

profile
꾸준히!

0개의 댓글