Подключение к mariaDB в действии Github

Я знаю, что есть несколько связанных вопросов, но я не могу заставить это работать.

Я работаю над действием на Github для тестирования моего приложения Django с помощью MariaDB и Selenium перед развертыванием. Пока что я упростил его до простого запуска тестов.

Я проверил свои секреты и знаю, что они верны.

Я пробовал запускать службы как на localhost, так и в контейнере, но ни одна из них не может определить адрес базы данных.

Я пробовал так:

name: Deploy

on:
  push:

jobs:
  django-tests:
    runs-on: ubuntu-latest

    services:
      db:
        env:
          MYSQL_ROOT_PASSWORD: ${{ secrets.MYSQL_ROOT_PASSWORD }}
          MYSQL_DATABASE: ${{ secrets.MYSQL_DATABASE }}
          MYSQL_USER: ${{ secrets.MYSQL_USER }}
          MYSQL_PASSWORD: ${{ secrets.MYSQL_PASSWORD }}
        image: mariadb:11.5
        options: >
          --health-cmd="healthcheck.sh --connect --innodb_initialized"
        ports:
          - 3306:3306
      selenium:
        image: selenium/standalone-chrome
        ports:
          - 4444:4444

    steps:
    - name: Check out code
      uses: actions/checkout@v3

    - name: Debug Hostname Resolution
      run: |
        ping -c 4 localhost:3306 || echo "Failed to resolve 'db'"

    - name: Set up Python
      uses: actions/setup-python@v4
      with:
        python-version: 3.12

    - name: Install dependencies
      run: |
        python -m pip install --upgrade pip
        pip install -r requirements.txt

    - name: Run Django Selenium Tests
      env:
        SECRET_KEY: ${{ secrets.DJANGO_SECRET }}
        MYSQL_ROOT_PASSWORD: ${{ secrets.MYSQL_ROOT_PASSWORD }}
        MYSQL_DATABASE: ${{ secrets.MYSQL_DATABASE }}
        MYSQL_USER: ${{ secrets.MYSQL_USER }}
        MYSQL_PASSWORD: ${{ secrets.MYSQL_PASSWORD }}
        DATABASE_URL: mysql://${{ secrets.MYSQL_USER }}:${{ secrets.MYSQL_PASSWORD }}@localhost:3306/${{ secrets.MYSQL_DATABASE }}
        DISPLAY: ":99.0"
      run: |
        python manage.py migrate
        python manage.py test

а также работает в контейнере python, не раскрывая порты и подключаясь к «db» напрямую (имя сервиса).

Любая помощь будет оценена по достоинству!

Вернуться на верх