Travis-CI上的PostgreSQL 12需要5分钟才能启动?

时间:2020-05-11 16:19:18

标签: postgresql travis-ci

在Travis-CI论坛中通读this post后,我设法设置了PostgreSQL12。我的配置或多或少像这样(full .travis.yml):

language: java
dist: bionic

[...]

services:
  - postgresql

addons:
  postgresql: '12'
  apt:
    packages:
      - postgresql-12
      - postgresql-client-12

before_install:
  - sudo pg_dropcluster --stop 12 main
  - sudo pg_upgradecluster 11 main
  - sudo pg_ctlcluster 12 main restart
  - sudo pg_dropcluster 11 main

env:
  global:
    - PGUSER=postgres
    - PGPORT=5432

[...]

但是(在论坛中也注意到了) PostgreSQL需要5分钟才能启动。对于快速CI / CD来说,这确实是一个痛苦。 Here是一个构建示例。

有人有经验吗? 可悲的是,根本没有日志输出。这些脚本可以在任何地方公开吗?

3 个答案:

答案 0 :(得分:2)

我终于设法解决了。我几乎从安装的默认PostgreSQL版本复制了配置。然后sed,然后重新启动服务器。 here是提交,在.travis-ci.yaml中看起来像这样:

addons:
  apt:
    packages:
      - postgresql-12
      - postgresql-client-12

before_install:
  - sudo sed -i 's/port = 5433/port = 5432/' /etc/postgresql/12/main/postgresql.conf
  - sudo cp /etc/postgresql/{9.3,12}/main/pg_hba.conf
  - sudo pg_ctlcluster 12 main restart

构建时间从大约11分钟减少到大约3分钟。

是的,我在v10之前已经做过一次。但是直到现在,我都还不记得它。但是,如果您想知道,this是PostgreSQL v10的.travis-ci.yml

答案 1 :(得分:1)

tl; dr只需删除PostgreSQL服务。

所以删除它:

services:
  - postgresql

并删除Travis社区中该帖子中的其余内容。

我不确定该问题是如何产生的,但是您可以在此处获取解决方法:https://travis-ci.org/github/psycopg/psycopg3/jobs/685827089

只需按View config,您就能在3秒钟内看到PostgreSQL 12的设置。但是,如果您很懒:

    - python: 3.8
      addons:
        postgresql: '12'
        apt:
          packages:
            - postgresql-12
            - postgresql-client-12
      env:
        - TOXENV=py38
        - PGVER=12
        - PSYCOPG3_IMPL=c
        - PGPORT=5433

我也关注了该支持文章。我不知道为什么它挂了5分钟。我查看了Travis CI构建存储库,但是执行的唯一命令是sudo systemctl postgresql start

答案 2 :(得分:0)

在Postgres 12+中使用dist: focal似乎可以消除5分钟的延迟。这是一个用于快速启动Postgres 9.6-13的示例配置。

jobs:
  include:
    - name: "Postgres 13"
      dist: focal
      addons:
        postgresql: "13"
        apt:
          sources:
            - sourceline: deb http://apt.postgresql.org/pub/repos/apt/ focal-pgdg main 13
              key_url: https://www.postgresql.org/media/keys/ACCC4CF8.asc
          packages:
            - postgresql-13
    - name: "Postgres 12"
      dist: focal
      addons:
        postgresql: "12"
        apt:
          packages:
            - postgresql-12
      env:
        - PGPORT=5433
    - name: "Postgres 11"
      dist: bionic
      addons:
        postgresql: "11"
    - name: "Postgres 10"
      dist: bionic
      addons:
        postgresql: "10"
    - name: "Postgres 9.6"
      dist: bionic
      addons:
        postgresql: "9.6"