git hub action 으로 ci 하기

알파로그·2023년 5월 17일
0

About Git

목록 보기
10/15

✏️ 필요성

  • 다양한 사람들과 협업을 할 때 에러 또는 테스트가 실패한 상태로 원격 branch 에 push 하지 않도록 막을 수 있다.
    • 즉, 기본적인 검증이 완료된 상태로 merge 할 수 있다.

✏️ workflows

📍 파일 생성하기

  • git hub action 설정파일을 관리하는 디렉토리이다.
    • 아래 경로에 원하는 파일을 생성해주면된다.
    • .github/workflows/원하는 설정파일.yml

📍 CI 환경 설정

  • main 과 dev 브랜치는 pr rule 을 설정해 direct push 를 막아뒀기 때문에 pr 시 ci 가 작동되면 된다.
  • main 과 dev 를 제외한 모든 브랜치는 direct push 가 가능하기 때문에 push 할 때만 ci 가 작동된다.
name: ciTests

on:
  pull_request:
    branches:
      - main
      - develop
  push:
    branches-ignore:
      - main
      - develop

# 실질적인 검증 로직
jobs:
  test:

		# 가상 환경 설정
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v2

      - name: Set up JDK 17
        uses: actions/setup-java@v3
        with:
          java-version: 17
          distribution: adopt

      # 캐싱 부분 추가  ( 테스트 속도 향상)
      - name: Cache Gradle packages
        uses: actions/cache@v2
        with:
          path: |
            ~/.gradle/caches
            ~/.gradle/wrapper
          key: ${{ runner.os }}-gradle-${{ hashFiles('**/*.gradle*', '**/gradle-wrapper.properties') }}
          restore-keys: |
            ${{ runner.os }}-gradle-

      - name: Grant execute permission for gradlew
        run: chmod +x gradlew

			# application 에 문제가 없는지 검증
			# 민감정보를 jaypt 로 암호화 했기 때문에 환경변수를 추가해 줬다.
      - name: Test with Gradle
        run: ./gradlew --info test -Pjasypt.encryptor.password=${{secrets.JASYPT_ENCRYPTOR_PASSWORD}}

        # 캐싱 부분 추가
      - name: Cleanup Gradle Cache
        # Remove some files from the Gradle cache, so they aren't cached by GitHub Actions.
        # Restoring these files from a GitHub Actions cache might cause problems for future builds.
        if: ${{ always() }}
        run: |
          rm -f ~/.gradle/caches/modules-2/modules-2.lock
          rm -f ~/.gradle/caches/modules-2/gc.properties

✏️ git repository 환경변수 설정

  • 만약 환경변수가 필요한 프로젝트라면 git repository 에 환경변수를 별도로 추가해줘야 한다.
    • 왜냐하면 git hub action 은 자체적인 가상 환경의 Os 로 application 을 검증하고,
      이 때 환경변수를 설정해주지 않으면 알 수 있는 방법이 없기 때문이다.

📍 환경변수 설정하기

  • setting →Secrets and variables → Actions → New repository secret
    • name 은 환경변수가 적용될 이름
    • secret 엔 환경변수를 적어주면 된다.
EX)
Name: secrets.JASYPT_ENCRYPTOR_PASSWORD
Secret: 변수내용
profile
잘못된 내용 PR 환영

0개의 댓글