✏️ 필요성
- 다양한 사람들과 협업을 할 때 에러 또는 테스트가 실패한 상태로 원격 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
- name: Test with Gradle
run: ./gradlew --info test -Pjasypt.encryptor.password=${{secrets.JASYPT_ENCRYPTOR_PASSWORD}}
- name: Cleanup Gradle Cache
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: 변수내용