Bitbucket конвейер sql порт базы данных сервера - PullRequest
0 голосов
/ 04 мая 2020

У меня есть конвейер битбакета, который должен выполнить django юнит-тесты. Поэтому мне нужна тестовая база данных, которая должна быть базой данных SQL SERVER.

Конвейер выглядит следующим образом:

# This is a sample build configuration for Python.
# Check our guides at https://confluence.atlassian.com/x/x4UWN for more examples.
# Only use spaces to indent your .yml configuration.
# -----
# You can specify a custom docker image from Docker Hub as your build environment.
image: python:3.7.3

pipelines:
  branches:
    master:
      - step:
          name: Setup sql
          image: fabiang/sqlcmd 
          script:
            - sqlcmd -S localhost -U sa -P $DB_PASSWORD
          services:
            - sqlserver
      - step:
          name: Run tests
          caches:
            - pip
          script: # Modify the commands below to build your repository.
            - python3 -m venv my_env
            - source my_env/bin/activate
            - apt-get update && apt-get install
            - pip3 install -r req-dev.txt
            - python3 manage.py test
      - step:
          name: Linter
          script: # Modify the commands below to build your repository.
            - pip3 install flake8
            - flake8 --exclude=__init__.py migrations/
definitions:
  services:
    sqlserver: 
      image: mcr.microsoft.com/mssql/server:2017-latest
      variables: 
        ACCEPT_EULA: Y
        SA_PASSWORD: $DB_PASSWORD

И каждый раз, когда я запускаю конвейер, я получаю:

Sqlcmd: Error: Microsoft ODBC Driver 17 for SQL Server : Login timeout expired. 
Sqlcmd: Error: Microsoft ODBC Driver 17 for SQL Server : TCP Provider: Error code 0x2726.

Я пытался сделать это локально, но потом только работать, когда я определил порт с тегом -p: docker run -e 'ACCEPT_EULA=Y' -e 'SA_PASSWORD=yourStrong!' -p 1433:1433 -d mcr.microsoft.com/mssql/server:2017-latest

Как я могу заставить конвейер работать? (возможно, определение порта, но как?)

ОБНОВЛЕНИЕ: На вкладке sqlserver в разделе результатов отображается следующая ошибка: enter image description here

1 Ответ

1 голос
/ 04 мая 2020

Я думаю, что проблема в том, что вы вызываете скрипт - sqlcmd -S localhost -U sa -P $DB_PASSWORD, потому что ваш sqlserver еще не полностью инициализирован.

Попробуйте поставить sleep 10 перед командой, и лучше всего добавить регистр ошибок если команда не выполнена sleep 5 и повторите попытку.

...