이전의 GitHub Action -1 에서 GitHub Action 이란 무엇인가와 그와 연관된 개념에 대해 알아보았다.
이번 시간에는 GitHub Action 을 이용한 실습을 진행해 볼 예정이다.
https://dodokong.tistory.com/entry/GitHub-Action-1-%EA%B0%9C%EB%85%90
실습
Workflow 를 생성하는 방법이다. 우선 임의의 프로젝트를 하나 정하고 (없다면 생성) 프로젝트 최 상단에 다음과 같이
디렉토리를 생성한다.
yml 파일의 이름은 변경해도 상관 없다.
.github 디렉토리의 모양이 다르다면 settings -> Plugins -> Extra Icons 를 설치하면 된다.
deploy.yml
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
|
name: learn-git-hub-action
on:
push:
branches: [ master ]
pull_request:
branches: [ master ]
workflow_dispatch: # (2) 수동 실행
jobs:
build:
runs-on: ubuntu-latest # (3)
steps:
- name: Checkout
uses: actions/checkout@v2 # (4)
- name: Set up JDK 1.8
uses: actions/setup-java@v1 # (5)
with:
java-version: 1.8
- name: Grant execute permission for gradlew
run: chmod +x ./gradlew # (6)
shell: bash
- name: Build with Gradle
run: ./gradlew clean build # (7)
shell: bash
- name: Get current time
uses: 1466587594/get-current-time@v2
id: current-time
with:
format: YYYY-MM-DDTHH-mm-ss
utcOffset: "+09:00"
- name: Show Current Time
run: echo "CurrentTime=${{steps.current-time.outputs.formattedTime}}"
shell: bash
- name: run test
run: ./gradlew test
- name: run build
run: ./gradlew clean build -x test
|
cs |
master 브랜치에 Push 와 Pull Request 작업이 들어오는 경우 실행되게 된다.
jobs : build : runs-on : ubuntu-latest : 해당 Github Action 스크립트가 작동될 OS 환경을 지정한다.
uses : actions/setup-java : Github Action이 실행될 OS에 Java를 설치합니다
아래 부분은 gradle 을 통해 build 할 수 있는 권한을 주고 , gradle 을 통해 build 를 실행하는 코드입니다.
- name: run test
run: ./gradlew test
- name: run build
run: ./gradlew clean build -x test
이 두 부분은 , test 에서 에러가 나는지 , build 에서 에러가 나는지 확인하는 부분이다.
위의 세팅을 완료했으면 수정 사항을 원격 저장소에 push 한 후 , github 에 접속한다.
Actions 에 들어가면 다음과 같은 workflow 들이 보이고 해당 workflow 를 클릭하면 build 가 진행된다.
이상이 없다면 다음과 같이 build 가 성공적으로 진행되게 된다.
(언제 수정됐는지를 알기 위해 name : Get Current Time , name : Show Current Time 을 추가하였다.)
코드를 수정해서 push 하게 되면 자동으로 workflow 가 run 하게 되며 build 된다.
※ 오류 : 테스트케이스만 추가하면 gradle 을 build 하던 도중 , 다음과 같은 오류가 발생하였다.
처음에는 테스트케이스를 Junit 5 로 작성해서 생긴 오류인줄 알고 Junit 4 로 바꾸었지만 그럼에도 오류 발생
스프링부트와 버전 차이 때문에 생기는 문제인 줄 알고 , gradle 에 아래 부분을 작성해주었으나 그럼에도 오류 발생
testImplementation("org.junit.vintage:junit-vintage-engine") {
exclude group: "org.hamcrest", module: "hamcrest-core"
}
하단에 두 항목이 모두 hibernate exception 이 발생했기에 해당 항목을 찾아보니 현재 내 h2 DB 에는 테이블만 있을뿐 , 저장된 값이 없기 떄문에 이런 오류가 발생하고 있었다. 추후 mySql 로 연동하게 되는 경우 ,아래 코드로 사용한다.
- name: Setup MySQL
uses: samin/mysql-action@v1
with:
character set server: 'utf8'
mysql database: '테스트에 사용할 db이름'
mysql user: '유저 이름'
mysql password: ${{ secrets.MYSQL_PASSWORD }} # github Secret 탭에서 설정하세요!
더 자세한 내용은 하단 참고
https://github.com/marketplace/actions/start-mysql
'Infra Settings > Github Action' 카테고리의 다른 글
GitHub Action - 1 (개념) (0) | 2022.01.18 |
---|
댓글