Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
44 changes: 39 additions & 5 deletions .github/workflows/build.yml
Original file line number Diff line number Diff line change
@@ -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:
Expand All @@ -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
- name: Archive Test Reports
if: always()
uses: actions/upload-artifact@v3
with:
name: test-reports
path: build/reports/tests/test
6 changes: 4 additions & 2 deletions compose.yaml
Original file line number Diff line number Diff line change
@@ -1,12 +1,14 @@
version: '3'
version: '3.9'
services:
mysql:
image: mysql:latest
container_name: mysql
ports:
- 3306:3306
environment:
MYSQL_ROOT_PASSWORD: rootpassword
MYSQL_DATABASE: sampledb
MYSQL_USER: sampleuser
MYSQL_PASSWORD: samplepassword
MYSQL_INITDB_SKIP_TZINFO: 1
volumes:
- ./init-scripts:/docker-entrypoint-initdb.d
Loading