From: | Andres Freund <andres(at)anarazel(dot)de> |
---|---|
To: | "Newhouse, Robin" <robinnew(at)amazon(dot)com> |
Cc: | "pgsql-hackers(at)lists(dot)postgresql(dot)org" <pgsql-hackers(at)lists(dot)postgresql(dot)org>, "Kekalainen, Otto" <ottoke(at)amazon(dot)com> |
Subject: | Re: [PATCH] Add GitLab CI to PostgreSQL |
Date: | 2023-07-06 19:01:15 |
Message-ID: | 20230706190115.qtyiatbkjqc4mmav@awork3.anarazel.de |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-hackers |
Hi,
On 2023-07-04 23:44:45 +0000, Newhouse, Robin wrote:
> I propose the attached patch to be applied on the 'master' branch
> of PostgreSQL to add GitLab CI automation alongside Cirrus CI in the PostgreSQL repository.
>
> It is not intended to be a replacement for Cirrus CI, but simply suggestion for the
> PostgreSQL project to host centrally a Gitlab CI definition for those who prefer to use
> it while developing/testing PostgreSQL.
One way to avoid duplicated CI definition could be to use for gitlab-ci to use
cirrus-cli to run the cirrus CI tests within gitlab ci.
Realistically I think adding a separate CI definition would entail committers
needing to run that CI at least occasionally. If we make the different CI envs
more similar, that becomes less of a necessity.
> +default:
> + # Base image for builds and tests unless otherwise defined
> + image: fedora:latest
> + # Extend build jobs to have longer timeout as the default GitLab
> + # timeout (1h) is often not enough
> + timeout: 3h
IMO we shouldn't add CI that doesn't complete within well under an hour, it's
too expensive workflow wise.
> +fedora:
> + stage: build
> + variables:
> + GIT_STRATEGY: fetch
> + GIT_SUBMODULE_STRATEGY: normal
> + script:
> + # Install dependencies
> + - yum install -y yum-utils perl
> + - yum-builddep -y postgresql
> + - *build-postgres-def
My experience is that installing dependencies on each run is way too slow to
be practical. I also found that it often causes temporary failures due to
network issues etc. For cirrus-ci we create VM and docker images on a regular
schedule (three times a week right now) - if there's interest in building
fedora containers that'd be easy.
I'd be open to switching one of the cirrus-CI tasks over to fedora, fwiw.
> +# From https://github.com/postgres/postgres/blob/master/.cirrus.yml
> +.create-user: &create-user-def
> + - useradd -m postgres
> + - chown -R postgres:postgres .
> + - mkdir -p ${CCACHE_DIR}
> + - chown -R postgres:postgres ${CCACHE_DIR}
> + - echo '* - memlock 134217728' > /etc/security/limits.d/postgres.conf
> + - su postgres -c "ulimit -l -H && ulimit -l -S"
> + # Can't change container's kernel.core_pattern. Postgres user can't write
> + # to / normally. Change that.
> + - chown root:postgres /
> + - chmod g+rwx /
If we need duplicated stanzas like this, we should instead move them out into
scripts that we can use from different CI environments.
> +# Similar to https://github.com/postgres/postgres/blob/master/.cirrus.yml
> +fedora meson:
> + stage: build
> + variables:
> + GIT_STRATEGY: fetch
> + GIT_SUBMODULE_STRATEGY: normal
> + script:
> + # Meson system only exists on master branch currently
Master and 16 now...
> + - if [ ! -f meson.build ]; then exit 0; fi
> + # Install dependencies
> + - yum install -y yum-utils perl perl-IPC-Run meson ninja-build
> + - yum-builddep -y postgresql
> + # Create postgres user
> + - *create-user-def
> + # Configure
> + - su postgres -c 'meson setup --buildtype=debug --auto-features=disabled -Dtap_tests=enabled build'
> + # Build
> + - su postgres -c 'ninja -C build -j 2'
> + # Minimal test
> + - su postgres -c 'meson test $MTEST_ARGS --num-processes 2 tmp_install cube/regress pg_ctl/001_start_stop'
> + # Run all tests
> + - su postgres -c 'meson test $MTEST_ARGS --num-processes 2'
> + artifacts:
> + when: always # Must be able to see logs
> + paths:
> + - build/meson-logs/testlog.txt
FWIW, that's not enough to be able to debug problems. You really also need the
log files created by failing tests.
Greetings,
Andres Freund
From | Date | Subject | |
---|---|---|---|
Next Message | Gurjeet Singh | 2023-07-06 19:06:20 | Re: Avoid unncessary always true test (src/backend/storage/buffer/bufmgr.c) |
Previous Message | Dmitry Koval | 2023-07-06 18:43:23 | Re: Add SPLIT PARTITION/MERGE PARTITIONS commands |