오늘은 새로운거 뭘 안해서 .. 혼자 만들어본 Github Actions CI 적용기를 올려본다
제일 처음에는 aws를 통해 ec2 인스턴스를 만들고 인스턴스 내부에서 Jenkins를 통해 CI/CD를 해보려고 했으나..
클라우드 컴퓨팅 기술 자체를 처음 접해보는거라 aws 인스턴스를 통해 확인해볼 수 없어서, 급한대로 Jenkins를 대신해서 Github action에서 workflow를 작성해 push 트리거를 통해 테스트 코드를 진행하고, 이를 미니 프로젝트에서 적용해보고싶어서 공부를 시작했다.
일단 workflow 구조부터 천천히 보면,
제일 큰 틀의 파일단위가 worflow이고,
이벤트를 감지하는 곳이 event, 그에 따른 작업이 job이고, 마지막으로 각각의 행동 단위는 step이다.
https://docs.github.com/ko/actions/use-cases-and-examples/creating-an-example-workflow
예시 워크로드 만들기 - GitHub Docs
푸시 이벤트에 의해 트리거되는 기본 워크플로를 만드는 방법을 알아봅니다.
docs.github.com
깃허브 공식 홈페이지를 참고해서 만들어보자.
name: Java Spring CI
on:
push:
branches:
- main
pull_request:
branches:
- main
jobs:
build:
runs-on: ubuntu-latest
services:
mysql:
image: mysql:8.0
ports:
- 3306:3306
env:
MYSQL_ROOT_PASSWORD: ${{ secrets.RootPassword }} # 루트 비밀번호
MYSQL_DATABASE: test_db # 생성할 데이터베이스 이름
MYSQL_USER: ino # 사용자 이름
MYSQL_PASSWORD: ${{ secrets.DatabasePassword }} # 사용자 비밀번호
options: >-
--health-cmd="mysqladmin ping -h localhost --silent"
--health-interval=10s
--health-timeout=5s
--health-retries=5
steps:
- name: Checkout code
uses: actions/checkout@v2
- name: Set up JDK 17
uses: actions/setup-java@v2
with:
java-version: '17'
distribution: 'adopt'
- name: Build With Gradle
run: ./gradlew build
- name: Run tests
env:
SPRING_DATASOURCE_URL: jdbc:mysql://localhost:3306/study_db
SPRING_DATASOURCE_USERNAME: root
SPRING_DATASOURCE_PASSWORD: ${{ secrets.DatabasePassword }}
run: ./gradlew test
어찌저찌 구글링을 통해 github secret 설정을 통해 첫 성공한 yml 파일 😂하하하
참고 자료
'TIL' 카테고리의 다른 글
TIL 3/27 - MyBatis(UPDATE, DELETE, SELECT) (0) | 2025.03.27 |
---|---|
TIL 3/26 - MyBatis (0) | 2025.03.26 |
TIL 3/24 - MVC (0) | 2025.03.24 |
TIL 3/21 - JDBC(UPDATE, DELETE), DAO, Service Layer (0) | 2025.03.21 |
TIL - 3/20 - JDBC (0) | 2025.03.20 |