]>
Commit | Line | Data |
---|---|---|
889cacb6 ĐTCD |
1 | name: CI/PR |
2 | ||
3 | on: [push, pull_request] | |
4 | ||
5 | env: | |
6 | DEVELOPER: 1 | |
7 | ||
8 | jobs: | |
e76eec35 | 9 | ci-config: |
055747cd AM |
10 | runs-on: ubuntu-latest |
11 | outputs: | |
12 | enabled: ${{ steps.check-ref.outputs.enabled }} | |
13 | steps: | |
14 | - name: try to clone ci-config branch | |
055747cd AM |
15 | run: | |
16 | git -c protocol.version=2 clone \ | |
17 | --no-tags \ | |
18 | --single-branch \ | |
19 | -b ci-config \ | |
20 | --depth 1 \ | |
21 | --no-checkout \ | |
22 | --filter=blob:none \ | |
23 | https://github.com/${{ github.repository }} \ | |
24 | config-repo && | |
b01aff8c | 25 | cd config-repo && |
2fcf7a8c | 26 | git checkout HEAD -- ci/config || : ignore |
055747cd AM |
27 | - id: check-ref |
28 | name: check whether CI is enabled for ref | |
29 | run: | | |
30 | enabled=yes | |
31 | if test -x config-repo/ci/config/allow-ref && | |
32 | ! config-repo/ci/config/allow-ref '${{ github.ref }}' | |
33 | then | |
34 | enabled=no | |
35 | fi | |
36 | echo "::set-output name=enabled::$enabled" | |
e76eec35 | 37 | |
889cacb6 | 38 | windows-build: |
e76eec35 JK |
39 | needs: ci-config |
40 | if: needs.ci-config.outputs.enabled == 'yes' | |
889cacb6 ĐTCD |
41 | runs-on: windows-latest |
42 | steps: | |
43 | - uses: actions/checkout@v1 | |
44 | - name: download git-sdk-64-minimal | |
45 | shell: bash | |
857341c1 JS |
46 | run: | |
47 | ## Get artifact | |
48 | urlbase=https://dev.azure.com/git-for-windows/git/_apis/build/builds | |
49 | id=$(curl "$urlbase?definitions=22&statusFilter=completed&resultFilter=succeeded&\$top=1" | | |
50 | jq -r ".value[] | .id") | |
51 | download_url="$(curl "$urlbase/$id/artifacts" | | |
52 | jq -r '.value[] | select(.name == "git-sdk-64-minimal").resource.downloadUrl')" | |
53 | curl --connect-timeout 10 --retry 5 --retry-delay 0 --retry-max-time 240 \ | |
54 | -o artifacts.zip "$download_url" | |
55 | ||
56 | ## Unzip and remove the artifact | |
57 | unzip artifacts.zip | |
58 | rm artifacts.zip | |
889cacb6 ĐTCD |
59 | - name: build |
60 | shell: powershell | |
61 | env: | |
62 | HOME: ${{runner.workspace}} | |
63 | MSYSTEM: MINGW64 | |
64 | NO_PERL: 1 | |
65 | run: | | |
66 | & .\git-sdk-64-minimal\usr\bin\bash.exe -lc @" | |
67 | printf '%s\n' /git-sdk-64-minimal/ >>.git/info/exclude | |
68 | ||
69 | ci/make-test-artifacts.sh artifacts | |
70 | "@ | |
71 | - name: upload build artifacts | |
72 | uses: actions/upload-artifact@v1 | |
73 | with: | |
74 | name: windows-artifacts | |
75 | path: artifacts | |
857341c1 JS |
76 | - name: upload git-sdk-64-minimal |
77 | uses: actions/upload-artifact@v1 | |
78 | with: | |
79 | name: git-sdk-64-minimal | |
80 | path: git-sdk-64-minimal | |
889cacb6 ĐTCD |
81 | windows-test: |
82 | runs-on: windows-latest | |
83 | needs: [windows-build] | |
84 | strategy: | |
85 | matrix: | |
86 | nr: [0, 1, 2, 3, 4, 5, 6, 7, 8, 9] | |
87 | steps: | |
88 | - uses: actions/checkout@v1 | |
889cacb6 ĐTCD |
89 | - name: download build artifacts |
90 | uses: actions/download-artifact@v1 | |
91 | with: | |
92 | name: windows-artifacts | |
93 | path: ${{github.workspace}} | |
94 | - name: extract build artifacts | |
95 | shell: bash | |
96 | run: tar xf artifacts.tar.gz | |
857341c1 JS |
97 | - name: download git-sdk-64-minimal |
98 | uses: actions/download-artifact@v1 | |
99 | with: | |
100 | name: git-sdk-64-minimal | |
101 | path: ${{github.workspace}}/git-sdk-64-minimal/ | |
889cacb6 ĐTCD |
102 | - name: test |
103 | shell: powershell | |
104 | run: | | |
105 | & .\git-sdk-64-minimal\usr\bin\bash.exe -lc @" | |
106 | # Let Git ignore the SDK | |
107 | printf '%s\n' /git-sdk-64-minimal/ >>.git/info/exclude | |
108 | ||
109 | ci/run-test-slice.sh ${{matrix.nr}} 10 | |
110 | "@ | |
111 | - name: ci/print-test-failures.sh | |
112 | if: failure() | |
113 | shell: powershell | |
114 | run: | | |
115 | & .\git-sdk-64-minimal\usr\bin\bash.exe -lc ci/print-test-failures.sh | |
f72f328b JS |
116 | - name: Upload failed tests' directories |
117 | if: failure() && env.FAILED_TEST_ARTIFACTS != '' | |
118 | uses: actions/upload-artifact@v1 | |
119 | with: | |
120 | name: failed-tests-windows | |
121 | path: ${{env.FAILED_TEST_ARTIFACTS}} | |
889cacb6 | 122 | vs-build: |
e76eec35 JK |
123 | needs: ci-config |
124 | if: needs.ci-config.outputs.enabled == 'yes' | |
889cacb6 ĐTCD |
125 | env: |
126 | MSYSTEM: MINGW64 | |
127 | NO_PERL: 1 | |
128 | GIT_CONFIG_PARAMETERS: "'user.name=CI' 'user.email=ci@git'" | |
129 | runs-on: windows-latest | |
130 | steps: | |
131 | - uses: actions/checkout@v1 | |
132 | - name: download git-sdk-64-minimal | |
133 | shell: bash | |
857341c1 JS |
134 | run: | |
135 | ## Get artifact | |
136 | urlbase=https://dev.azure.com/git-for-windows/git/_apis/build/builds | |
137 | id=$(curl "$urlbase?definitions=22&statusFilter=completed&resultFilter=succeeded&\$top=1" | | |
138 | jq -r ".value[] | .id") | |
139 | download_url="$(curl "$urlbase/$id/artifacts" | | |
140 | jq -r '.value[] | select(.name == "git-sdk-64-minimal").resource.downloadUrl')" | |
141 | curl --connect-timeout 10 --retry 5 --retry-delay 0 --retry-max-time 240 \ | |
142 | -o artifacts.zip "$download_url" | |
143 | ||
144 | ## Unzip and remove the artifact | |
145 | unzip artifacts.zip | |
146 | rm artifacts.zip | |
889cacb6 ĐTCD |
147 | - name: download vcpkg artifacts |
148 | shell: powershell | |
149 | run: | | |
150 | $urlbase = "https://dev.azure.com/git/git/_apis/build/builds" | |
151 | $id = ((Invoke-WebRequest -UseBasicParsing "${urlbase}?definitions=9&statusFilter=completed&resultFilter=succeeded&`$top=1").content | ConvertFrom-JSON).value[0].id | |
152 | $downloadUrl = ((Invoke-WebRequest -UseBasicParsing "${urlbase}/$id/artifacts").content | ConvertFrom-JSON).value[0].resource.downloadUrl | |
153 | (New-Object Net.WebClient).DownloadFile($downloadUrl, "compat.zip") | |
154 | Expand-Archive compat.zip -DestinationPath . -Force | |
155 | Remove-Item compat.zip | |
156 | - name: add msbuild to PATH | |
157 | uses: microsoft/setup-msbuild@v1.0.0 | |
4c2c38e8 SS |
158 | - name: copy dlls to root |
159 | shell: powershell | |
160 | run: | | |
161 | & compat\vcbuild\vcpkg_copy_dlls.bat release | |
162 | if (!$?) { exit(1) } | |
163 | - name: generate Visual Studio solution | |
164 | shell: bash | |
165 | run: | | |
166 | cmake `pwd`/contrib/buildsystems/ -DCMAKE_PREFIX_PATH=`pwd`/compat/vcbuild/vcpkg/installed/x64-windows \ | |
167 | -DIconv_LIBRARY=`pwd`/compat/vcbuild/vcpkg/installed/x64-windows/lib/libiconv.lib -DIconv_INCLUDE_DIR=`pwd`/compat/vcbuild/vcpkg/installed/x64-windows/include \ | |
168 | -DMSGFMT_EXE=`pwd`/git-sdk-64-minimal/mingw64/bin/msgfmt.exe -DPERL_TESTS=OFF -DPYTHON_TESTS=OFF -DCURL_NO_CURL_CMAKE=ON | |
889cacb6 ĐTCD |
169 | - name: MSBuild |
170 | run: msbuild git.sln -property:Configuration=Release -property:Platform=x64 -maxCpuCount:4 -property:PlatformToolset=v142 | |
171 | - name: bundle artifact tar | |
172 | shell: powershell | |
173 | env: | |
174 | MSVC: 1 | |
175 | VCPKG_ROOT: ${{github.workspace}}\compat\vcbuild\vcpkg | |
176 | run: | | |
889cacb6 ĐTCD |
177 | & git-sdk-64-minimal\usr\bin\bash.exe -lc @" |
178 | mkdir -p artifacts && | |
179 | eval \"`$(make -n artifacts-tar INCLUDE_DLLS_IN_ARTIFACTS=YesPlease ARTIFACTS_DIRECTORY=artifacts 2>&1 | grep ^tar)\" | |
180 | "@ | |
181 | - name: upload build artifacts | |
182 | uses: actions/upload-artifact@v1 | |
183 | with: | |
184 | name: vs-artifacts | |
185 | path: artifacts | |
186 | vs-test: | |
187 | runs-on: windows-latest | |
857341c1 | 188 | needs: [vs-build, windows-build] |
889cacb6 ĐTCD |
189 | strategy: |
190 | matrix: | |
191 | nr: [0, 1, 2, 3, 4, 5, 6, 7, 8, 9] | |
192 | steps: | |
193 | - uses: actions/checkout@v1 | |
857341c1 JS |
194 | - name: download git-sdk-64-minimal |
195 | uses: actions/download-artifact@v1 | |
196 | with: | |
197 | name: git-sdk-64-minimal | |
198 | path: ${{github.workspace}}/git-sdk-64-minimal/ | |
889cacb6 ĐTCD |
199 | - name: download build artifacts |
200 | uses: actions/download-artifact@v1 | |
201 | with: | |
202 | name: vs-artifacts | |
203 | path: ${{github.workspace}} | |
204 | - name: extract build artifacts | |
205 | shell: bash | |
206 | run: tar xf artifacts.tar.gz | |
4c2c38e8 | 207 | - name: test |
889cacb6 ĐTCD |
208 | shell: powershell |
209 | env: | |
210 | MSYSTEM: MINGW64 | |
211 | NO_SVN_TESTS: 1 | |
212 | GIT_TEST_SKIP_REBASE_P: 1 | |
213 | run: | | |
857341c1 | 214 | & .\git-sdk-64-minimal\usr\bin\bash.exe -lc @" |
889cacb6 | 215 | # Let Git ignore the SDK and the test-cache |
857341c1 | 216 | printf '%s\n' /git-sdk-64-minimal/ /test-cache/ >>.git/info/exclude |
889cacb6 | 217 | |
4c2c38e8 | 218 | ci/run-test-slice.sh ${{matrix.nr}} 10 |
889cacb6 | 219 | "@ |
4c2c38e8 SS |
220 | - name: ci/print-test-failures.sh |
221 | if: failure() | |
222 | shell: powershell | |
223 | run: | | |
224 | & .\git-sdk-64-minimal\usr\bin\bash.exe -lc ci/print-test-failures.sh | |
225 | - name: Upload failed tests' directories | |
226 | if: failure() && env.FAILED_TEST_ARTIFACTS != '' | |
227 | uses: actions/upload-artifact@v1 | |
228 | with: | |
229 | name: failed-tests-windows | |
230 | path: ${{env.FAILED_TEST_ARTIFACTS}} | |
889cacb6 | 231 | regular: |
e76eec35 JK |
232 | needs: ci-config |
233 | if: needs.ci-config.outputs.enabled == 'yes' | |
889cacb6 ĐTCD |
234 | strategy: |
235 | matrix: | |
236 | vector: | |
237 | - jobname: linux-clang | |
238 | cc: clang | |
239 | pool: ubuntu-latest | |
240 | - jobname: linux-gcc | |
241 | cc: gcc | |
242 | pool: ubuntu-latest | |
243 | - jobname: osx-clang | |
244 | cc: clang | |
245 | pool: macos-latest | |
246 | - jobname: osx-gcc | |
247 | cc: gcc | |
248 | pool: macos-latest | |
249 | - jobname: GETTEXT_POISON | |
250 | cc: gcc | |
251 | pool: ubuntu-latest | |
252 | env: | |
253 | CC: ${{matrix.vector.cc}} | |
254 | jobname: ${{matrix.vector.jobname}} | |
255 | runs-on: ${{matrix.vector.pool}} | |
256 | steps: | |
257 | - uses: actions/checkout@v1 | |
258 | - run: ci/install-dependencies.sh | |
259 | - run: ci/run-build-and-tests.sh | |
260 | - run: ci/print-test-failures.sh | |
261 | if: failure() | |
f72f328b JS |
262 | - name: Upload failed tests' directories |
263 | if: failure() && env.FAILED_TEST_ARTIFACTS != '' | |
264 | uses: actions/upload-artifact@v1 | |
265 | with: | |
266 | name: failed-tests-${{matrix.vector.jobname}} | |
267 | path: ${{env.FAILED_TEST_ARTIFACTS}} | |
889cacb6 | 268 | dockerized: |
e76eec35 JK |
269 | needs: ci-config |
270 | if: needs.ci-config.outputs.enabled == 'yes' | |
889cacb6 ĐTCD |
271 | strategy: |
272 | matrix: | |
273 | vector: | |
274 | - jobname: linux-musl | |
275 | image: alpine | |
276 | - jobname: Linux32 | |
277 | image: daald/ubuntu32:xenial | |
278 | env: | |
279 | jobname: ${{matrix.vector.jobname}} | |
280 | runs-on: ubuntu-latest | |
281 | container: ${{matrix.vector.image}} | |
282 | steps: | |
283 | - uses: actions/checkout@v1 | |
284 | - run: ci/install-docker-dependencies.sh | |
285 | - run: ci/run-build-and-tests.sh | |
286 | - run: ci/print-test-failures.sh | |
287 | if: failure() | |
f72f328b JS |
288 | - name: Upload failed tests' directories |
289 | if: failure() && env.FAILED_TEST_ARTIFACTS != '' | |
290 | uses: actions/upload-artifact@v1 | |
291 | with: | |
292 | name: failed-tests-${{matrix.vector.jobname}} | |
293 | path: ${{env.FAILED_TEST_ARTIFACTS}} | |
889cacb6 | 294 | static-analysis: |
e76eec35 JK |
295 | needs: ci-config |
296 | if: needs.ci-config.outputs.enabled == 'yes' | |
889cacb6 ĐTCD |
297 | env: |
298 | jobname: StaticAnalysis | |
299 | runs-on: ubuntu-latest | |
300 | steps: | |
301 | - uses: actions/checkout@v1 | |
302 | - run: ci/install-dependencies.sh | |
303 | - run: ci/run-static-analysis.sh | |
304 | documentation: | |
e76eec35 JK |
305 | needs: ci-config |
306 | if: needs.ci-config.outputs.enabled == 'yes' | |
889cacb6 ĐTCD |
307 | env: |
308 | jobname: Documentation | |
309 | runs-on: ubuntu-latest | |
310 | steps: | |
311 | - uses: actions/checkout@v1 | |
312 | - run: ci/install-dependencies.sh | |
313 | - run: ci/test-documentation.sh |