gitlab用SQL Server作为数据库源配置处理



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

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

我让SQL Server Linux容器作为服务运行(我猜它正在运行)。但是我不确定如何将数据库加载到其中。我知道我可以使用Docker Run做到这一点。但是我无法弄清楚如何在这里运行它。

当我尝试运行" mssql-tools"作为服务时,我将无法在dotnet image中默认安装它的命令。

这是我的文件。

图像:Microsoft/dotnet:最新

变量: accept_eula:y sa_password:my_secure_password MSSQL_PID:开发人员

阶段:
- 测试

trefer_script:
- " CD源"
- " dotnet Restore"

测试:
阶段:测试
服务:
-mcr.microsoft.com/mssql/server:2017-latest
-mcr.microsoft.com/mssql-tools
脚本:
- " CD ../database"
- " docker run -it mcr.microsoft.com/mssql-tools"
- " sqlcmd -s。 - "退出"
- " CD ../source"
- " dotnet build"
- " dotnet Test"

"sqlcmd -S . -U SA -P my_secure_password -i testdata_structure.sql此命令在此设置中无法使用,因为SQLCMD未安装,而是服务之一。我不想制作具有所有预安装的新图像。但是使用可用的东西来工作。

不要,确定我是否可以在这里解释我的问题和知识。我是新手,但是我正在阅读和更改2天的配置。我可以从本地docker命令和内容中使用基于Linux的SQL Server运行我的应用程序,但是在GitLab上运行单元测试,我无法让数据库还原/获取运行并连接到应用程序。

gitlab服务不在容器作业中安装命令或应用程序,而是服务器是另一个容器,通常并行运行以提供基础结构服务,例如数据库,缓存,排队等。

如果要在容器内放置SQLCMD,则必须安装它:

这是我的管道中的摘录,在这种情况下,我的容器基于Alpine,但您可以在这里找到更多方法:https://learn.microsoft.com/en-us/sql/sql/connect/odbc/linux--mac/installing-the-microsoft-odbc-driver-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"

我最终使用了我的自定义Docker映像,其中安装了DotnetCore和SQLCMD,我可以将MSSQL Server用作Gitlab配置中的服务。(必须将SQL Server的主机名定义为与我的服务器相同范围内的IP)。

不是一个空闲的答案,而是对我的解决方法。

最新更新