정리/Git

[git] git action workflow?

민발자 2024. 5. 29. 09:54
728x90

GitHub Docs - 워크플로 정보

 

워크플로 정보 - GitHub Docs

트리거, 구문, 고급 기능을 포함하여 GitHub Actions 워크플로의 개략적인 개요를 가져옵니다.

docs.github.com

 

 

0️⃣ github action

github action은 github에서 제공하는 빌드, 테스트 및 배포 파이프라인을 자동화할 수 있는 지속적 통합 및 지속적 배포 CI/CD 플랫폼

리포지토리에서 PR, 이슈 생성 등 이벤트가 발생할 때 트리거되도록 워크플로우를 구성

워크플로에는 하나 이상의 실행될 수 있는 작업이 포함됨

각 작업은 자체 가상 머신에서 실행되며 사용자가 정의한 스크립트를 실행 등 하나 이상의 단계가 있음

 

1️⃣ workflow

하나 이상의 작업을 실행하는 자동화된 프로세스

리포지토리의 이벤트에 의해 트리거 되거나 정의한 일정에 따라 트리거 됨

.github/workflows 폴더에 YAML파일로 정의

리포지토리에는 여러 워크플로가 있을 수 있음

Event

워크플로 실행을 트리거하는 리포지토리의 활동

이벤트 목록 확인하기

 

Job

동일한 러너에서 실행될 step의 집합

각 step은 실행될 셸 스크립트이거나 실행될 작업을 의미

각 step은 순서대로 실행되며 서로 종속, 동일한 러너에서 실행되기 때문에 step끼리 데이터 공유 가능

예로 애플리케이션을 빌드 후 빌드된 애플리케이션을 테스트할 수 있다

 

Runner

워크플로우가 트리거 될 때 워크플로를 실행하는 서버

러너는 한 번에 하나의 작업만 실행

Ubuntu, Linux, Windows, macOS 러너 제공

각 워크플로 실행은 새로 프로비저닝 된 가상머신에서 실행

 

2️⃣ workflow YAML 파일 구문 예시

GitHub Docs - About YAML sybtax for workflows

 

Workflow syntax for GitHub Actions - GitHub Docs

 

docs.github.com

 

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@v4
      - uses: actions/setup-node@v4
        with:
          node-version: '20'
      - run: npm install -g bats
      - run: bats -v

name

name: learn-github-actions

optional

Actions 탭에 표시되는 워크플로 이름

생략시 워크플로 파일 이름이 적용

 

run-name

run-name: ${{ github.actor }} is learning GitHub Actions

optional

워크플로에서 생성된 워크플로 실행의 이름

생략하거나 공백인 경우 워크플로 실행에 대한 이벤트별 정보로 설정

예) 푸시 이벤트에 의해 트리거된 워크플로의 경우 commit 메시지로 적용

깃허브 컨텍스트를 참조할 수 있음

 

on

GitHub Docs About YAML sybtax for workflows #on

on: [push]

워크플로의 트리거 지정

하나 또는 여러 개의 이벤트를 정의하거나 시간 일정 설정 가능

특정 파일, 태그 또는 브랜치 변경에 대해서도 설정 가능

# 단일 이벤트 지정
on: push

# 여러 이벤트 지정
# 여러 이벤트를 지정시 하나만 발생해도 워크플로 실행, 지정된 이벤트들이 동시에 실행된다면 여러 워크플로 실행
on: [push, fork]

# 활동 유형 지정
# 라벨의 활동 유형을 지정, 라벨이 생성될 때 워크플로 실행 트리거
on:
  label:
    types:
      - created
      
# 활동 유형 여러 개 지정
# 활동 유형 중 하나만 발생해도 워크플로 실행, 지정된 활동유형들이 동시에 실행된다면 여러 워크플로 실행
on:
  issues:
    types:
      - opened
      - labeled

# 필터
# 브랜치 필터를 사용하면 필터와 일치하는 브랜치로 push가 발생할때만 워크플로 실행
on:
  push:
    branches:
      - main

# 이벤트에 대한 활동 유형, 필터 모두 사용
# 라벨이 생성되거나 메인 브랜치에 push될 때, 깃허브 페이지가 활성화된 브랜치로 push 수행될 때 각각 워크플로 실행
on:
  label:
    types:
      - created
  push:
    branches:
      -main
  page_build:

 

jobs

GitHub Docs About YAML sybtax for workflows #jobs

jobs:
  check-bats-version:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4
      - uses: actions/setup-node@v4
        with:
          node-version: '20'
      - run: npm install -g bats
      - run: bats -v

해당 워크플로에서 실행되는 모든 작업을 그룹화

2️⃣라인 : 작업 이름은 check-bats-version

3️⃣라인 : 깃허브에서 호스팅하는 가상머신에서 작업이 실행 -> 최신 Ubuntu Linux 런처에서 

GitHub Docs runs-on 구문 예제

4️⃣라인 : 해당 작업에서 실행되는 모든 단계를 그룹화

5️⃣라인 : actions/checkout@4를 실행, 워크플로에서 리포지토리의 코드를 사용할 때마다 체크아웃 액션을 사용해야함

체크아웃이란?

 

GitHub Actions의 체크아웃(Checkout) 액션으로 코드 내려받기

Engineering Blog by Dale Seo

www.daleseo.com

6️⃣~8️⃣라인 : actions/setup-node@v4 실행, Node.js 20버전 사용, node 및 npm 명령이 모두 경로에 배치됨

9️⃣~🔟라인 : 러너에 명령 지시, npm 사용해 bats 소프트웨어 테스트 패키지 설치 후 bats 명령 실행

 

 

 

 

 

728x90