Gradle Build Action을 사용해서 CI 구축하기
사용한 Action들
우선 간단하게 gradle 프로젝트를 생성하고 GitHub에 올려준다.
build.gradle.kts
plugins {
id("java")
}
group = "org.example"
version = "1.0-SNAPSHOT"
repositories {
mavenCentral()
}
dependencies {
testImplementation(platform("org.junit:junit-bom:5.9.1"))
testImplementation("org.junit.jupiter:junit-jupiter")
}
tasks.test {
useJUnitPlatform()
}
Main.java
public class Main {
public static void main(String[] args) {
System.out.println("Hello world!");
}
}
GitHub 리파지토리에 들어가서 상단의 Actions 탭에 들어간다.
Java with Gradle를 선택한다.
name: Gradle Build # 적절히 수정
on:
push:
branches: [ "main" ]
pull_request:
branches: [ "main" ]
permissions:
contents: read
# `build`라는 job은 3개의 step으로 이루어져 있다.
jobs:
build:
# Workflow가 실행되는 vm의 OS 지정
runs-on: ubuntu-latest
steps:
# 1. vm에서 리파지토리를 내려받음
- uses: actions/checkout@v3
# 2. vm에 jdk를 세팅함
- name: Set up JDK 17
uses: actions/setup-java@v3
with:
java-version: '17' # 사용하는 버전으로 수전
distribution: 'temurin' # 배포판 선택
# 3. gradle 실행
- name: Build with Gradle
uses: gradle/gradle-build-action@v2.4.2 # 버전 선택
with:
arguments: build
name
을 적절히 바꾸고
setup-java
의 java-version
도 맞게 변경한다. 지원하는 배포판은 문서를 확인하자.
gradle-build-action
의 버전은 현재 기준 최신 버전인 v2.4.2
로 변경하였다.
결과를 보면 캐싱이 기본적으로 활성화 되어있어 다음에 빌드하는 속도를 높일 수 있다.
캐싱은 gradle-build-action
에서 지원해준다.
cache-disabled
false
로 캐싱이 활성화 되어있다.- name: Build with Gradle
uses: gradle/gradle-build-action@v2.4.2
with:
arguments: build
cache-disabled: false # true or false
cache-read-only
true
일 경우 캐시를 읽기만 하고 저장하지는 않는다.gradle-build-action
는 기본적으로 main
/master
브런치만 캐시를 저장한다. 만약에 release
브런치에서도 캐시를 저장하고 싶으면 이런식으로 변경하면 된다.- name: Build with Gradle
uses: gradle/gradle-build-action@v2.4.2
with:
arguments: build
cache-read-only: ${{ github.ref != 'refs/heads/main' && github.ref != 'refs/heads/release' }}