티스토리 뷰
GitHub Actions?
- 빌드, 테스트 및 배포 파이프라인을 자동화할 수 있는 CI / CD 플랫폼
- Workflow, Event, Job, Action, Runner
GitHub Actions 구성요소
- GitHub Actions Workflow를 구성하여 Repository에서 Event가 발생할 때 트리거되도록 할 수 있다.
- ex. Repository에 push할 경우(Event), Workflow가 실행된다.
- Workflow는 순차적으로 또는 병렬로 실행할 수 있는 하나 이상의 Job을 포함한다.
- 각각의 Job은 자체 Runner(또는 Container 내부)에서 실행된다.
- Job은 하나 이상의 Step으로 이루어져 있고, Step은 정의한 script를 실행하거나 action을 실행한다.
Workflow
- Repository에 추가할 수 있는 일련의 자동화된 명령 집합
- 하나 이상의 Job으로 구성된다.
- GitHub Repository에 Event가 발생했을 때 Runner가 Workflow를 자동으로 실행한다.
- 특정 시간대(Schedule), 또는 REST API로 실행할 수도 있다
- Workflow는 Repository의
.github/workflows
내부의 YAML 파일로 워크플로우를 정의한다. buiild, test, deployment 등 역할에 맞는 Workflow를 추가할 수 있다.- ex. ci.yaml → CI 와 관련된 Workflow
- ex. cd.yaml → CD와 관련된 Workflow
Event
- Push, Pull Request, Commit 등 GitHub에서 일어날 수 있는 특정 행동을 Event라고 한다.
- 이벤트가 아닌 웹훅을 사용하면 GitHub 외부에 발생한 이벤트에 의해서도 Workflow를 실행시킬 수 있다.
on: push
- push 되었을 때 Workflow 실행
on:
push:
branches:
- main
- 'releases/**'
- main 브랜치에 push되었을 때 Workflow 실행
- release/** 브랜치에 push되었을 때 Workflow 실행
on:
schedule:
# * is a special character in YAML so you have to quote this string
- cron: '30 5,17 * * *'
- 매일 오전 5시 30분 및 오후 5시 30분(UTC)에 Workflow 실행
Job
- Runner에서 실행되는 여러 Step의 집합
- 각 Job은 지정한 Runner 환경에서 실행된다.
- 하나의 Workflow 내의 여러 Job은 독립적으로 실행되지만 필요에 따라 의존 관계를 설정하여 순서를 지정해줄 수 있다.
- ex. 테스트 수행 Job은 반드시 빌드 Job 이후에 수행되어야 하는데 여기서 의존 관계를 설정해 빌드 Job이 성공적으로 끝나야 테스트 Job을 수행하도록 만들 수 있다.
- 의존 관계를 설정하지 않으면 각각의 Job은 병렬로 동작한다.
- Step
- 명령을 실행할 수 있는 각각의 Task
- 각각의 Step은 하나의 Action일 수도 있고, Shell script가 될 수도 있다.
use
→ Action 실행run
→ Shell script 실행
jobs:
job1:
job2:
needs: job1
job3:
needs: [job1, job2]
- 실행 순서 : job1 → job2 → job3 순차적으로 동작
- job2가 실행되려면 job1이 끝나야 한다.
- job3가 실행되려면 job1, job2가 모두 끝나야 한다.
Action
- GitHub Actions 플랫폼을 위한 Custom Application
- 자주 반복되는 Job을 수행한다.
- Custom Action을 작성하여 사용하거나, GitHub Marketplace에서 Workflow에 사용할 Action을 찾을 수 있다.
- uses: actions/setup-node@v4
with:
node-version: '20'
- setup-node@v4 Action을 사용해여 node 20버전을 설치한다.
Runner
- Workflow가 트리거될 때 Workflow를 실행하는 서버
- Runner는 한 번에 하나의 Job을 실행할 수 있다.
- Workflow 실행은 새로 프로비저닝된 새로운 가상 머신에서 실행된다.
- GiHub은 Workflow를 실행하기 위한 Ubuntu Linux, Microsoft Windows, Mac OS Runner를 제공한다. (GitHub에서 호스팅하는 가상 환경)
- Github에서 호스팅하는 무료 가상 머신은 메모리 및 용량 제한이 존재한다.(참고 - github-hosted-runners)
- Larger Runner는 GitHub Team 또는 GitHub Enterprise Plan(유료)인 경우 사용할 수 있다.
참고자료
'Infra' 카테고리의 다른 글
[AWS] CloudFront? (0) | 2022.06.21 |
---|---|
[Network] 로드밸런서를 쓰는 이유, 기능 정리 (0) | 2021.05.24 |
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
링크
TAG
- Best Time to Buy and Sell Stock
- HtmlUtils
- file
- 정규경로
- getCanonicalPath
- hls.js
- sockjs
- github actions 기초
- 정규표현식 플래그
- getPath
- csv to bean
- websocket handshake
- CGLIB프록시
- FileNameFilter
- 그런RESTAPI로괜찮은가
- csv 라이브러리
- opencsv
- 문자열인코딩과 문자집합의 차이
- self-descriptive
- 정규표현식 패턴
- java8 stream
- MPEG-2 TS
- 코프링
- getAbsolutePath와
- 특수문자 치환
- github actions 구성요소
- AOP
- 다이나믹프록시
- Longest Consecutive Sequence
- github actions components
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
글 보관함