git

Github Actions를 이용한 CI/CD

잔망루피 2023. 4. 26. 22:47
반응형

CI 과정

1. Actions ➡️ Set up this workflow

2. .github\workflows의 main.yml에 Workflow 작성

  • yml 파일명은 바꿔도 됨
  • ⚠️ workflows 폴더 아래에 yml 파일이 있어야 워크플로우가 동작함

 

name: Java CI

on: [push]

jobs:
  build:
    runs-on: ubuntu-latest

    steps:
      - uses: actions/checkout@v3
      - name: Set up JDK 11
        uses: actions/setup-java@v3
        with:
          java-version: '11'
          distribution: 'temurin'
      - name: Validate Gradle wrapper
        uses: gradle/wrapper-validation-action@ccb4328a959376b642e027874838f60f8e596de3
      - name: Run chmod to make gradlew executable
        run: chmod +x ./gradlew
      - name: Build with Gradle
        uses: gradle/gradle-build-action@749f47bda3e44aa060e82d7b3ef7e40d953bd629
        with:
          arguments: build

👆 CI를 생성해서 Gradle을 사용한 Java 빌드 및 테스트

checkout 단계에서는 repository의 사본을 다운로드

setup-java Eclipse Temurin(Java) 11 JDK by Eclipse Adoptium을 구성

Validate Gradle wrapper 단계에서는 원본 트리에 있는 Gradle wrapper JAR 파일의 체크섬의 유효성을 검사

Run chmod to make gradlew executable 단계에서는 권한을 허용한다.

Build with Gradle 단계에서는 gradle/gradle-build-action 작업을 사용하여 빌드를 수행

이 단계에서는 Gradle 호출, 결과 수집, 작업 간의 캐싱 상태를 처리

 

 

💊 CI 트러블슈팅

FAILURE: Build failed with an exception.

* What went wrong:
Directory '/home/runner/work/notification-practice/notification-practice' does not contain a Gradle build.

A Gradle build should contain a 'settings.gradle' or 'settings.gradle.kts' file in its root directory. It may also contain a 'build.gradle' or 'build.gradle.kts' file.

루트 경로에 빌드를 하기 위해서 필요한 settings.gradle, build.gradle을 찾을 수 없다고 한다.

 

- name: Build with Gradle
        uses: gradle/gradle-build-action@749f47bda3e44aa060e82d7b3ef7e40d953bd629
        with:
          arguments: build
          build-root-directory: ./notification

build-root-directory를 직접 설정해주었다!

루트 경로 아래에 있는 모듈 notification을 빌드해야해서

 

 

CD

- name: executing remote ssh commands using key
  uses: appleboy/ssh-action@master
  with:
    host: ${{ secrets.HOST }}
    username: ${{ secrets.USERNAME }}
    key: ${{ secrets.KEY }}
    port: ${{ secrets.PORT }}
    scripts: |
       ./deploy.sh

위의 코드에 추가해준다.

GitHub의 Settings ➡️ Secrets and variables ➡️ Actions에 secrets를 등록하자.

 

 


참고 👇

https://docs.github.com/ko/actions/automating-builds-and-tests/building-and-testing-java-with-gradle

 

Gradle을 사용하여 Java 빌드 및 테스트 - GitHub Docs

GitHub Actions CI(연속 통합) 워크플로를 만들어 Gradle을 사용하여 Java 프로젝트를 빌드하고 테스트할 수 있습니다.

docs.github.com

 

https://www.youtube.com/watch?v=Np64aq4AlLg 

 

https://github.com/darass-team/2021-darass/blob/main/.github/workflows/BE_push_builder.yml

 

반응형

'git' 카테고리의 다른 글

error: failed to push some refs to ~  (0) 2023.06.25
[Git] feature branch 업데이트하기  (0) 2023.05.18
remote: Write access to repository not granted.  (0) 2023.04.26
yml 파일 관리  (0) 2023.04.24
[Git] fork  (0) 2023.04.01