diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index cc9fd3d..5da5b79 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -1,9 +1,13 @@ -name: Build +name: Build and Test with jOOQ and Docker on: + pull_request: + branches: + - main push: branches: - main + - feature/* workflow_dispatch: jobs: @@ -14,14 +18,44 @@ jobs: - name: Checkout repository uses: actions/checkout@v3 + - name: Install Docker Compose + run: | + sudo curl -L "https://github.com/docker/compose/releases/download/v2.25.0/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose + sudo chmod +x /usr/local/bin/docker-compose + + - name: Start MySQL with Docker Compose + run: docker-compose up -d + + - name: Wait for MySQL to initialize + run: | + timeout 60s bash -c ' + CONTAINER_ID=$(docker ps -qf "name=mysql") + until docker exec $CONTAINER_ID mysqladmin ping -uroot -prootpassword --silent; do + echo "Waiting for MySQL to be ready..." + sleep 5 + done + ' + + - name: Verify MySQL Initialization + run: | + docker exec mysql mysql -uroot -prootpassword -e "SHOW TABLES;" sampledb || echo "No tables found" + + - name: MySQL Container Logs + if: failure() + run: docker-compose logs mysql + - name: Set up JDK 21 uses: actions/setup-java@v3 with: distribution: 'temurin' java-version: '21' - - name: Build Skeleton Batch with Gradle - run: ./gradlew :skeletonBatch:build + - name: Generate jOOQ Classes and Build + run: ./gradlew clean generateJooq build --info --stacktrace - - name: Run Skeleton Batch - run: ./gradlew :skeletonBatch:bootRun \ No newline at end of file + - name: Archive Test Reports + if: always() + uses: actions/upload-artifact@v3 + with: + name: test-reports + path: build/reports/tests/test \ No newline at end of file diff --git a/compose.yaml b/compose.yaml index 000de8d..d1f8b8b 100644 --- a/compose.yaml +++ b/compose.yaml @@ -1,7 +1,8 @@ -version: '3' +version: '3.9' services: mysql: image: mysql:latest + container_name: mysql ports: - 3306:3306 environment: @@ -9,4 +10,5 @@ services: MYSQL_DATABASE: sampledb MYSQL_USER: sampleuser MYSQL_PASSWORD: samplepassword - MYSQL_INITDB_SKIP_TZINFO: 1 \ No newline at end of file + volumes: + - ./init-scripts:/docker-entrypoint-initdb.d \ No newline at end of file