Кемеровские программисты php общаются здесь
Anonymous
Проблема с действиями github при создании тестовой базы данных для запуска PHPunit в рабочем процессе.
Сообщение
Anonymous » 10 ноя 2024, 11:59
У меня есть проект на symfony, и я хочу реализовать CI через действия github, но при запуске база данных выдает мне ошибку, что таблица уже создана и поэтому не могу выполнить миграцию, но ранее я это сделал принудительно удалить, не понимаю в чем ошибка.
Пробую этот .yml
Код: Выделить всё
name: Symfony Tests
on:
push:
branches: [ "master" ]
pull_request:
branches: [ "master" ]
permissions:
contents: read
jobs:
symfony-tests:
runs-on: ubuntu-latest
services:
mysql:
image: mysql:8.0
env:
MYSQL_ROOT_PASSWORD: root
MYSQL_DATABASE: nurses
ports:
- 3306:3306
options: >-
--health-cmd="mysqladmin ping"
--health-interval=10s
--health-timeout=5s
--health-retries=3
steps:
# Checkout the repository
- uses: actions/checkout@v4
# Setup PHP environment
- uses: shivammathur/setup-php@v2
with:
php-version: '8.2' # Ajusta la versión según tus necesidades
extensions: mbstring, intl, pdo_mysql
# Copy the .env.test.local file if not already present
- name: Copy .env.test
run: php -r "file_exists('.env.test.local') || copy('.env.test', '.env.test.local');"
# Cache Composer packages
- name: Cache Composer packages
id: composer-cache
uses: actions/cache@v3
with:
path: vendor
key: ${{ runner.os }}-php-${{ hashFiles('**/composer.lock') }}
restore-keys: |
${{ runner.os }}-php-
# Install dependencies
- name: Install Dependencies
run: composer install --no-progress --prefer-dist
# Wait for MySQL to be ready
- name: Wait for MySQL to be ready
run: |
until mysqladmin ping -h"127.0.0.1" --silent; do
echo "Waiting for database connection..."
sleep 1
done
- name: Drop Database if Exists
run: php bin/console doctrine:database:drop --force --if-exists
env:
DATABASE_URL: "mysql://root:root@127.0.0.1:3306/nurses"
- name: Create Database
run: php bin/console doctrine:database:create
env:
DATABASE_URL: "mysql://root:root@127.0.0.1:3306/nurses"
- name: Drop Existing Database Schema (force drop all tables)
run: php bin/console doctrine:schema:drop --force
env:
DATABASE_URL: "mysql://root:root@127.0.0.1:3306/nurses"
- name: Run Database Migrations
run: php bin/console doctrine:migrations:migrate
env:
DATABASE_URL: "mysql://root:root@127.0.0.1:3306/nurses"
# Run PHPUnit tests
- name: Execute tests (Unit and Feature tests) via PHPUnit
env:
DATABASE_URL: "mysql://root:root@127.0.0.1:3306/nurses"
run: vendor/bin/phpunit
И я понимаю это
Подробнее здесь:
https://stackoverflow.com/questions/791 ... nit-in-the
1731229141
Anonymous
У меня есть проект на symfony, и я хочу реализовать CI через действия github, но при запуске база данных выдает мне ошибку, что таблица уже создана и поэтому не могу выполнить миграцию, но ранее я это сделал принудительно удалить, не понимаю в чем ошибка. Пробую этот .yml [code]name: Symfony Tests on: push: branches: [ "master" ] pull_request: branches: [ "master" ] permissions: contents: read jobs: symfony-tests: runs-on: ubuntu-latest services: mysql: image: mysql:8.0 env: MYSQL_ROOT_PASSWORD: root MYSQL_DATABASE: nurses ports: - 3306:3306 options: >- --health-cmd="mysqladmin ping" --health-interval=10s --health-timeout=5s --health-retries=3 steps: # Checkout the repository - uses: actions/checkout@v4 # Setup PHP environment - uses: shivammathur/setup-php@v2 with: php-version: '8.2' # Ajusta la versión según tus necesidades extensions: mbstring, intl, pdo_mysql # Copy the .env.test.local file if not already present - name: Copy .env.test run: php -r "file_exists('.env.test.local') || copy('.env.test', '.env.test.local');" # Cache Composer packages - name: Cache Composer packages id: composer-cache uses: actions/cache@v3 with: path: vendor key: ${{ runner.os }}-php-${{ hashFiles('**/composer.lock') }} restore-keys: | ${{ runner.os }}-php- # Install dependencies - name: Install Dependencies run: composer install --no-progress --prefer-dist # Wait for MySQL to be ready - name: Wait for MySQL to be ready run: | until mysqladmin ping -h"127.0.0.1" --silent; do echo "Waiting for database connection..." sleep 1 done - name: Drop Database if Exists run: php bin/console doctrine:database:drop --force --if-exists env: DATABASE_URL: "mysql://root:root@127.0.0.1:3306/nurses" - name: Create Database run: php bin/console doctrine:database:create env: DATABASE_URL: "mysql://root:root@127.0.0.1:3306/nurses" - name: Drop Existing Database Schema (force drop all tables) run: php bin/console doctrine:schema:drop --force env: DATABASE_URL: "mysql://root:root@127.0.0.1:3306/nurses" - name: Run Database Migrations run: php bin/console doctrine:migrations:migrate env: DATABASE_URL: "mysql://root:root@127.0.0.1:3306/nurses" # Run PHPUnit tests - name: Execute tests (Unit and Feature tests) via PHPUnit env: DATABASE_URL: "mysql://root:root@127.0.0.1:3306/nurses" run: vendor/bin/phpunit [/code] И я понимаю это [img]https://i.sstatic.net/pBA1SgKf.png[/img] Подробнее здесь: [url]https://stackoverflow.com/questions/79174089/problem-with-github-actions-when-creating-a-test-database-to-run-phpunit-in-the[/url]