Gitlab with SQL Server 作为数据库源配置处理

Gitlab with SQL Server as database source configuration handling

我在 ubuntu 机器上有一个自托管的 gitlab。我为它配置了一个 linux 容器 运行 runner。现在,我正在尝试为我的 dotnet 项目编写一个配置,以便在此设置上进行 运行 单元测试。

我在没有数据库的情况下获取 运行 dotnet 应用程序的配置,唯一卡住的部分是我无法通过我的测试环境加载或连接数据库。

我得到 SQL 服务器 linux 容器到 运行 作为服务(我猜它是 运行ning)。但是我不确定如何将数据库加载到它。我知道我可以使用 Docker Run 来做到这一点。但是我不知道如何在这里 运行 它。

当我尝试 运行 "mssql-tools" 作为服务时,我无法将它的命令发送到 运行,因为它没有默认安装在 dotnet 映像中。

这是我的文件。

image: microsoft/dotnet:latest

variables: ACCEPT_EULA: Y SA_PASSWORD: my_secure_password MSSQL_PID: Developer

stages:
- test

before_script:
- "cd Source"
- "dotnet restore"

test:
stage: test
services:
- mcr.microsoft.com/mssql/server:2017-latest
- mcr.microsoft.com/mssql-tools
script:
- "cd ../Database"
- "docker run -it mcr.microsoft.com/mssql-tools"
- "sqlcmd -S . -U SA -P my_secure_password -i testdata_structure.sql" - "exit"
- "cd ../Source"
- "dotnet build"
- "dotnet test"

"sqlcmd -S . -U SA -P my_secure_password -i testdata_structure.sql 此命令在此设置中不起作用,因为未安装 sqlcmd,但它是一项服务。我不想制作一个已全部预安装的新映像。但是使用可用的东西来工作。

不,确定我是否能够在这里解释我的问题和知识。我是新手,但我从 2 天开始阅读和更改配置。我可以使用我的应用程序从本地 docker 命令和东西获取基于 Linux 的 SQL 服务器到 运行,但是在 Gitlab 上到 运行 单元测试我无法获取数据库到 restore/get 运行ning 并连接到应用程序。

我最终使用我的自定义 Docker 映像,其中安装了 dotnetcore 和 Sqlcmd,我可以在 gitlab 配置中使用 MsSQL 服务器即服务。 (必须将 SQL 服务器的主机名定义为与我的服务器在同一范围内的 IP)。

这不是一个闲置的答案,而是对我来说的解决方法。

GitLab 服务不会在您的容器作业中安装命令或应用程序,相反,服务是通常 运行 并行提供基础设施服务(例如数据库、缓存、队列等)的另一个容器

如果你想在你的容器中安装 sqlcmd,你必须安装它:

这是我的管道的摘录,在这种情况下,我的容器基于 Alpine,但您可以在这里找到更多方法:https://docs.microsoft.com/en-us/sql/connect/odbc/linux-mac/installing-the-microsoft-odbc-driver-for-sql-server?view=sql-server-ver15

 before_script: 
- apk add curl 
- apk add --no-cache gnupg
- curl -O https://download.microsoft.com/download/e/4/e/e4e67866-dffd-428c-aac7-8d28ddafb39b/msodbcsql17_17.7.2.1-1_amd64.sig
- curl -O https://download.microsoft.com/download/e/4/e/e4e67866-dffd-428c-aac7-8d28ddafb39b/mssql-tools_17.7.1.1-1_amd64.sig
- curl -O https://download.microsoft.com/download/e/4/e/e4e67866-dffd-428c-aac7-8d28ddafb39b/msodbcsql17_17.7.2.1-1_amd64.apk
- curl -O https://download.microsoft.com/download/e/4/e/e4e67866-dffd-428c-aac7-8d28ddafb39b/mssql-tools_17.7.1.1-1_amd64.apk
- curl https://packages.microsoft.com/keys/microsoft.asc  | gpg --import -
- gpg --verify msodbcsql17_17.7.2.1-1_amd64.sig msodbcsql17_17.7.2.1-1_amd64.apk
- gpg --verify mssql-tools_17.7.1.1-1_amd64.sig mssql-tools_17.7.1.1-1_amd64.apk
- apk add --allow-untrusted msodbcsql17_17.7.2.1-1_amd64.apk
- apk add --allow-untrusted mssql-tools_17.7.1.1-1_amd64.apk

script: 
- /opt/mssql-tools/bin/sqlcmd -S $DBC_SERVER -U $DBC_USER -P $DBC_PASSWORD -q "USE myTestDb; CREATE TABLE testGitlab (id int); SELECT * FROM testGitLab"