반응형
Workflow
- GitHub Actions의 상위 개념
- 자동화 해놓은 작업 과정이며 repository내에
.github/workflows
폴더 아래 yaml 파일로 설정 가능- 여러 개의 워크폴로우 설정 가능
- 2가지 속성 정의 필요
on
: 워크플로우가 언제 실행되는지 정의jobs
: 워크플로우가 구체적으로 어떤 일을 해야하는지 명시
on:
push:
branches:
- master
- dev
pull_request:
branches:
- dev
jobs:
# ...
master
,dev
브랜치에push
이벤트가 발생할 때 마다 workflow를 실행해라.dev
브랜치에PR
이벤트가 발생할 때 마다 workflow를 실행해라.
Jobs
- 독립된 가상 머신 또는 컨테이너에서 돌아가는 하나의 처리 단위 의미
- 하나의 workflow에는 여러 개의 Job으로 구성될 수 있으며, 적어도 하나는 존재해야 함
- 기본적으로 Job은 동시에 실행되며 작업 간에 의존관계 설정을 통해 순서 제어 가능
- 2가지 필수 정의 속성
runs-on
: Job을 실행할 환경(러너)steps
: 작업 설정
jobs:
job1:
# job1 세부 내용
job2:
# job2 세부 내용
job3:
runs-on: ubuntu-latest
steps:
# ...
- job1, job2, job3 이란 ID를 가진 3개의 Job
runs-on
- Public GitHub를 사용하면, GitHub에 제공하는 runner를 사용하여 Job 실행 가능
- Self-hosted runner를 설정하여 자체 runner에서 실행 가능
- GitHub Enterprise에서는 GitHub 퍼블릭 Actions Runner 사용이 불가하므로, 따로 Runner를 구축하여 사용해야 한다.
실행 순서 제어 - needs
- 하나의 workflow상에서 각각의 Job은 서로 격리된 환경에서 실행 된다.
- job1, job2, job3는 서로 다른 CI 서버에서 작업이 실행이된다는 말이다. why? 병렬 처리로 인한 성능 향상
- job1, job2, job3가 파일을 공유해서 수정해야한다면 하나의 job으로 병합 필요
- job1 완료 후에 job2 실행, job1/job2 완료 후에 job3가 실행되어야 한다면?
needs
속성 사용
jobs:
job1:
runs-on: ubuntu-latest
steps:
- run: echo 'Hello Job1'
job2:
runs-on: ubuntu-latest
needs: job1
steps:
- run: echo 'Hello Job2'
job3:
runs-on: ubuntu-latest
needs: [job1, job2]
steps:
- run: echo 'Hello Job2'
작업의 선택적 실행 - if
if
속성을 통해서 조건을 생성할 수 있음
on: push
jobs:
job1:
runs-on: ubuntu-latest
steps:
- run: echo 'Hello Job1'
job2:
runs-on: ubuntu-latest
if: github.ref_name == 'master'
steps:
- run: echo 'Hello Job2'
- push 이벤트가 master 브랜치인 경우만 실행
- contains 내장 함수도 있는데, PR 코멘트에 특정 단어를 입력했을 때 실행이 되는지 확인해보자.
Steps
- 여러 단계의 task들의 집합
- 커맨드/쉘스크립트 실행 혹은 액션(action)을 실행할 수 있음
run
: 커맨드나 스크립트를 실행할 때 사용uses
: 액션(action)을 사용할 때 사용
jobs:
hello-world:
runs-on: ubuntu-latest
steps:
- name: Git Checkout
uses: actions/checkout@v3
- name : Echo Hello World!
run: echo Hello World!
Actions
- 재사용이 가능한 컴포넌트로 빈번하게 반복적으로 사용되는 단계를 정의해 둠
- 하나의 저장소 범위 내에서 액션을 모두 공유해서 사용 가능
- ex. GitHub 공식 Actions(actions/checkout@v3, actions/cache@v3)
- custom한 액션을 만들 수 있고, GitHub MarketPlace에 있는 공용 액션도 사용 가능
반응형
'프로그래밍 노트 > GIT' 카테고리의 다른 글
GitHub Actions 그레들 multi module 변경사항만 실행시키기 (0) | 2024.07.18 |
---|---|
GitHub Actions 캐시(Cache)액션 활용하기 (0) | 2023.10.19 |
revert 후 merge 할 때 유의 사항 (1) | 2022.09.20 |
Git branch 정리 관련(PR) (0) | 2021.08.02 |
[Git] 스테이시(stash)에 보관하기 (0) | 2021.01.20 |