Add support for router INSERT .. SELECT commands #3844
Workflow file for this run
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
name: Build tests in packaging images | |
on: | |
pull_request: | |
types: [opened, reopened,synchronize] | |
workflow_dispatch: | |
jobs: | |
get_postgres_versions_from_file: | |
runs-on: ubuntu-latest | |
outputs: | |
pg_versions: ${{ steps.get-postgres-versions.outputs.pg_versions }} | |
steps: | |
- name: Checkout | |
uses: actions/checkout@v3 | |
with: | |
fetch-depth: 2 | |
- name: Get Postgres Versions | |
id: get-postgres-versions | |
run: | | |
# Postgres versions are stored in .circleci/config.yml file in "build-[pg-version] format. Below command | |
# extracts the versions and get the unique values. | |
pg_versions=`grep -Eo 'build-[[:digit:]]{2}' .circleci/config.yml|sed -e "s/^build-//"|sort|uniq|tr '\n' ','| head -c -1` | |
pg_versions_array="[ ${pg_versions} ]" | |
echo "Supported PG Versions: ${pg_versions_array}" | |
# Below line is needed to set the output variable to be used in the next job | |
echo "pg_versions=${pg_versions_array}" >> $GITHUB_OUTPUT | |
rpm_build_tests: | |
name: rpm_build_tests | |
needs: get_postgres_versions_from_file | |
runs-on: ubuntu-latest | |
strategy: | |
fail-fast: false | |
matrix: | |
# While we use separate images for different Postgres versions in rpm | |
# based distros | |
# For this reason, we need to use a "matrix" to generate names of | |
# rpm images, e.g. citus/packaging:centos-7-pg12 | |
packaging_docker_image: | |
- oraclelinux-7 | |
- oraclelinux-8 | |
- centos-7 | |
- almalinux-8 | |
- almalinux-9 | |
POSTGRES_VERSION: ${{ fromJson(needs.get_postgres_versions_from_file.outputs.pg_versions) }} | |
container: | |
image: citus/packaging:${{ matrix.packaging_docker_image }}-pg${{ matrix.POSTGRES_VERSION }} | |
options: --user root | |
steps: | |
- name: Checkout repository | |
uses: actions/checkout@v3 | |
- name: Set Postgres and python parameters for rpm based distros | |
run: | | |
echo "/usr/pgsql-${{ matrix.POSTGRES_VERSION }}/bin" >> $GITHUB_PATH | |
echo "/root/.pyenv/bin:$PATH" >> $GITHUB_PATH | |
echo "PACKAGING_PYTHON_VERSION=3.8.16" >> $GITHUB_ENV | |
- name: Configure | |
run: | | |
echo "Current Shell:$0" | |
echo "GCC Version: $(gcc --version)" | |
./configure 2>&1 | tee output.log | |
- name: Make clean | |
run: | | |
make clean | |
- name: Make | |
run: | | |
git config --global --add safe.directory ${GITHUB_WORKSPACE} | |
make CFLAGS="-Wno-missing-braces" -sj$(cat /proc/cpuinfo | grep "core id" | wc -l) 2>&1 | tee -a output.log | |
# Check the exit code of the make command | |
make_exit_code=${PIPESTATUS[0]} | |
# If the make command returned a non-zero exit code, exit with the same code | |
if [[ $make_exit_code -ne 0 ]]; then | |
echo "make command failed with exit code $make_exit_code" | |
exit $make_exit_code | |
fi | |
- name: Make install | |
run: | | |
make CFLAGS="-Wno-missing-braces" install 2>&1 | tee -a output.log | |
- name: Validate output | |
env: | |
POSTGRES_VERSION: ${{ matrix.POSTGRES_VERSION }} | |
PACKAGING_DOCKER_IMAGE: ${{ matrix.packaging_docker_image }} | |
run: | | |
echo "Postgres version: ${POSTGRES_VERSION}" | |
## Install required packages to execute packaging tools for rpm based distros | |
yum install python3-pip python3-devel postgresql-devel -y | |
python3 -m pip install wheel | |
./.github/packaging/validate_build_output.sh "rpm" | |
deb_build_tests: | |
name: deb_build_tests | |
needs: get_postgres_versions_from_file | |
runs-on: ubuntu-latest | |
strategy: | |
fail-fast: false | |
matrix: | |
# On deb based distros, we use the same docker image for | |
# builds based on different Postgres versions because deb | |
# based images include all postgres installations. | |
# For this reason, we have multiple runs --which is 3 today-- | |
# for each deb based image and we use POSTGRES_VERSION to set | |
# PG_CONFIG variable in each of those runs. | |
packaging_docker_image: | |
- debian-buster-all | |
- debian-bookworm-all | |
- debian-bullseye-all | |
- ubuntu-bionic-all | |
- ubuntu-focal-all | |
- ubuntu-jammy-all | |
- ubuntu-kinetic-all | |
POSTGRES_VERSION: ${{ fromJson(needs.get_postgres_versions_from_file.outputs.pg_versions) }} | |
container: | |
image: citus/packaging:${{ matrix.packaging_docker_image }} | |
options: --user root | |
steps: | |
- name: Checkout repository | |
uses: actions/checkout@v3 | |
- name: Set pg_config path and python parameters for deb based distros | |
run: | | |
echo "PG_CONFIG=/usr/lib/postgresql/${{ matrix.POSTGRES_VERSION }}/bin/pg_config" >> $GITHUB_ENV | |
echo "/root/.pyenv/bin:$PATH" >> $GITHUB_PATH | |
echo "PACKAGING_PYTHON_VERSION=3.8.16" >> $GITHUB_ENV | |
- name: Configure | |
run: | | |
echo "Current Shell:$0" | |
echo "GCC Version: $(gcc --version)" | |
./configure 2>&1 | tee output.log | |
- name: Make clean | |
run: | | |
make clean | |
- name: Make | |
shell: bash | |
run: | | |
set -e | |
git config --global --add safe.directory ${GITHUB_WORKSPACE} | |
make -sj$(cat /proc/cpuinfo | grep "core id" | wc -l) 2>&1 | tee -a output.log | |
# Check the exit code of the make command | |
make_exit_code=${PIPESTATUS[0]} | |
# If the make command returned a non-zero exit code, exit with the same code | |
if [[ $make_exit_code -ne 0 ]]; then | |
echo "make command failed with exit code $make_exit_code" | |
exit $make_exit_code | |
fi | |
- name: Make install | |
run: | | |
make install 2>&1 | tee -a output.log | |
- name: Validate output | |
env: | |
POSTGRES_VERSION: ${{ matrix.POSTGRES_VERSION }} | |
PACKAGING_DOCKER_IMAGE: ${{ matrix.packaging_docker_image }} | |
run: | | |
echo "Postgres version: ${POSTGRES_VERSION}" | |
apt-get update -y | |
## Install required packages to execute packaging tools for deb based distros | |
apt-get install python3-dev python3-pip -y | |
apt-get purge -y python3-yaml | |
./.github/packaging/validate_build_output.sh "deb" |