
checkstyle파일을 build.gradle 파일과 나란히 넣는다.

plugins {
id 'java'
id 'org.springframework.boot' version '3.4.1'
id 'io.spring.dependency-management' version '1.1.7'
id 'checkstyle'
}
먼저 plugins에 id 'checkstyle'을 추가한다.
build.gradle에 id-'checkstyle' 플러그인을 추가하는 이유는 Gradle이 Java코드 스타일을 검사할 수 있게 하기 위함이다.
플러그인이 하는 일:
즉, Github Actions의 workflow에서 실행하는
run: ./gradlew --console verbose clean checkstyleMain
이 명령어는 위에 추가한 checkstyle 플러그인이 제공하는 태스크를 실행하는 것이다.
checkstyle {
maxWarnings = 0
configFile = file("${rootDir}/naver-checkstyle-rules.xml")
configProperties = ["suppressionFile": "${rootDir}/naver-checkstyle-suppressions.xml"]
toolVersion = "8.24"
}
이제 checkstyle의 버전과 규칙을 적어주면 gradle은 특정버전의 checkstyle의 도구를 사용하고, xml파일에 정의된 코딩 스타일 규칙을 적용할 수 있다.
name: 🥔CheckStyle Validation🥔
on:
pull_request:
branches: [ main, dev ]
push:
branches: [ main, dev ]
defaults:
run:
working-directory: ./potatocountry
permissions:
contents: read
jobs:
checkstyle:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: set up JDK 21
uses: actions/setup-java@v4
with:
java-version: 21
distribution: 'temurin'
- name: Grant execute permission for gradlew
run: chmod +x gradlew
- name: Main checkstyle
run: ./gradlew --console verbose clean checkstyleMain
- name: ️Test checkstyle
run: ./gradlew --console verbose clean checkstyleTest
공식문서에 있는 yaml 형식에 따라 checkstyle yaml파일을 만들어주었다.
on event는 pull_request, push을 설정해주었고,
branch는 main과 dev 둘 다 적용되도록 만들었다.
chmod: cannot access 'gradlew': No such file or directory
default없이 돌렸을 때 해당 에러가 떴다.
어디서 돌아가는 지 명시적으로 작성해야 이 에러가 뜨지 않았기에,
defaults: run: working-directory: ./potatocountry 해당 부분을 추가해줬다.
permission설정은 Github Actions workflow가 가질 수 있는 권한을 제어하는 것이다.
contents: read는 저장소의컨텐츠에 대한 읽기 권한만을 부여한다.
기본적으로 Github Actions가 기본적으로 모든 권한(write)을 가지지만, 보안상의 이유인 정책변경으로 명시적으로 권한을 설정해야한다.
그런데, 굳이 설정을 명시적으로 하지 않아도 워크플로우는 실행된다.
Github Actions의 기본 권한 설정때문인데, 보안관점에서 명시적으로 하면 좋기 때문에
일단 설정을 해주었다.
새로운 가상머신 ubuntu에서 돌아갈 셋팅과 코드들을 작성해주면 된다.
checkout@v4가 가장 최신이기에 설정해주었다.
Input required and not supplied: distribution
처음에는 distribution 설정을 해주지 않고 push하니 github actions에서 해당 에러를 뿜고 터져있었다.
setup-java@v3부터 보안과 라이선스 이슈로 인해 distribution 파라미터가 필수로 지정되었다.
temurin: Eclipse Temurin (AdoptOpenJDK의 후속)
남은 부분은 터미널에서 run되는 것으로 구동된다.

지금 yaml파일이 2개이기 때문에 push 한번 당 워크플로우가 2개 생성이 된다.
감자상회의 코드는 check style에 맞춰 잘 작성되어있는 것이 확인됐다.