이전에 CI/CD 환경을 구축할 때 헤매느라 실행이 실패하는데 메인 브랜치에 푸시해야만 실행 결과를 확인해야 해서 커밋 내역이
이번 프로젝트에서 다시 Github Actions을 사용할 일이 생겨 이번에는 act라는 오픈소스를 통해 로컬 환경에서 Github Actions 스크립트를 테스트해보려고 한다.
사전 설치
Docker 설치
Act 오픈소스는 도커 기반으로 돌아가는 커맨드이기 때문에 도커 환경설정이 필요하다.
Mac 기준 dockerdocs에서 Docker.dmg를 다운로드하여 설치한다.
만약 도커를 이전에 설치한 적이 없었다면 설치 후
- What is a container?
을 누르면 welcome-to-docker 컨테이너가 생기고 Containers 탭에서 이를 확인할 수 있다.
Act 설치
맥의 경우 터미널에서 brew를 이용해 간편하게 Act를 설치할 수 있다.
% brew install act
Github Actions 설정 파일(Workflow) 작성
Workflow는 Github Actions에서 특정 작업을 자동화하고 관리하기 위해 사용하는 작업의 집합이다.
workflow 파일은 로컬 깃허브 프로젝트 루트 폴더 하위에 github/workflows 디렉토리를 생성하고 작성하면 된다.
아래 예시로 들은 gradle.yml은 develop 브랜치에 push 이벤트가 발생했을 때 실행되는 workflow이다.
name: CI
on:
push:
branches: [ "develop" ]
permissions:
contents: read
jobs:
deploy:
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v3
- name: Set up JDK 17
uses: actions/setup-java@v3
with:
java-version: '17'
distribution: 'temurin'
- name: Grant execute permission for gradlew
run: chmod +x ./gradlew
- name: Build with Gradle
run: ./gradlew build test
사용하는 IDE 터미널에 아래 명령어로 도커가 정상적으로 작동 중인지 확인한다.
% docker container ls -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
b6e9edf86fa3 docker/welcome-to-docker:latest "/docker-entrypoint.…" 50 minutes ago Up 50 minutes 0.0.0.0:8088->80/tcp welcome-to-docker
실행 가능한 workflow를 확인한다
# 기본
% act -l
# Apple M-series 칩인 경우
% act -l --container-architecture linux/amd64
# 특정한 job들만 확인하기
% act -j job_name -l
workflow 실행 명령어
# 푸시 이벤트 시작(기본)
% act
# 푸시 이벤트 시작(기본), Apple M-series 칩인 경우
% act --container-architecture linux/amd64
# 특정 이벤트 시작
% act pull_request
# 특정 job만 실행
% act -j job_name
# 특정 workflow만 실행
% act -j lint -W .github/workflows/[workflow 이름].yml
처음 푸시 이벤트를 시작하는 경우, 사용할 기본 이미지 옵션을 Large, Medium, Micro 중에 선택해야 한다. 기본 옵션인 Medium으로 선택하면, 바로 workflow가 실행된다.
실행한 workflow가 잘 실행되면 아래처럼 Job succeeded가 나온다.
'Back-end' 카테고리의 다른 글
[Spring] 정적 코드 분석을 위해 SonarCloud 사용하기 (0) | 2024.08.21 |
---|---|
[Spring] SonarQube로 프로젝트 정적 코드 분석 (0) | 2024.08.19 |
[JUnit] 테스트 코드에 Test Fixture 사용하기: 테스트 데이터 재사용 (0) | 2024.08.05 |
[Gradle] build.gradle 플러그인 분리하기 (0) | 2024.07.25 |
[Spring Boot] 멀티모듈에 JaCoCo + JaCoCo Report Aggregation 적용하기 (3) | 2024.07.25 |