github actions란
continuous integration and continuous delivery (CI/CD) platform
지속적 통합 및 배포
빌드, 테스트, 배포 파이프라인 자동화 가능
DevOps를 넘어서 repository에 다른 이벤트가 생겼을 때 workflows를 실행하게 해준다
예를 들어 누군가가 레포에 새로운 이슈를 생성했을 때마다 적절한 라벨을 자동으로 추가하도록 workflow를 실행할 수 있다.
workflow 실행을 위해 Linux, Windows, macOS virtual machines를 제공한다.
혹은 self-hosted runners를 host할 수도 있다.
구성요소는?
우리는 레포에 특정 이벤트가 발생하였을 때의 github actions workflow를 구성할 수 있고
workflow는 하나 이상의 jobs를 포함할 수 있다. sequential하게 실행될수도, parallel하게 실행될수도 있다. 각 job은 내부에서 각각의 virtual machine runner나 container내에서 내부적으로 수행되고 하나이상의 steps를 가진다. steps는 script를 실행하거나 action을 수행하고 이 단계는 워크플로우를 단순화할 수 있는 재사용 가능한 확장입니다.
workflows
github actions의 최상위 개념. 하나 이상의 jobs를 수행하는 자동화 프로세스
yaml파일로 정의된다.
특정 목적을 위한 일련의 실행 트리거, 환경, 기능 등을 모두 포함
.github/workflows 폴더 아래에 작성
여러개의 workflow파일 존재 가능
on 속성이 언제 실행될지를 결정하는데
•
main, develop 브랜치에 커밋이 푸쉬되거나 pull requests가 만들어지고 동기화될때 실행되도록 하는 예시
on:
push:
branches:
- main
- develop
pull_request:
YAML
복사
events
workflows가 수행되도록 하는 특정 활동
ex) pull request, opens an issue, push a commit
posting to a REST API나 수작업으로 스케쥴에 맞추어 워크플로우 실행을 트리거할수도 있음
jobs
yaml파일의 jobs 속성으로 워크플로가 실행되면 수행한 job들을 정의한다.
job : 독립된 환경에서 돌아가는 하나의 처리 단위
여러개의 job 정의가 가능하나 각각의 job은 별개의 독립적인 환경에서 실행됨
runs-on과 steps 속성은 필수적으로 정의해주어야 함.
runs-on : job을 실행할 러너(환경)정의. public github사용할 경우 깃헙에서 제공하는 러너 사용 가능
jobs:
echo-hello-world:
runs-on: ubuntu-latest
name: Echo Hello World Job
steps:
- uses: actions/checkout@v2
- run: echo Hello World!
YAML
복사
예시에서는 echo-hello-world라는 job 한개 존재
ubuntu-latest 러너에서 실행
actions/checkout 액션과 echo hello world! 명령어를 차례로 실행