GitHub Action
빌드, 테스트 및 배포 파이프라인을 자동화할 수 있는 지속적인 통합 및 지속적인 배포 플랫폼(CI/CD)
- 리포지토리에 대한 모든 PR 빌드 후 테스트 가능
- 병합된 PR 을 프로덕션에 배포하는 워크플로 만들기 가능
- 레포에서 이벤트 발생 시 워크플로 실행 가능
- 레포에서 새 이슈 만들 때 적절한 라벨을 자동으로 추가하는 워크플로 실행 가능
구성 요소
PR, 이슈 생성 등의 이벤트가 발생될 때마다 트리거 되도록 GitHub Actions 워크플로 구성 가능.
- 순차적 또는 병렬로 실행할 수 있는 작업이 포함
- 자체 가상 머신 러너 또는 컨테이너 내부에서 실행
- 정의한 스크립트를 실행하거나 워크플로를 간소화할 수 있는 재사용 가능한 확장 “액션”을 실행하는 하나 이상의 “단계” 가 있음.
워크 플로 workflows
하나 이상의 작업을 실행하는 구성 가능한 자동화 프로세스. 레포지토리에 체크인된 yaml 파일에 정의하며 이벤트에 의해 또는 수동으로 / 정의 된 일정에 따라 트리거 됨.
- .github/workflow 이름을 가지고 있음.
- 한 레포에는 여러 워크플로가 있을 수 있고 각각 다른 작업 세트를 수행할 수 있음!
이벤트 Events
워크플로 실행을 트리거하는 깃 저장소의 특정 활동. PR 이나 이슈 열기 저장소 커밋 푸시 등…
- Rest Api 에 게시하거나 수동으로 일정에 따라 실행되게 하기도 가능.
- 워크플로 트리거 이벤트 전체 목록
작업 Jobs
동일한 러너에서 실행되는 워크플로 단계 집합.
- 각 단계는 실행될 셸 스크립트거나 실행될 동작.
- 단계는 순서대로 실행되며 서로 종속됨.
- 각 단계는 동일한 러너에서 실행되어 한 단계에서 다른 단계로 데이터 공유 가능.
- 예) 애플리케이션 빌드 단계 → 빌드 애플리케이션 테스트 단계
- 기본적으로 작업은 종속성이 없고 서로 병렬로 실행되나, 다른 작업과 종속성을 구성할 수 있음. (작업 1이 완료되는 걸 기다렸다가 작업2 실행 가능)
액션 Actions
복잡하지만 자주 반복되는 작업을 수행하는 GitHub Actions 플랫폼용 사용자 지정 애플리케이션. 액션을 사용하면 워크플로 파일에서 작성하는 반복 코드 양을 줄일 수 있다고 함.
- 깃허브에서 깃 저장소 가져오기
- 빌드 환경에 맞는 올바른 툴체인 설정
- 클라우드 공급자 인증 설정 가능
- 직접 작업 설정도 가능하지만 GitHub Marketplace 에서 워크플로에 사용 가능한 작업을 찾을 수 있음.
러너 Runners
트리거될 때 워크플로를 실행하는 서버. 각 러너는 한 번에 하나의 작업을 실행할 수 있음. Github 는 워크플로를 실행하기 위해 Linux, Windows, macOS 러너를 제공함.
- 각 워크플로 실행은 새롭고 새로 프로비저닝된 가상 머신에서 실행.
- 특정 하드웨어 구성이 필요하면 자체 러너 호스팅도 가능염!
워크플로 파일 작성해보기
name: git-actions
run-name: ${{ github.actor }} is learning
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: holiday-git-actions
# run-name: 워크플로 실행 이름, 실행 목록에 표시됨.
run-name: ${{ github.actor }} is learning
# on: 트리거 이벤트 지정, 여기서는 push 이벤트를 사용함 (저장소 변경사항 푸쉬, 풀 요청 병합...)
on: [push]
# holiday-git-actions 워크플로에서 실행되는 모든 작업 그룹화
jobs:
# check-bats-version 이라는 이름의 작업을 정의함. (작업의 자식 key 로, 속성이라고 볼 수 있음)
check-bats-version:
# 최신 ubuntu 버전에서 실행되도록 작업 구성
runs-on: ubuntu-latest
# check-bats-version 작업에서 실행되는 모든 단계 그룹화, 이 섹션 아래에 중첩된 각 항목은 별도의 작업 또는 셸 스크립트임.
steps:
# uses -> 이 단계가 깃 액션에서 사용한다는 것을 의미함.
# actions/checkout@v4 -> 리포지토리를 러너에 체크아웃해서 코드에 대해 액션을 실행할 수 있게 함. 워크플로가 레포 코드를 사용하려면 체크아웃 액션 사용 필수 !
- uses: actions/checkout@v4
# actions/setup-node@v4 -> 지정된 버전의 Node.js 를 사용하기 위한 작업 설정
- uses: actions/setup-node@v4
with:
node-version: '20'
# run -> 러너에게 해당 명령을 실행하라고 지시함.
# npm install -g bats -> bats 패키지 설치하라고 지시함.
- run: npm install -g bats
# bats -v -> 버전 출력하라고 지시함.
- run: bats -v
작업 시각화
- 1 , 2 단계는 작업을 실행하고 3, 4 단계는 셸 스크립트를 실행함.
워크플로 실행 보기
워크플로가 트리거되면 워크플로 실행이 생성됨. 실행이 되면 진행 상황의 시각화 그래프를 보고 GitHub 에서 각 단계의 활동을 볼 수 있음.
- Github.com 에서 저장소의 메인 페이지 이동.
- 저장소에서 Actions 클릭
3. 왼쪽 사이드바에서 보고 싶은 워크플로 클릭
4. 워크플로 실행 목록에서 실행 이름을 클릭하면 워크플로 실행 요약을 볼 수 있음.
5. 왼쪽 사이드바 또는 시각화 그래프에서 보고 싶은 작업을 클릭.
6. 결과를 보려면 단계 클릭.
728x90
'개발공부 개발새발 > Git' 카테고리의 다른 글
git - github 와 연동하기 (1) | 2023.03.07 |
---|---|
마스터 브랜치로 푸쉬한 대참사 ^-^/ (깃허브 마스터 브랜치 푸쉬 막기) (0) | 2023.01.23 |