1
1
name : " InstallChecks"
2
2
3
- on :
4
- push :
5
-
6
3
env :
4
+ # Use it just for a report
7
5
BRANCH_NAME : ${{ github.head_ref || github.ref_name }}
8
6
7
+ # Trigger it each timeon push or pull request. Honestly, it will be redundant
8
+ # most of the time, but external pull-request checks don't be missed out.
9
+ on :
10
+ push :
11
+ pull_request :
12
+
9
13
jobs :
10
14
build :
11
15
12
16
runs-on : ubuntu-latest
13
17
14
18
steps :
15
-
16
- # Set major PostgreSQL version for all underlying steps
17
- - name : " Extract Postgres major version number"
19
+ - uses : actions/checkout@v3
20
+ - name : " Define PostreSQL major version and set basic environment"
18
21
run : |
19
- PG_MAJOR_VERSION=$(echo "$BRANCH_NAME" | grep --only-matching 'stable[0-9].' | grep --only-matching '[0-9].')
22
+ echo "The action workflow is triggered by the $BRANCH_NAME"
23
+ sudo apt install libipc-run-perl
24
+ git config --global user.email "[email protected] "
25
+ git config --global user.name "CI PgPro admin"
26
+
27
+ patch_name=$(ls aqo_*.patch|tail -1)
28
+ echo "CORE_PATCH_NAME=$patch_name" >> $GITHUB_ENV
29
+
30
+ # we can get number, otherwise set up master
31
+ vers_number=$(echo "$patch_name"|tr -d -c 0-9)
32
+ echo "PG_MAJOR_VERSION=$vers_number" >> $GITHUB_ENV
20
33
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"
34
+ branch_name="REL_${vers_number}_STABLE"
35
+ echo "PG_BRANCH=$branch_name" >> $GITHUB_ENV
36
+ - name : " Set master branch name, if needed"
26
37
if : env.PG_MAJOR_VERSION == ''
27
38
run : |
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
39
+ branch_name="master"
40
+ echo "PG_BRANCH=$branch_name" >> $GITHUB_ENV
31
41
32
- - name : " Preparations"
42
+ # Create workspace directory and environment variable.
43
+ # It is the second step because on the first we define versions and branches
44
+ - name : " Initial dir"
33
45
run : |
34
- sudo apt install libipc-run-perl libxml2-utils libxml2-dev xsltproc libxslt1-dev
46
+ git clone -b $PG_BRANCH --depth=1 --single-branch https://github.com/postgres/postgres.git $GITHUB_WORKSPACE/../pg
35
47
36
- echo "Deploying to production server on branch" $BRANCH_NAME
37
- git config --global user.email "[email protected] "
38
- 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
49
-
50
- - name : " Paths"
48
+ # Invent variable with full path to PG directory just because github
49
+ # actions don't like relative paths ...
50
+ cd $GITHUB_WORKSPACE/../pg
51
+ echo PG_DIR=`pwd` >> $GITHUB_ENV
52
+
53
+ - name : " Prepare PG directory"
51
54
run : |
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
55
- echo "LD_LIBRARY_PATH=$GITHUB_WORKSPACE/pg/tmp_install/lib" >> $GITHUB_ENV
56
- echo "PGDATABASE=`whoami`" >> $GITHUB_ENV
57
- echo "PGHOST=localhost" >> $GITHUB_ENV
58
- echo "PGDATA=PGDATA" >> $GITHUB_ENV
59
- echo "PGUSER=`whoami`" >> $GITHUB_ENV
60
- echo "PGPORT=5432" >> $GITHUB_ENV
61
-
62
- - name : " Debug"
55
+ cd $PG_DIR
56
+ cp -r ../aqo contrib/aqo
57
+ patch -p1 --no-backup-if-mismatch < contrib/aqo/$CORE_PATCH_NAME
58
+ echo "COPT=-Werror" >> $GITHUB_ENV
59
+ echo "CONFIGURE_OPTS=--prefix=`pwd`/tmp_install --enable-tap-tests --enable-cassert" >> $GITHUB_ENV
60
+
61
+ # Instance-related environment
62
+ echo "$PG_DIR/tmp_install/bin" >> $GITHUB_PATH
63
+ echo "LD_LIBRARY_PATH=$PG_DIR/tmp_install/lib" >> $GITHUB_ENV
64
+ echo `pwd`/contrib/aqo/.github/scripts/job >> $GITHUB_PATH
65
+
66
+ # Just for debug
67
+ - name : " Environment (debug output)"
68
+ if : ${{ always() }}
63
69
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"
70
+ echo "PG_MAJOR_VERSION: $PG_MAJOR_VERSION"
71
+ echo "PG_DIR: $PG_DIR"
72
+ echo "PG_BRANCH: $PG_BRANCH"
73
+ echo "CORE_PATCH_NAME: $CORE_PATCH_NAME"
74
+ # See these paths to understand correctness of the instance initialization
75
+ echo "PATHs: $PATH"
76
+ echo "PG Libs: $LD_LIBRARY_PATH"
66
77
67
78
- name : " Compilation"
68
79
run : |
69
- cd pg
70
- ./configure $CONFIGURE_OPTS CFLAGS="-O2"
80
+ cd $PG_DIR
81
+ echo "COPT: $COPT"
82
+ echo "CONFIGURE_OPTS: $CONFIGURE_OPTS"
83
+ ./configure $CONFIGURE_OPTS CFLAGS="-O2" > /dev/null
71
84
make -j4 > /dev/null && make -j4 -C contrib > /dev/null
72
85
make install >> make.log && make -C contrib install > /dev/null
73
86
74
87
- name : " Launch AQO instance"
75
88
run : |
76
- cd pg
89
+ cd $PG_DIR
77
90
78
91
# Launch an instance with AQO extension
79
92
aqo_instance_launch.sh
@@ -84,29 +97,29 @@ jobs:
84
97
# Pass installcheck in disabled mode
85
98
- name : installcheck_disabled
86
99
run : |
87
- cd pg
100
+ cd $PG_DIR
88
101
psql -c "ALTER SYSTEM SET aqo.force_collect_stat = 'off'"
89
102
psql -c "SELECT pg_reload_conf()"
90
103
make installcheck-world
91
104
92
105
- name : installcheck_disabled_forced_stat
93
106
run : |
94
- cd pg
107
+ cd $PG_DIR
95
108
psql -c "ALTER SYSTEM SET aqo.force_collect_stat = 'on'"
96
109
psql -c "SELECT pg_reload_conf()"
97
110
make installcheck-world
98
111
99
112
- name : installcheck_frozen
100
113
run : |
101
- cd pg
114
+ cd $PG_DIR
102
115
psql -c "ALTER SYSTEM SET aqo.mode = 'frozen'"
103
116
psql -c "ALTER SYSTEM SET aqo.force_collect_stat = 'on'"
104
117
psql -c "SELECT pg_reload_conf()"
105
118
make installcheck-world
106
119
107
120
- name : installcheck_controlled
108
121
run : |
109
- cd pg
122
+ cd $PG_DIR
110
123
psql -c "ALTER SYSTEM SET aqo.mode = 'controlled'"
111
124
psql -c "ALTER SYSTEM SET aqo.force_collect_stat = 'on'"
112
125
psql -c "SELECT pg_reload_conf()"
@@ -115,7 +128,7 @@ jobs:
115
128
- name : installcheck_learn
116
129
continue-on-error : true
117
130
run : |
118
- cd pg
131
+ cd $PG_DIR
119
132
psql -c "ALTER SYSTEM SET aqo.mode = 'learn'"
120
133
psql -c "ALTER SYSTEM SET aqo.force_collect_stat = 'on'"
121
134
psql -c "SELECT pg_reload_conf()"
@@ -124,7 +137,7 @@ jobs:
124
137
- name : installcheck_intelligent
125
138
continue-on-error : true
126
139
run : |
127
- cd pg
140
+ cd $PG_DIR
128
141
psql -c "ALTER SYSTEM SET aqo.mode = 'intelligent'"
129
142
psql -c "ALTER SYSTEM SET aqo.force_collect_stat = 'on'"
130
143
psql -c "SELECT pg_reload_conf()"
@@ -133,7 +146,7 @@ jobs:
133
146
- name : installcheck_forced
134
147
continue-on-error : true
135
148
run : |
136
- cd pg
149
+ cd $PG_DIR
137
150
psql -c "ALTER SYSTEM SET aqo.mode = 'forced'"
138
151
psql -c "ALTER SYSTEM SET aqo.force_collect_stat = 'on'"
139
152
psql -c "SELECT pg_reload_conf()"
@@ -146,8 +159,8 @@ jobs:
146
159
with :
147
160
name : ${{ env.AQO_VERSION }}-${{ env.CORE_BRANCH_NAME }}-${{ env.BRANCH_NAME }}-artifacts
148
161
path : |
149
- pg /src/test/regress/regression.diffs
150
- pg /logfile.log
151
- pg /contrib/aqo/tmp_check/log
162
+ ${{ env.PG_DIR }} /src/test/regress/regression.diffs
163
+ ${{ env.PG_DIR }} /logfile.log
164
+ ${{ env.PG_DIR }} /contrib/aqo/tmp_check/log
152
165
retention-days : 2
153
166
0 commit comments