在 travis-ci 上设置用于测试Node.js应用程序的 postgres 数据库 url



我已经为我的节点.js应用程序编写了一些测试,并且测试正在使用Postgresql测试数据库在本地运行。

当我运行测试脚本npm run test时,环境设置为test,发生这种情况时,将为测试数据库设置数据库连接字符串,并且我现在在应用程序中的查询在测试数据库上完成。这样:

let connectionString;
if (process.env.NODE_ENV === 'test') {
connectionString =`postgresql://${process.env.DB_USER}:${process.env.DB_PASS}@${process.env.DB_HOST}:${process.env.DB_PORT}/${process.env.TEST_DB_NAME}`;
} else {
connectionString =`postgresql://${process.env.DB_USER}:${process.env.DB_PASS}@${process.env.DB_HOST}:${process.env.DB_PORT}/${process.env.DB_NAME}`;
}

这样,我的测试就会在测试数据库上运行。

但是,在travis上,我知道我需要进一步配置自己的数据库。在travisCI文档中,我在这里阅读了如何设置PostgreSQL数据库,但这对我没有帮助,因为我如何获得上面的完整数据库URL?在travisCI上,我应该使用什么作为我的数据库hostnameport以及如何在我的代码中设置这个值?

如何设置数据库连接字符串并在代码中访问它?

感谢您的任何想法。

在搜索如何做完全相同的事情时发现了这个,这并没有回答我的问题,所以万一其他人遇到它,我想我已经解决了它。

zerosand1s 有点回答了它,但网上似乎没有任何地方实际上说主机名或端口应该是什么(也许我很愚蠢,这很明显,但:耸耸肩:(

根据 psql 文档:

默认为 PGPORT 环境变量的值,如果未设置,则默认为 编译时指定的端口,通常为 5432。

所以我猜端口会5432(你可能只使用 PGPORT 作为你的变量(。

同样在 travis 的其他地方,它说本地主机将绑定到其他数据库(例如 mongo(的127.0.0.1,所以我也对此进行了猜测。

特拉维斯文档告诉我们用户为postgres,密码为空。

我使用整个字符串进行连接,当您将其拆分时,因此我将整个连接字符串设置为(您可以提取每个组件(:

postgres://postgres@127.0.0.1:5432/testing_db

我在特拉维斯仪表板设置上执行此操作。

令人惊讶的是,所有这些都有效:tada:

希望这有帮助。

根据文档,您可以使用这样的before_script创建数据库

before_script:
- psql -c "CREATE DATABASE testing_db;" -U postgres

然后,您可以将数据库凭据(以及数据库名称和端口等(添加到 travis 环境变量中,如下所示

travis encrypt DB_USER=TEST_DB_USER --add env.matrix

您可以在此处找到有关 travis 环境变量的更多信息。您还可以在存储库设置下的 travis 仪表板上添加环境变量。

相关内容

最新更新