@@ -14,66 +14,68 @@ jobs:
1414steps :
1515
1616# Set major PostgreSQL version for all underlying steps
17- -name :" Extract Postgres major version number"
17+ -uses :actions/checkout@v3
18+ -name :" Define PostreSQL major version"
1819run :|
19- PG_MAJOR_VERSION=$(echo "$BRANCH_NAME" | grep --only-matching 'stable[0-9].' | grep --only-matching '[0-9].')
20+ patch_name=$(ls aqo_*.patch|tail -1)
21+ echo "CORE_PATCH_NAME=$patch_name" >> $GITHUB_ENV
2022
21- # Declare PG_MAJOR_VERSION as a environment variable
22- echo "PG_MAJOR_VERSION=$PG_MAJOR_VERSION" >> $GITHUB_ENV
23- echo "CORE_BRANCH_NAME=REL_${PG_MAJOR_VERSION}_STABLE" >> $GITHUB_ENV
24- echo "AQO_PATCH_NAME=aqo_pg$PG_MAJOR_VERSION.patch" >> $GITHUB_ENV
25- -name :" Set proper names for the master case"
23+ # we can get number, otherwise set up master
24+ vers_number=$(echo "$patch_name"|tr -d -c 0-9)
25+ echo "PG_MAJOR_VERSION=$vers_number" >> $GITHUB_ENV
26+
27+ branch_name="REL_${vers_number}_STABLE"
28+ echo "PG_BRANCH=$branch_name" >> $GITHUB_ENV
29+
30+ -name :" Set master branch name, if needed"
2631if :env.PG_MAJOR_VERSION == ''
2732run :|
28- echo "PG_MAJOR_VERSION=master" >> $GITHUB_ENV
29- echo "CORE_BRANCH_NAME=master" >> $GITHUB_ENV
30- echo "AQO_PATCH_NAME=aqo_master.patch" >> $GITHUB_ENV
33+ branch_name="master"
34+ echo "PG_BRANCH=$branch_name" >> $GITHUB_ENV
3135
32- -name :" Preparations"
36+ -name :" Environment (debug output)"
37+ if :${{ always() }}
3338run :|
34- sudo apt install libipc-run-perl libxml2-utils libxml2-dev xsltproc libxslt1-dev
35-
36- echo "Deploying to production server on branch" $BRANCH_NAME
39+ echo "Use PostgreSQL branch $PG_BRANCH (patch: $CORE_PATCH_NAME)"
40+ echo "Deploying to production server on branch" $BRANCH_NAME "(PG $PG_BRANCH)"
3741 git config --global user.email "ci@postgrespro.ru"
3842 git config --global user.name "CI PgPro admin"
39- git clone https://github.com/postgres/postgres.git pg
40- cd pg
41- git checkout $CORE_BRANCH_NAME
42- git clone https://github.com/postgrespro/aqo.git contrib/aqo
43- git -C contrib/aqo checkout $BRANCH_NAME
44- patch -p1 --no-backup-if-mismatch < contrib/aqo/$AQO_PATCH_NAME
45- COPT="-Werror"
46- CONFIGURE_OPTS="--prefix=`pwd`/tmp_install --enable-tap-tests --enable-cassert"
47- echo "CONFIGURE_OPTS=$CONFIGURE_OPTS" >> $GITHUB_ENV
48- echo "COPT=$COPT" >> $GITHUB_ENV
43+
44+ -name :" Prepare PG directory"
45+ run :|
46+ sudo apt install libipc-run-perl libxml2-utils libxml2-dev xsltproc libxslt1-dev
47+ git clone -b $PG_BRANCH --depth=1 --single-branch https://github.com/postgres/postgres.git $GITHUB_WORKSPACE/../pg
48+ cd $GITHUB_WORKSPACE/../pg
49+ cp -r ../aqo contrib/aqo
50+ patch -p1 --no-backup-if-mismatch < contrib/aqo/$CORE_PATCH_NAME
4951
5052 -name :" Paths"
5153run :|
52- echo "$GITHUB_WORKSPACE/pg/contrib/aqo/.github/scripts/job" >> $GITHUB_PATH
53- ls -la pg/contrib/aqo/.github/scripts/job
54- echo "$GITHUB_WORKSPACE/pg/tmp_install/bin" >> $GITHUB_PATH
54+ cd $GITHUB_WORKSPACE/../pg
55+ echo "COPT=-Werror" >> $GITHUB_ENV
56+ echo "CONFIGURE_OPTS=--prefix=`pwd`/tmp_install --enable-tap-tests --enable-cassert" >> $GITHUB_ENV
57+ echo "$GITHUB_WORKSPACE/../pg/tmp_install/bin" >> $GITHUB_PATH
58+ echo "$GITHUB_WORKSPACE/../pg/contrib/aqo/.github/scripts/job" >> $GITHUB_PATH
5559 echo "LD_LIBRARY_PATH=$GITHUB_WORKSPACE/pg/tmp_install/lib" >> $GITHUB_ENV
5660 echo "PGDATABASE=`whoami`" >> $GITHUB_ENV
5761 echo "PGHOST=localhost" >> $GITHUB_ENV
5862 echo "PGDATA=PGDATA" >> $GITHUB_ENV
5963 echo "PGUSER=`whoami`" >> $GITHUB_ENV
6064 echo "PGPORT=5432" >> $GITHUB_ENV
6165
62- -name :" Debug"
63- run :|
64- echo "paths: $PATH"
65- echo "PG_MAJOR_VERSION: $PG_MAJOR_VERSION, CORE_BRANCH_NAME: $CORE_BRANCH_NAME, AQO_PATCH_NAME: $AQO_PATCH_NAME, CONFIGURE_OPTS: $CONFIGURE_OPTS"
66-
6766 -name :" Compilation"
6867run :|
69- cd pg
70- ./configure $CONFIGURE_OPTS CFLAGS="-O2"
68+ cd $GITHUB_WORKSPACE/../pg
69+ echo "paths: $PATH"
70+ echo "COPT: $COPT"
71+ echo "CONFIGURE_OPTS: $CONFIGURE_OPTS"
72+ ./configure $CONFIGURE_OPTS CFLAGS="-O2" > /dev/null
7173 make -j4 > /dev/null && make -j4 -C contrib > /dev/null
7274 make install >> make.log && make -C contrib install > /dev/null
7375
7476 -name :" Launch AQO instance"
7577run :|
76- cd pg
78+ cd$GITHUB_WORKSPACE/../ pg
7779
7880 # Launch an instance with AQO extension
7981 aqo_instance_launch.sh
@@ -84,29 +86,29 @@ jobs:
8486# Pass installcheck in disabled mode
8587 -name :installcheck_disabled
8688run :|
87- cd pg
89+ cd$GITHUB_WORKSPACE/../ pg
8890 psql -c "ALTER SYSTEM SET aqo.force_collect_stat = 'off'"
8991 psql -c "SELECT pg_reload_conf()"
9092 make installcheck-world
9193
9294 -name :installcheck_disabled_forced_stat
9395run :|
94- cd pg
96+ cd$GITHUB_WORKSPACE/../ pg
9597 psql -c "ALTER SYSTEM SET aqo.force_collect_stat = 'on'"
9698 psql -c "SELECT pg_reload_conf()"
9799 make installcheck-world
98100
99101 -name :installcheck_frozen
100102run :|
101- cd pg
103+ cd$GITHUB_WORKSPACE/../ pg
102104 psql -c "ALTER SYSTEM SET aqo.mode = 'frozen'"
103105 psql -c "ALTER SYSTEM SET aqo.force_collect_stat = 'on'"
104106 psql -c "SELECT pg_reload_conf()"
105107 make installcheck-world
106108
107109 -name :installcheck_controlled
108110run :|
109- cd pg
111+ cd$GITHUB_WORKSPACE/../ pg
110112 psql -c "ALTER SYSTEM SET aqo.mode = 'controlled'"
111113 psql -c "ALTER SYSTEM SET aqo.force_collect_stat = 'on'"
112114 psql -c "SELECT pg_reload_conf()"
@@ -115,7 +117,7 @@ jobs:
115117 -name :installcheck_learn
116118continue-on-error :true
117119run :|
118- cd pg
120+ cd$GITHUB_WORKSPACE/../ pg
119121 psql -c "ALTER SYSTEM SET aqo.mode = 'learn'"
120122 psql -c "ALTER SYSTEM SET aqo.force_collect_stat = 'on'"
121123 psql -c "SELECT pg_reload_conf()"
@@ -124,7 +126,7 @@ jobs:
124126 -name :installcheck_intelligent
125127continue-on-error :true
126128run :|
127- cd pg
129+ cd$GITHUB_WORKSPACE/../ pg
128130 psql -c "ALTER SYSTEM SET aqo.mode = 'intelligent'"
129131 psql -c "ALTER SYSTEM SET aqo.force_collect_stat = 'on'"
130132 psql -c "SELECT pg_reload_conf()"
@@ -133,18 +135,18 @@ jobs:
133135 -name :installcheck_forced
134136continue-on-error :true
135137run :|
136- cd pg
138+ cd$GITHUB_WORKSPACE/../ pg
137139 psql -c "ALTER SYSTEM SET aqo.mode = 'forced'"
138140 psql -c "ALTER SYSTEM SET aqo.force_collect_stat = 'on'"
139141 psql -c "SELECT pg_reload_conf()"
140142 make -k installcheck-world
141143
142144# Save Artifacts
143145 -name :Archive artifacts
144- if :${{failure () }}
146+ if :${{always () }}
145147uses :actions/upload-artifact@v3
146148with :
147- name :${{ env.AQO_VERSION }}-${{ env.CORE_BRANCH_NAME }}-${{ env.BRANCH_NAME }}-artifacts
149+ name :${{ env.AQO_VERSION }}-${{ env.PG_BRANCH }}-${{ env.CORE_PATCH_NAME }}-artifacts
148150path :|
149151 pg/src/test/regress/regression.diffs
150152 pg/logfile.log