.gitlab-ci.yml Переопределенная переменная, определенная в appsetings. json - PullRequest
0 голосов
/ 22 января 2020

Я пытаюсь заменить переменные env, используемые AspnetCore, определив их в файле .gitlab-ci.yml.

appsettings. json Файл выглядит следующим образом:

  "ConnectionStrings": {
    "DatabaseConnection": "my-connection-string"
  },

Вот некоторые вещи, которые я попробовал.

Недопустимый Yml:

ConnectionStrings:
  DatabaseConnection: "my-connection-string"  

Допустимый Yml (не работает):

"ConnectionStrings:DatabaseConnection": "my-connection-string"   
"ConnectionStrings::DatabaseConnection": "my-connection-string" 

Для последних двух я получаю эту ошибку и как вы можете видеть, что все это преобразуется в одну длинную строку вместо пары значений ключей для переменной env:

/ bin / bash: строка 87: экспорт: `ConnectionStrings :: DatabaseConnection = Server = ms = ms sql, 1433; База данных = MyDatabase; Идентификатор пользователя = SA; Пароль = MyPassword; Trusted_Connection = False; MultipleActiveResultSets = True ': недопустимый идентификатор

Я использую linux бегунок для CI .

1 Ответ

1 голос
/ 22 января 2020

Похоже, вы пытаетесь заменить соединение с базой данных в зависимости от среды. Вы можете использовать некоторые стратегии, такие как переменные конфигурации

"ConnectionStrings": {
    "DatabaseConnection": "$CONNECT_ENV"
  },

, где вы можете использовать одну переменную для каждой среды, например $CONNECT_INT, $CONNECT_QA, $CONNECT_PROD, и правильно настроить каждую из этих переменных (часть переменных .gitlab-ci.yml)

variables: 
    CONNECT_INT : "ConnectionStrings::DatabaseConnection=Server=mssql,1433;Database=DB_INTEGRATION_PROD;User Id=SA;Password=MyPassword;Trusted_Connection=False;MultipleActiveResultSets=True"

Или вы можете иметь несколько файлов на среду CONSTRING_INT.conf, CONSTRING_PROD и заменять их в зависимости от среды.

Или вы можете заменить строку подключения с помощью команд оболочки. https://unix.stackexchange.com/questions/226005/how-can-i-replace-a-specific-string-within-a-line-inside-a-text-file

Пример реального проекта, который мы используем 1 [Реальный пример одного проекта] 1

...