You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在GitLab CI中启动配置超时的PostgreSQL服务

如何在GitLab CI中配置PostgreSQL的lock_timeout参数

背景

我正在测试并发行为,需要验证长耗时计算场景下的代码,因此需配置PostgreSQL的超时参数。本地已经通过docker-compose完成了相关配置,对应的测试用例也已通过,但不清楚如何在GitLab CI配置文件中实现相同设置。

本地docker-compose配置

services:
  postgres:
    image: postgres:14.8
    command: [ "postgres", "-c", "log_statement=all", "-c", "log_destination=stderr", "-c", "lock_timeout=3s" ]
    ports:
      - "5432:5432"

验证测试用例(已通过)

@SpringBootTest(classes = PostgreSQLConfigurationTest.GenericConfiguration.class)
public class PostgreSQLConfigurationTest {

    @Autowired
    private JdbcTemplate jdbcTemplate;

    @Test
    void shouldLockTimeoutSetTo3s() {
        String sql = "SHOW lock_timeout";
        String lockTimeout = jdbcTemplate.queryForObject(sql, String.class);

        assertEquals("3s", lockTimeout, "lock_timeout attendu valant " + lockTimeout);
    }

    @SpringBootApplication
    public static class GenericConfiguration {
    }
}

当前GitLab CI配置

check:
  services:
    - name: postgres:14.3
      alias: postgresql

解决方案

在GitLab CI的PostgreSQL服务配置中,通过command字段添加和本地docker-compose相同的启动参数即可,修改后的配置如下:

check:
  services:
    - name: postgres:14.3
      alias: postgresql
      command: [ "postgres", "-c", "log_statement=all", "-c", "log_destination=stderr", "-c", "lock_timeout=3s" ]

配置完成后,GitLab CI环境中的PostgreSQL服务会和本地保持一致的参数设置,你的测试用例也能正常验证lock_timeout是否生效。

内容的提问来源于stack exchange,提问作者Benjamin Jalon

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.02 05:42:06