From f236e5bfe4d2c6aca7d1b6943ead11dcc655dc72 Mon Sep 17 00:00:00 2001 From: root Date: Mon, 9 Mar 2026 17:31:28 -0400 Subject: [PATCH] update 13 docker CI --- Jenkinsfile | 4 ++-- docker-compose.ci.yml | 23 +++++++++++++++++++++-- 2 files changed, 23 insertions(+), 4 deletions(-) diff --git a/Jenkinsfile b/Jenkinsfile index d895b58b..d07b78e2 100644 --- a/Jenkinsfile +++ b/Jenkinsfile @@ -22,7 +22,7 @@ pipeline { stage('Prepare Test DB') { steps { - sh 'docker compose -f docker-compose.ci.yml run --rm app sh -lc "mkdir -p database && touch database/database.sqlite && php artisan migrate --force"' + sh 'docker compose -f docker-compose.ci.yml run --rm app sh -lc "echo using mysql: $DB_HOST:$DB_PORT/$DB_DATABASE"' } } @@ -34,7 +34,7 @@ pipeline { script: "docker compose -f docker-compose.ci.yml run --rm keygen" ).trim() } - sh 'APP_KEY=$APP_KEY docker compose -f docker-compose.ci.yml run --rm app php artisan test' + sh 'APP_KEY=$APP_KEY docker compose -f docker-compose.ci.yml run --rm app sh -lc "for i in $(seq 1 60); do mysqladmin ping -h ${DB_HOST:-db} -u${DB_USERNAME:-school} -p${DB_PASSWORD:-school} >/dev/null 2>&1 && break; sleep 2; done; php artisan migrate --force && php artisan test"' } } } diff --git a/docker-compose.ci.yml b/docker-compose.ci.yml index eb0d80f8..b553593c 100644 --- a/docker-compose.ci.yml +++ b/docker-compose.ci.yml @@ -11,12 +11,19 @@ services: environment: APP_ENV: testing APP_KEY: ${APP_KEY:-} - DB_CONNECTION: sqlite - DB_DATABASE: /app/database/database.sqlite + DB_CONNECTION: mysql + DB_HOST: ${DB_HOST:-db} + DB_PORT: ${DB_PORT:-3306} + DB_DATABASE: ${DB_DATABASE:-school_api} + DB_USERNAME: ${DB_USERNAME:-school} + DB_PASSWORD: ${DB_PASSWORD:-school} CACHE_DRIVER: array QUEUE_CONNECTION: sync SESSION_DRIVER: array MAIL_MAILER: log + depends_on: + db: + condition: service_healthy keygen: build: context: . @@ -28,3 +35,15 @@ services: - sh - -lc - php -r 'echo "base64:" . base64_encode(random_bytes(32));' + db: + image: ${MYSQL_IMAGE:-mysql:8.0} + environment: + MYSQL_DATABASE: ${DB_DATABASE:-school_api} + MYSQL_USER: ${DB_USERNAME:-school} + MYSQL_PASSWORD: ${DB_PASSWORD:-school} + MYSQL_ROOT_PASSWORD: ${MYSQL_ROOT_PASSWORD:-root} + healthcheck: + test: ["CMD", "mysqladmin", "ping", "-h", "127.0.0.1", "-uroot", "-p${MYSQL_ROOT_PASSWORD:-root}"] + interval: 5s + timeout: 5s + retries: 20