@@ -3,16 +3,19 @@ name: testing
3
3
on :
4
4
push :
5
5
pull_request :
6
+ pull_request_target :
7
+ types : [labeled]
6
8
7
9
jobs :
8
- run_tests_linux :
10
+ run_tests_ce_linux :
9
11
# We want to run on external PRs, but not on our own internal
10
12
# PRs as they'll be run by the push to the branch.
11
13
#
12
14
# The main trick is described here:
13
15
# https://github.com/Dart-Code/Dart-Code/pull/2375
14
- if : github.event_name == 'push' ||
15
- github.event.pull_request.head.repo.full_name != github.repository
16
+ if : (github.event_name == 'push') ||
17
+ (github.event_name == 'pull_request' &&
18
+ github.event.pull_request.head.repo.full_name != github.repository)
16
19
17
20
runs-on : ubuntu-20.04
18
21
@@ -97,14 +100,93 @@ jobs:
97
100
- name : Run tests
98
101
run : make test
99
102
100
- run_tests_windows :
103
+ run_tests_ee_linux :
104
+ # The same as for run_tests_ce_linux, but it does not run on pull requests
105
+ # from forks by default. Tests will run only when the pull request is
106
+ # labeled with `full-ci`. To avoid security problems, the label must be
107
+ # reset manually for every run.
108
+ #
109
+ # We need to use `pull_request_target` because it has access to base
110
+ # repository secrets unlike `pull_request`.
111
+ if : (github.event_name == 'push') ||
112
+ (github.event_name == 'pull_request_target' &&
113
+ github.event.pull_request.head.repo.full_name != github.repository &&
114
+ github.event.label.name == 'full-ci')
115
+
116
+ runs-on : ubuntu-20.04
117
+
118
+ strategy :
119
+ fail-fast : false
120
+ matrix :
121
+ tarantool :
122
+ - ' 1.10.11-0-gf0b0e7ecf-r470'
123
+ - ' 2.8.3-21-g7d35cd2be-r470'
124
+ - ' 2.10.0-1-gfa775b383-r486-linux-x86_64'
125
+ python : ['3.5', '3.6', '3.7', '3.8', '3.9', '3.10']
126
+ msgpack-deps :
127
+ # latest msgpack will be installed as a part of requirements.txt
128
+ - ' '
129
+
130
+ steps :
131
+ - name : Clone the connector
132
+ uses : actions/checkout@v2
133
+ # This is needed for pull_request_target because this event runs in the
134
+ # context of the base commit of the pull request. It works fine for
135
+ # `push` and `workflow_dispatch` because the default behavior is used
136
+ # if `ref` and `repository` are empty.
137
+ with :
138
+ ref : ${{github.event.pull_request.head.ref}}
139
+ repository : ${{github.event.pull_request.head.repo.full_name}}
140
+
141
+ - name : Install tarantool ${{ matrix.tarantool }}
142
+ run : |
143
+ ARCHIVE_NAME=tarantool-enterprise-bundle-${{ matrix.tarantool }}.tar.gz
144
+ curl -O -L https://${{ secrets.SDK_DOWNLOAD_TOKEN }}@download.tarantool.io/enterprise/${ARCHIVE_NAME}
145
+ tar -xzf ${ARCHIVE_NAME}
146
+ rm -f ${ARCHIVE_NAME}
147
+
148
+ - name : Setup Python for tests
149
+ uses : actions/setup-python@v2
150
+ with :
151
+ python-version : ${{ matrix.python }}
152
+
153
+ - name : Install specific version of msgpack package
154
+ if : startsWith(matrix.msgpack-deps, 'msgpack==') == true
155
+ run : |
156
+ pip install ${{ matrix.msgpack-deps }}
157
+
158
+ - name : Install specific version of msgpack-python package
159
+ # msgpack package is a replacement for deprecated msgpack-python.
160
+ # To test compatibility with msgpack-python we must ignore
161
+ # requirements.txt install of msgpack package by overwriting it
162
+ # with sed.
163
+ if : startsWith(matrix.msgpack-deps, 'msgpack-python==') == true
164
+ run : |
165
+ pip install ${{ matrix.msgpack-deps }}
166
+ sed -i -e "s/^msgpack.*$/${{ matrix.msgpack-deps }}/" requirements.txt
167
+
168
+ - name : Install package requirements
169
+ run : pip install -r requirements.txt
170
+
171
+ - name : Install test requirements
172
+ run : pip install -r requirements-test.txt
173
+
174
+ - name : Run tests
175
+ run : |
176
+ source tarantool-enterprise/env.sh
177
+ make test
178
+ env :
179
+ TEST_TNT_SSL : ${{ matrix.tarantool == '2.10.0-1-gfa775b383-r486-linux-x86_64' }}
180
+
181
+ run_tests_ce_windows :
101
182
# We want to run on external PRs, but not on our own internal
102
183
# PRs as they'll be run by the push to the branch.
103
184
#
104
185
# The main trick is described here:
105
186
# https://github.com/Dart-Code/Dart-Code/pull/2375
106
187
if : github.event_name == 'push' ||
107
- github.event.pull_request.head.repo.full_name != github.repository
188
+ (github.event_name == 'pull_request' &&
189
+ github.event.pull_request.head.repo.full_name != github.repository)
108
190
109
191
runs-on : windows-2022
110
192
0 commit comments