minghxx.blog
  • [git] git action workflow?
    2024년 05월 29일 09시 54분 36초에 업로드 된 글입니다.
    작성자: 민발자
    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

    '공부 > Git' 카테고리의 다른 글

    [Git] 깃허브 Issue 템플릿 적용  (0) 2024.05.13
    [Git] Commit message template 설정  (0) 2024.05.13
    [Git] Github label 커스텀  (0) 2024.05.13
    [Git] Git Branch 전략 - git-flow  (0) 2024.02.05
    [Git] gitignore 작성하기  (0) 2024.01.08
    댓글