Github Action이란?

Y_Sevin·2023년 6월 18일

GitHub Actions이란?

GitHub Actions은 GitHub에서 호스팅하는 CI/CD (Continuous Integration/Continuous Deployment) 서비스로, GitHub 리포지토리 내에서 이벤트에 따라 작업을 자동으로 실행할 수 있다. 이를 통해 테스트, 빌드, 배포 등의 작업을 자동화하여 개발자들이 소프트웨어를 더 빠르게 개발하고 배포할 수 있다.

GitHub Actions의 장점

  • 통합된 환경: GitHub Actions은 GitHub과 통합되어 있어 설정이 간단하고 리포지토리와 함께 관리된다.
  • 다양한 이벤트: 다양한 이벤트에 대해 작업을 실행할 수 있어, 소스 코드 변경, 이슈 생성, PR(Pull Request) 등에 반응하여 작업을 자동화할 수 있다.
  • 커뮤니티 액션: GitHub Actions에는 다양한 커뮤니티에서 개발한 액션들이 있어, 테스트, 빌드, 배포 등의 작업을 더 쉽게 자동화할 수 있다.
  • 유연한 워크플로우: 워크플로우를 사용하여 여러 작업을 조합하고, 복잡한 CI/CD 파이프라인을 구축할 수 있다.

GitHub Actions 사용법

  1. 워크플로우 파일 생성
    Gradle 프로젝트를 위한 GitHub Actions 워크플로우를 설정하기 위해 먼저 .github/workflows 디렉토리에 워크플로우 YAML 파일을 생성한다.
name: Build and Test  # 워크플로우의 이름을 지정한다. 이 이름은 GitHub Actions UI에서 표시된다.

on:  # 어떤 이벤트에 대해 워크플로우를 실행할지 지정
  push:  # main 브랜치에서 코드가 푸시될 때
    branches:
      - main
  pull_request:  # main 브랜치에서 풀 리퀘스트가 올라왔을 때
    branches:
      - main

jobs:  # 워크플로우 작업 정의
  build:  # build 작업 정의
    runs-on: ubuntu-latest  # 작업을 실행할 환경을 지정

    steps:  # 작업 단계 정의
    - name: Checkout Repository  # 첫 번째 단계: 저장소를 체크아웃
      uses: actions/checkout@v2  # GitHub Actions에서 제공하는 체크아웃 액션을 사용

    - name: Set up JDK 11  # 두 번째 단계: JDK 11 환경을 설정
      uses: actions/setup-java@v2  # GitHub Actions에서 제공하는 Java 설정 액션을 사용
      with:  # 액션에 전달되는 입력 매개변수를 지정
        java-version: '11'  # 사용할 Java 버전을 지정

    - name: Grant execute permission for Gradle wrapper  # 세 번째 단계: Gradle 래퍼에 실행 권한을 부여
      run: chmod +x gradlew  # `chmod` 명령어를 사용하여 Gradle 래퍼에 실행 권한을 부여

    - name: Build with Gradle  # 네 번째 단계: Gradle을 사용하여 프로젝트를 빌드
      run: ./gradlew build 

2. 워크플로우 작성

위의 예시에서는 main 브랜치에 push되거나 PR이 생성될 때 Gradle을 사용하여 빌드를 실행하는 워크플로우를 정의한다.

3. 추가 구성

Gradle 프로젝트에 따라 추가적인 구성이 필요할 수 있다. 예를 들어 테스트 실행, 정적 코드 분석, 결과물 아티팩트 생성 등의 작업을 추가로 설정할 수 있다.

결론

GitHub Actions를 사용하여 Gradle 프로젝트를 자동화하면 코드 품질을 유지하고 더 높은 효율성을 얻을 수 있다. Gradle을 사용하여 빌드 및 테스트 프로세스를 자동화하면 개발자들이 더 많은 시간을 코드 작성에 집중할 수 있으며 이를 통해 소프트웨어 개발 생산성을 향상시킬 수 있고, 빠르고 안정적인 배포를 보장할 수 있다.

profile
매일은 아니더라도 꾸준히 올리자는 마음으로 시작하는 개발블로그😎

0개의 댓글