Github Actions - 워크플로우 생성하기_checkstyle

wondi·2025년 1월 22일

인프라구축/CI&CD

목록 보기
7/10

🥔 워크플로우 생성하기 : CheckStyle


# check-style 가져오기

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

# 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코드 스타일을 검사할 수 있게 하기 위함이다.

  • 플러그인이 하는 일:

    • checkstyleMain- src/main소스 코드 검사
    • checkstyleTest- src/test 테스트 코드 검사 등이 있다.

즉, 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파일에 정의된 코딩 스타일 규칙을 적용할 수 있다.

# check-style yaml 파일 만들기

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

on event는 pull_request, push을 설정해주었고,
branch는 main과 dev 둘 다 적용되도록 만들었다.

## default

chmod: cannot access 'gradlew': No such file or directory

default없이 돌렸을 때 해당 에러가 떴다.
어디서 돌아가는 지 명시적으로 작성해야 이 에러가 뜨지 않았기에,
defaults: run: working-directory: ./potatocountry 해당 부분을 추가해줬다.

## permissions

permission설정은 Github Actions workflow가 가질 수 있는 권한을 제어하는 것이다.
contents: read는 저장소의컨텐츠에 대한 읽기 권한만을 부여한다.

기본적으로 Github Actions가 기본적으로 모든 권한(write)을 가지지만, 보안상의 이유인 정책변경으로 명시적으로 권한을 설정해야한다.

그런데, 굳이 설정을 명시적으로 하지 않아도 워크플로우는 실행된다.
Github Actions의 기본 권한 설정때문인데, 보안관점에서 명시적으로 하면 좋기 때문에
일단 설정을 해주었다.

## jobs

새로운 가상머신 ubuntu에서 돌아갈 셋팅과 코드들을 작성해주면 된다.
checkout@v4가 가장 최신이기에 설정해주었다.

Input required and not supplied: distribution

처음에는 distribution 설정을 해주지 않고 push하니 github actions에서 해당 에러를 뿜고 터져있었다.
setup-java@v3부터 보안과 라이선스 이슈로 인해 distribution 파라미터가 필수로 지정되었다.

temurin: Eclipse Temurin (AdoptOpenJDK의 후속)

  • Temurin을 많이 사용하는 이유는 무료, 오픈소스, 신뢰성이 높기 때문이다.

남은 부분은 터미널에서 run되는 것으로 구동된다.

👾 결과

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

profile
Developer Wondi

0개의 댓글