코드 저장소(repository)로 유명한 GitHub에서 제공하는 CI(Continuous Integration, 지속 통합)와 CD(Continuous Deployment, 지속 배포)를 위한 비교적 최근에 추가된 서비스
기존 CI/CD 서비스 대비 간편한 설정과 높은 접근성으로 특히 개발자들 사이에서 많은 호응을 얻고 있다.
지속적으로 수행해야하는 반복 작업들
즉, 사람이 매번 직접 하기에는 비효율적인데다가 실수할 위험도 있기 때문에 GitHub Actions와 같은 자동화시키는 것이 유리
자동화해놓은 작업 과정
.github/workflows
폴더 아래에 위치한 YAML 파일
로 설정on 속성
을 통해서 해당 워크플로우가 언제 실행되는지를 정의// main 브랜치에 push 이벤트가 발생할 때 마다 워크플로우를 실행
on:
push:
branches:
- main
jobs:
# ...(생략)...
// 매일 자정에 워크플로우를 실행
on:
schedule:
- cron: "0 0 * * *"
jobs:
# ...(생략)...
jobs 속성
을 통해서 해당 워크플로우가 구체적으로 어떤 일을 해야하는지 명시// job1, job2, job3이라는 작업 ID를 가진 3개의 작업을 추가
jobs:
job1:
# job1에 대한 세부 내용
job2:
# job2에 대한 세부 내용
job3:
# job3에 대한 세부 내용
runs-on 속성
을 통해 해당 리눅스나 윈도우즈와 같은 실행 환경을 지정해야 한다.jobs:
job1:
runs-on: ubuntu-latest
steps:
# ...(생략)...
run 속성
uses 속성
-
를 붙여줘야 한다.// 자바스크립트 프로젝트에서 테스트를 돌리려면 코드 저장소에 코드를 작업 실행 환경으로 내려 받고, 패키지를 설치한 후, 테스트 스크립트를 실행
jobs:
test:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- run: npm install
- run: npm test
➡ 워크플로우(workflow)는 자동화 시켜놓은 작업 과정을 뜻하며 YAML 파일을 통해 어떤 작업(job)들이 언제 실행되야 하는지를 설정하며
각 워크플로우는 독립된 환경에서 실행되는 작업(job)이 적어도 한 개 이상으로 구성되며, 각 작업에는 작업 ID가 부여되고 세부 내용(실행 환경, 작업 단계 등)이 명시된다.
하나의 작업은 보통 순차적으로 수행되는 여러 개의 단계(step)로 정의되며, 각 단계는 단순한 커맨드(command)일 수도 있고 추상화된 액션(action)일 수도 있다.