Keyboard shortcuts

Press ← or → to navigate between chapters

Press ? to show this help

Press Esc to hide this help

Gradle task를 CI checks에 연결하기

사용자 지정 CI 작업은 해당 언어 하위 폴더의 내부 build.gradle에 Gradle task로 정의합니다. 루트의 생성된 CI 설정을 직접 바꾸는 대신 지원되는 task의 의존 관계로 연결합니다.

작업 실행 단계

다음 예시는 실행 시 Hello World를 출력하는 task입니다. 출력 자체는 데이터나 코드 품질을 검증하지 않으며, doLast가 구성 시점이 아니라 task 실행 시점에 동작하는 방식을 보여 줍니다.

task customTask {
    doLast {
        println "Hello World"
    }
}

실제 검사에는 doLast 안에 검증 작업을 넣고, 실패하면 Gradle 작업이 실패하도록 구현해야 합니다.

Checks의 선행 작업

같은 build.gradle에 다음 의존 관계를 추가하면 CI의 check 전에 customTask가 실행됩니다.

project.tasks.check.dependsOn customTask

검사 실패로 CI를 막아야 하는 작업은 필요한 CI 단계의 의존성으로 연결합니다.

발행 task의 후처리

publish 뒤에 실행할 작업은 finalizer로 연결할 수 있습니다.

project.tasks.publish.configure {
    finalizedBy customTask
}

Finalizer는 성공한 발행에만 실행되는 후크가 아닙니다. Gradle은 대상 task가 실패하거나 UP-TO-DATE여도 해당 finalizer를 실행합니다. 성공한 발행을 전제로 하는 작업이라면 이 실행 조건을 고려해야 합니다.

연결 대상으로 지원하는 CI task는 project.tasks.check, project.tasks.test, project.tasks.publish입니다. 내부 task 이름은 변경될 수 있으므로 의존하지 않는 것이 권장됩니다.

ci.yml에 사용자 지정 검사를 추가하는 방식은 권장하지 않습니다. 저장소를 업그레이드할 때 이 파일이 덮어써지므로 사용자 구성이 사라질 수 있습니다.