在 GitLab 中使用 运行 管道时使用外部数据库
Using an external database while running pipeline in GitLab
首先,我是 CI 和 GitLab 的新手,所以我可能会说一些没有意义的话。如果发生这种情况,我深表歉意,请索取更多 details/info.
我有一个托管在 GitLab 上的项目 (Laravel),我正在使用他们的 CI 来 运行 测试。目前,我的测试没有使用任何数据库,一切正常。
我现在的情况是需要做一些涉及数据的测试。我遇到的问题是 cing 是我有三个数据库:一个是由我的应用程序管理的数据库,两个是遗留数据库。
每次管道 运行s 时都会重新创建由应用程序管理的那个,它是一次性的(用于测试),我使用工厂来存储数据。所以,这里没有问题。
然而,正如我所说,另外两个是遗留的,除了能够读取数据外,我无法控制它们。
我的测试,其中一些,需要来自这些数据库的数据,但我不知道如何编写 gitlab-ci YAML 文件来使用托管在另一台服务器(UAT 服务器)上的数据库).
希望有人能帮忙
在与@jakub-kania 交流并进行更多研究后,我正在回答我自己的问题。
我最后做的是在 gitlab runner 和托管数据库的服务器之间创建一个 ssh 隧道,并使用 GitLab 秘密变量来存储数据库的用户名和密码。
所以,这就是您需要做的。
创建一个 private/public 密钥对。将它们复制到不同的地方并不重要。
在托管数据库的服务器上创建一个新用户。这不是绝对必要的,您可以使用现有用户,但它更容易保护(您可以使用 --disabled-password
和 --disabled-login
选项创建它)。
将您之前创建的 public 密钥添加到新用户的 authorized_keys
文件中。
按照此页面上的说明进行操作 https://docs.gitlab.com/ee/ci/ssh_keys/README.html#ssh-keys-when-using-the-docker-executor。
为数据库用户名和密码创建两个秘密变量,称为BLOG_DB_USERNAME
和BLOG_DB_PASSWORD
。
将您的应用程序配置为使用存储在秘密变量中的用户名和密码。在我的例子中,我有一个 Laravel 应用程序,所以我将以下内容添加到我的 .gitlab-ci.yml
文件
的脚本部分
- echo >> .env
- echo "BLOG_DB_USERNAME=$BLOG_DB_USERNAME" >> .env
- echo "BLOG_DB_PASSWORD=$BLOG_DB_PASSWORD" >> .env
我希望这对其他人也有帮助。
首先,我是 CI 和 GitLab 的新手,所以我可能会说一些没有意义的话。如果发生这种情况,我深表歉意,请索取更多 details/info.
我有一个托管在 GitLab 上的项目 (Laravel),我正在使用他们的 CI 来 运行 测试。目前,我的测试没有使用任何数据库,一切正常。
我现在的情况是需要做一些涉及数据的测试。我遇到的问题是 cing 是我有三个数据库:一个是由我的应用程序管理的数据库,两个是遗留数据库。
每次管道 运行s 时都会重新创建由应用程序管理的那个,它是一次性的(用于测试),我使用工厂来存储数据。所以,这里没有问题。
然而,正如我所说,另外两个是遗留的,除了能够读取数据外,我无法控制它们。
我的测试,其中一些,需要来自这些数据库的数据,但我不知道如何编写 gitlab-ci YAML 文件来使用托管在另一台服务器(UAT 服务器)上的数据库).
希望有人能帮忙
在与@jakub-kania 交流并进行更多研究后,我正在回答我自己的问题。
我最后做的是在 gitlab runner 和托管数据库的服务器之间创建一个 ssh 隧道,并使用 GitLab 秘密变量来存储数据库的用户名和密码。
所以,这就是您需要做的。
创建一个 private/public 密钥对。将它们复制到不同的地方并不重要。
在托管数据库的服务器上创建一个新用户。这不是绝对必要的,您可以使用现有用户,但它更容易保护(您可以使用
--disabled-password
和--disabled-login
选项创建它)。将您之前创建的 public 密钥添加到新用户的
authorized_keys
文件中。按照此页面上的说明进行操作 https://docs.gitlab.com/ee/ci/ssh_keys/README.html#ssh-keys-when-using-the-docker-executor。
为数据库用户名和密码创建两个秘密变量,称为
BLOG_DB_USERNAME
和BLOG_DB_PASSWORD
。将您的应用程序配置为使用存储在秘密变量中的用户名和密码。在我的例子中,我有一个 Laravel 应用程序,所以我将以下内容添加到我的
的脚本部分.gitlab-ci.yml
文件- echo >> .env - echo "BLOG_DB_USERNAME=$BLOG_DB_USERNAME" >> .env - echo "BLOG_DB_PASSWORD=$BLOG_DB_PASSWORD" >> .env
我希望这对其他人也有帮助。