# #python #sql-server #django #linux #gitlab-ci
Вопрос:
Имейте следующее .gitlab-ci.yml:
image: python:latest
stages:
- test
services:
- name: mcr.microsoft.com/mssql/server:2017-latest
alias: mssql
variables:
ACCEPT_EULA: Y
SA_PASSWORD: ${SA_PASSWORD}
MSSQL_PID: Developer
MSSQL_HOST: mssql
SECRET_KEY: ${SECRET_KEY}
DEBUG: "True"
DB_NAME: ${DB_NAME}
DB_USER: ${DB_USER}
DB_PASSWORD: ${DB_PASSWORD}
DB_HOST: mssql
DB_PORT: 1433
# This folder is cached between builds
# http://docs.gitlab.com/ee/ci/yaml/README.html#cache
cache:
paths:
- ~/.cache/pip/
before_script:
- python -V
- apt-get update -y amp;amp; apt-get update
- apt-get install -y --no-install-recommends curl gcc g gnupg
unixodbc-dev python3-dev npm nodejs
- curl https://packages.microsoft.com/keys/microsoft.asc | apt-key
> add -
- curl https://packages.microsoft.com/config/ubuntu/18.04/prod.list
/etc/apt/sources.list.d/mssql-release.list
- apt-get update amp;amp; apt-get install -y --no-install-recommends --
allow-unauthenticated msodbcsql17 mssql-tools
- echo 'export PATH="$PATH:/opt/mssql-tools/bin"' >> ~/.bash_profile
- echo 'export PATH="$PATH:/opt/mssql-tools/bin"' >> ~/.bashrc
- pip install -r requirements.txt
test:
script:
- python manage.py makemigrations
- python manage.py migrate
- python manage.py createsuperuser --username tester --email
tester@email.com --noinput
- python manage.py loaddata
- python manage.py collectstatic
- python manage.py test --keepdb
Со следующей ошибкой:
django.db.utils.InterfaceError: ('28000', "[28000] [Microsoft][ODBC
Driver 17 for SQL Server][SQL Server]Login failed for user
'<my-username>'. (18456) (SQLDriverConnect)")
У кого-нибудь есть решение, внесли различные изменения, все с одной и той же ошибкой.
ОБНОВЛЕНИЕ: Внесены изменения в файл .gitlab-ci.yml, в котором устранена ошибка «Время ожидания входа истекло», теперь появляется сообщение: «Не удалось войти в систему для пользователя my-username».
Комментарии:
1. Учитывая ссылку на
mcr.microsoft.com/mssql/server:2019-latest
это, похоже, что вы запускаете SQL Server в контейнере Docker. SQL Server запускается не мгновенно, поэтому ему приходится проверять/обновлять версии файлов базы данных, откатывать частичные транзакции и т. Д., Прежде чем он будет готов принимать подключения. Вы пробовали запустить цикл повторных попыток с задержками в коде, который не подключается?2. Для примера концепции см. раздел Заполнение тестовыми данными при запуске веб-приложения
3. @ user15659931 вы нашли какое-либо решение для этого?