From e329e5a99fc86237603acf823ca1f2197da0e7b8 Mon Sep 17 00:00:00 2001 From: TAEW00KIM Date: Wed, 18 Feb 2026 20:34:09 +0900 Subject: [PATCH 1/4] =?UTF-8?q?refactor:=20recent-summary=20year=20?= =?UTF-8?q?=EA=B8=B0=EB=B3=B8=EA=B0=92=20=EB=8F=99=EC=A0=81=ED=99=94=20?= =?UTF-8?q?=EB=B0=8F=20404=20=EC=97=94=EB=93=9C=ED=8F=AC=EC=9D=B8=ED=8A=B8?= =?UTF-8?q?=20=EC=B2=98=EB=A6=AC=20=EB=B3=B4=EA=B0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .github/workflows/ci.yml | 24 ++++++++++++++++++++++-- 1 file changed, 22 insertions(+), 2 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index a26491e34..d07260409 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -16,5 +16,25 @@ jobs: with: java-version: '17' distribution: 'adopt' - - name: 빌드 - run: SPRING_PROFILES_ACTIVE=ci ./gradlew test --stacktrace --quiet + + - name: Docker 환경 확인 + run: | + docker version + docker info + + - name: Testcontainers 이미지 사전 다운로드 + run: docker pull mysql:8.0 + + - name: 빌드 (실패 시 1회 재시도) + run: | + set +e + SPRING_PROFILES_ACTIVE=ci ./gradlew test --stacktrace --quiet + first_result=$? + if [ "$first_result" -ne 0 ]; then + echo "첫 번째 테스트 실행 실패. 1회 재시도합니다." + SPRING_PROFILES_ACTIVE=ci ./gradlew test --stacktrace --quiet + second_result=$? + if [ "$second_result" -ne 0 ]; then + exit "$second_result" + fi + fi From 1f513db312494ee9e379a8ed561fec8b4034f74e Mon Sep 17 00:00:00 2001 From: TAEW00KIM Date: Wed, 18 Feb 2026 21:04:22 +0900 Subject: [PATCH 2/4] ci: run gradle test retry without daemon --- .github/workflows/ci.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index d07260409..0b9275a74 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -28,11 +28,11 @@ jobs: - name: 빌드 (실패 시 1회 재시도) run: | set +e - SPRING_PROFILES_ACTIVE=ci ./gradlew test --stacktrace --quiet + SPRING_PROFILES_ACTIVE=ci ./gradlew --no-daemon test --stacktrace --quiet first_result=$? if [ "$first_result" -ne 0 ]; then echo "첫 번째 테스트 실행 실패. 1회 재시도합니다." - SPRING_PROFILES_ACTIVE=ci ./gradlew test --stacktrace --quiet + SPRING_PROFILES_ACTIVE=ci ./gradlew --no-daemon test --stacktrace --quiet second_result=$? if [ "$second_result" -ne 0 ]; then exit "$second_result" From f6ebf9932f6b5eb71709af7e07220109277d72f3 Mon Sep 17 00:00:00 2001 From: TAEW00KIM Date: Thu, 19 Feb 2026 14:11:20 +0900 Subject: [PATCH 3/4] ci: set explicit docker env for testcontainers in CI --- .github/workflows/ci.yml | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 0b9275a74..720caa917 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -7,6 +7,10 @@ on: jobs: build: runs-on: ubuntu-latest + env: + DOCKER_HOST: unix:///var/run/docker.sock + TESTCONTAINERS_DOCKER_SOCKET_OVERRIDE: /var/run/docker.sock + TESTCONTAINERS_HOST_OVERRIDE: localhost steps: - name: 저장소 Checkout uses: actions/checkout@v3 @@ -19,8 +23,12 @@ jobs: - name: Docker 환경 확인 run: | + echo "DOCKER_HOST=$DOCKER_HOST" + ls -l /var/run/docker.sock + docker context ls docker version docker info + docker ps - name: Testcontainers 이미지 사전 다운로드 run: docker pull mysql:8.0 From cb075effbb8abb56adb2a9f547f831a02d6b6612 Mon Sep 17 00:00:00 2001 From: TAEW00KIM Date: Fri, 20 Feb 2026 19:14:02 +0900 Subject: [PATCH 4/4] ci: run tests with mysql service instead of testcontainers --- .github/workflows/ci.yml | 37 ++++++++++++++++++++++--------------- 1 file changed, 22 insertions(+), 15 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 720caa917..bae3f66a4 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -7,10 +7,25 @@ on: jobs: build: runs-on: ubuntu-latest + services: + mysql: + image: mysql:8.0 + env: + MYSQL_ROOT_PASSWORD: password + MYSQL_DATABASE: test_container_test + ports: + - 3306:3306 + options: >- + --health-cmd="mysqladmin ping -h 127.0.0.1 -uroot -ppassword --silent" + --health-interval=10s + --health-timeout=5s + --health-retries=20 env: - DOCKER_HOST: unix:///var/run/docker.sock - TESTCONTAINERS_DOCKER_SOCKET_OVERRIDE: /var/run/docker.sock - TESTCONTAINERS_HOST_OVERRIDE: localhost + SPRING_PROFILES_ACTIVE: ci + SPRING_DATASOURCE_DRIVER_CLASS_NAME: com.mysql.cj.jdbc.Driver + SPRING_DATASOURCE_URL: jdbc:mysql://127.0.0.1:3306/test_container_test?useSSL=false&allowPublicKeyRetrieval=true&characterEncoding=UTF-8&serverTimezone=UTC + SPRING_DATASOURCE_USERNAME: root + SPRING_DATASOURCE_PASSWORD: password steps: - name: 저장소 Checkout uses: actions/checkout@v3 @@ -21,26 +36,18 @@ jobs: java-version: '17' distribution: 'adopt' - - name: Docker 환경 확인 + - name: MySQL 서비스 상태 확인 run: | - echo "DOCKER_HOST=$DOCKER_HOST" - ls -l /var/run/docker.sock - docker context ls - docker version - docker info - docker ps - - - name: Testcontainers 이미지 사전 다운로드 - run: docker pull mysql:8.0 + timeout 60 bash -c 'until echo > /dev/tcp/127.0.0.1/3306; do sleep 2; done' - name: 빌드 (실패 시 1회 재시도) run: | set +e - SPRING_PROFILES_ACTIVE=ci ./gradlew --no-daemon test --stacktrace --quiet + ./gradlew --no-daemon test --stacktrace --quiet first_result=$? if [ "$first_result" -ne 0 ]; then echo "첫 번째 테스트 실행 실패. 1회 재시도합니다." - SPRING_PROFILES_ACTIVE=ci ./gradlew --no-daemon test --stacktrace --quiet + ./gradlew --no-daemon test --stacktrace --quiet second_result=$? if [ "$second_result" -ne 0 ]; then exit "$second_result"