Skip to content

Feat: 배포파일 및 테스트코드 name 분리, 테스트코드 결과 제공, 배포 성공여부 슬랙메세지 전송 #147

Feat: 배포파일 및 테스트코드 name 분리, 테스트코드 결과 제공, 배포 성공여부 슬랙메세지 전송

Feat: 배포파일 및 테스트코드 name 분리, 테스트코드 결과 제공, 배포 성공여부 슬랙메세지 전송 #147

Workflow file for this run

name: Run Tests on Pull Request
on:
pull_request:
branches:
- Weekly
jobs:
test:
runs-on: ubuntu-latest
services:
redis:
image: redis:alpine
ports:
- 6379:6379
options: >-
--health-cmd "redis-cli ping"
--health-interval 10s
--health-timeout 5s
--health-retries 5
mysql:
image: mysql:8.0
ports:
- 3306:3306
env:
MYSQL_DATABASE: ${{ secrets.MYSQL_DATABASE }}
MYSQL_USER: ${{ secrets.MYSQL_USERNAME }}
MYSQL_PASSWORD: ${{ secrets.MYSQL_PASSWORD }}
MYSQL_ROOT_PASSWORD: ${{ secrets.MYSQL_ROOT_PASSWORD }}
options: >-
--health-cmd "mysqladmin ping --silent"
--health-interval 10s
--health-timeout 5s
--health-retries 5
steps:
- name: 📥 Checkout Repository
uses: actions/checkout@v4
- name: ☕ Set up JDK
uses: actions/setup-java@v4
with:
java-version: '21'
distribution: 'temurin'
- name: 🧪 Run Tests
env:
SPRING_DATASOURCE_URL: ${{ secrets.MYSQL_URL }}
SPRING_DATASOURCE_USERNAME: ${{ secrets.MYSQL_USERNAME }}
SPRING_DATASOURCE_PASSWORD: ${{ secrets.MYSQL_PASSWORD }}
SPRING_JPA_HIBERNATE_DDL_AUTO: "update"
JWT_SECRET: ${{ secrets.JWT_SECRET }}
SLACK_NOTICE_WEBHOOK_URL: ${{ secrets.SLACK_NOTICE_WEBHOOK_URL }}
SLACK_CHARGE_REQUEST_URL: ${{ secrets.SLACK_CHARGE_REQUEST_URL }}
SLACK_WITHDRAW_REQUEST_URL: ${{ secrets.SLACK_WITHDRAW_REQUEST_URL }}
run: ./gradlew test
- name: 📢 Notify Test Results on Slack
if: always()
env:
SLACK_WEBHOOK_URL: ${{ secrets.TEST_CODE_SLACK_WEBHOOK_URL }}
run: |
TEST_RESULT=$(grep -E "Tests run: [0-9]+, Failures: [0-9]+, Errors: [0-9]+, Skipped: [0-9]+" build/test-results/test/test-*.xml)
if echo "$TEST_RESULT" | grep -q "Failures: 0, Errors: 0"; then
curl -X POST -H 'Content-type: application/json' --data '{"text": "✅ *테스트 성공* - 모든 테스트가 통과되었습니다.\n'"$TEST_RESULT"'"}' $SLACK_WEBHOOK_URL
else
FAILED_TESTS=$(grep -E "failure|error" build/test-results/test/test-*.xml | sed 's/.*<failure message="\([^"]*\)".*/\1/;s/\s+/ /g')
curl -X POST -H 'Content-type: application/json' --data '{"text": "❌ *테스트 실패* - 실패한 테스트가 있습니다.\n'"$TEST_RESULT"'\n*실패 테스트 목록:*\n'"$FAILED_TESTS"'"}' $SLACK_WEBHOOK_URL
fi