Continuous Integration의 약자이며, 소프트웨어 개발 프로세스의 일환이다.
코드 변경 사항이 자동으로 빌드 및 테스트되어 공유 코드 저장소에 통합되는 프랙티스를 나타낸다.
CI의 목적은 코드 변경으로 인해 발생할 수 있는 오류를 최소화하고, 팀원 간의 협업을 촉진하여 소프트웨어의 품질을 높이는 것이다.
github에서 공식적으로 제공하는 CI 툴이라고 보면된다.
public Repository에 한해서 무료로 사용할 수 있고 private Repository에 대해서는 runner(워크플로우 구동환경)에 따라 분당 / 시간당 금액을 청구한다.
Github Actions을 사용하여 npm에 패키지를 배포, Docker Hub에 이미지를 배포, AWS에 서비스를 배포하는 작업 등을 Github에서 바로 할 수 있다.
Workflow
Event
jobs
Actions
깃허브 내 해당 repository에서 Actions -> set up a workflow yourself 클릭
원하는 템플릿이있다면 사용가능
깃허브 민감정보 숨기기
위의 정보를 통하여 Secret 환경 변수 등록
name: CI
on:
push:
branches:
- main
jobs:
build:
runs-on: ubuntu-latest
steps:
- name: Checkout Repository
uses: actions/checkout@v2
- name: Set up JDK 11
uses: actions/setup-java@v2
with:
distribution: 'adopt'
java-version: '11'
- name: Build with Gradle
run: chmod +x ./gradlew && ./gradlew build
- name: Run Tests
run: ./gradlew test
name
: CI의 workflow 이름을 나타낸다.
on
섹션:
push
: 소스코드가 푸시될 때 이 workflow가 실행branches
: main 브렌치에 대해서만 이 workflow가 실행jobs
섹션:
build
job:runs-on
: Unbuntu 환경에서 실행steps
:Checkout Repository
: GitHub Actions에서 레포지토리를 체크아웃한다.Set up JDK 11
: AdoptOpenJDK의 11 버전을 설치Build with Gradle
: Gradle 빌드를 수행하기 전에 ./gradlew 스크립트에 실행 권한을 부여하고, 그 다음 빌드를 수행Run Tests
: Gradle을 사용하여 테스트를 실행합니다.이제 main 브렌치에서 변경사항이 생겨 push되면 아래와같이 빌드를 하는것을 확인할 수 있다. 만약 빌드시 에러나 테스트 실패시 로그와 함께 빌드가 실패한다.