본문 바로가기

TIL

TIL 3/25 - CI

오늘은 새로운거 뭘 안해서 .. 혼자 만들어본 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 파일 😂하하하

 

참고 자료

https://velog.io/@adam2/GitHub-Actions-로-풀리퀘스트-test-검증하기

'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