Skip to content
Gürkan İndibay edited this page Sep 7, 2021 · 29 revisions

Packaging process consists of several steps

  1. Updates version information in packaging files and opens a PR to be reviewed: At this step, packaging configuration files packaging type specific files (i.e. deb and rpm) are updated with the new version information

    Files and the changes performed in the files are as below

    • Packaging configuration files
      • pkgvars: Version information is changed in this file.
    • Packaging type specific files
      • citus.spec: Version information in Version, Source0 is changed and a new changelog entry is added into changelog field
      • debian/changelog: New changelog entries are added at the top of the file To execute and complete this step following pipeline should be executed with appropriate parameters

    Pipeline to be executed is as below

    https://github.com/citusdata/packaging/actions/workflows/update_package_properties.yml

    When pipeline is opened, you can see the "Run Workflow" button at the top left of the executions list as below

    First branch should be chosen for the parameters to appear

    image

    Available branches and their corresponding project to be chosen as below

    Application Branch
    citus all-citus
    citus-enterprise all-enterprise
    pg-auto-failover all-pgautofailover
    pg-auto-failover-enterprise all-pgautofailover-enterprise
  2. Build and publish packages into packagecloud repo This is an automatically triggered pipeline when the pipeline in the first step is executed. This pipeline is executed twice. Once PR is opened and once PR is reviewed and merged. Before merge, only packages are built but they aren't pushed. After PR close so merge operation, packages is built again bu this time they are pushed.

  3. Build and publish packages into Microsoft Packages This step is only available for enterprise applications(i.e. citus-enterprise and pg-auto-failover-enterprise). The pipeline and the packaging code for this step are both hosted on Azure Devops. Since there is no connection with our main repository,i.e GitHub, we need to trigger this pipeline manually. Sources are stored in the below Azure Devops Repo

https://msdata.visualstudio.com/Database%20Systems/_git/citus-packaging

There are two branches that stores our packaging codes

  1. 'all-enterprise': Stores citus-enterprise packaging codes
  2. 'all-pg-auto-failover-enterprise': Stores all-pg-auto-failover-enterprise codes There is one more branch in this repository 'repoclient' , which stores Microsoft Packages client, ehich enables us pushing and listing packages and listing repositories Pipeline address is as below https://msdata.visualstudio.com/Database%20Systems/_build?definitionId=10018&_a=summary

This pipeline is automatically executed when code is pushed into 'all-enterprise' and 'all-pg-auto-failover-enterprise'. If succeeefully completed, packages will be pushed into Microsoft

  1. Update version information for docker images Docker image files include citus version information to define the citus version to be downloaded. A docker file exists for each postgres version. This step automatically updates the citus version information in these docker files. There are four docker files that is used to publish images and one docker-compose file to create a multi-node citus stack .However, first four are only updated. There is no need to update the nightly since it is getting the latest citus.

https://github.com/citusdata/docker/actions/workflows/update_version.yml

image

  1. Build and publish docker images
  2. Update version information for pgxn
  3. Create an issue for pgdg repositories

Some steps is not executed for some applications. Steps to be applied accord,ng to the applications

Application Applied steps
citus 1,2,4,5,6,7
citus-enterprise 1,2,3
pg-auto-failover 1,2
pg-auto-failover-enterprise 1,2,3
Clone this wiki locally