Mercurial > vim
comparison .github/workflows/ci-windows.yaml @ 21534:69a59cc69519 v8.2.1317
patch 8.2.1317: MS-Windows tests on AppVeyor are slow
Commit: https://github.com/vim/vim/commit/f9a343f8bda8fbe17ff045bef7342ffd6179e2f5
Author: Bram Moolenaar <Bram@vim.org>
Date: Wed Jul 29 16:32:21 2020 +0200
patch 8.2.1317: MS-Windows tests on AppVeyor are slow
Problem: MS-Windows tests on AppVeyor are slow.
Solution: Use GitHub Actions. (Ken Takata, closes https://github.com/vim/vim/issues/6569)
author | Bram Moolenaar <Bram@vim.org> |
---|---|
date | Wed, 29 Jul 2020 16:45:04 +0200 |
parents | |
children | 6e13105b5d07 |
comparison
equal
deleted
inserted
replaced
21533:65b20f7e5189 | 21534:69a59cc69519 |
---|---|
1 name: CI with MSVC and MinGW-w64 | |
2 | |
3 on: | |
4 push: | |
5 pull_request: | |
6 | |
7 env: | |
8 VCVARSALL: C:\Program Files (x86)\Microsoft Visual Studio\2019\Enterprise\VC\Auxiliary\Build\vcvarsall.bat | |
9 | |
10 # Interfaces | |
11 # Lua | |
12 LUA_VER: 54 | |
13 LUA_VER_DOT: '5.4' | |
14 LUA_RELEASE: 5.4.0 | |
15 LUA32_URL: https://downloads.sourceforge.net/luabinaries/lua-%LUA_RELEASE%_Win32_dllw6_lib.zip | |
16 LUA64_URL: https://downloads.sourceforge.net/luabinaries/lua-%LUA_RELEASE%_Win64_dllw6_lib.zip | |
17 LUA_DIR: D:\Lua | |
18 # Python 2 | |
19 PYTHON_VER: 27 | |
20 PYTHON_VER_DOT: '2.7' | |
21 # Python 3 | |
22 PYTHON3_VER: 38 | |
23 PYTHON3_VER_DOT: '3.8' | |
24 | |
25 # Other dependencies | |
26 # winpty | |
27 WINPTY_URL: https://github.com/rprichard/winpty/releases/download/0.4.3/winpty-0.4.3-msvc2015.zip | |
28 | |
29 # Escape sequences | |
30 COL_RED: "\x1b[31m" | |
31 COL_GREEN: "\x1b[32m" | |
32 COL_YELLOW: "\x1b[33m" | |
33 COL_RESET: "\x1b[m" | |
34 | |
35 jobs: | |
36 build: | |
37 runs-on: windows-latest | |
38 | |
39 strategy: | |
40 matrix: | |
41 toolchain: [msvc, mingw] | |
42 arch: [x64, x86] | |
43 features: [HUGE, NORMAL] | |
44 include: | |
45 - arch: x64 | |
46 vcarch: amd64 | |
47 warch: x64 | |
48 bits: 64 | |
49 msystem: MINGW64 | |
50 cygreg: registry | |
51 pyreg: "" | |
52 - arch: x86 | |
53 vcarch: x86 | |
54 warch: ia32 | |
55 bits: 32 | |
56 msystem: MINGW32 | |
57 cygreg: registry32 | |
58 pyreg: "-32" | |
59 exclude: | |
60 - toolchain: msvc | |
61 arch: x64 | |
62 features: NORMAL | |
63 - toolchain: mingw | |
64 arch: x86 | |
65 features: NORMAL | |
66 | |
67 steps: | |
68 - name: Initalize | |
69 id: init | |
70 shell: bash | |
71 run: | | |
72 git config --global core.autocrlf input | |
73 python_dir=$(cat "/proc/${{ matrix.cygreg }}/HKEY_LOCAL_MACHINE/SOFTWARE/Python/PythonCore/${PYTHON_VER_DOT}/InstallPath/@") | |
74 python3_dir=$(cat "/proc/${{ matrix.cygreg }}/HKEY_LOCAL_MACHINE/SOFTWARE/Python/PythonCore/${PYTHON3_VER_DOT}${{ matrix.pyreg }}/InstallPath/@") | |
75 echo "::set-env name=PYTHON_DIR::$python_dir" | |
76 echo "::set-env name=PYTHON3_DIR::$python3_dir" | |
77 | |
78 - uses: msys2/setup-msys2@v2 | |
79 if: matrix.toolchain == 'mingw' | |
80 with: | |
81 msystem: ${{ matrix.msystem }} | |
82 release: false | |
83 | |
84 - uses: actions/checkout@v2 | |
85 | |
86 - name: Create a list of download URLs | |
87 shell: cmd | |
88 run: | | |
89 type NUL > urls.txt | |
90 echo %LUA_RELEASE%>> urls.txt | |
91 echo %WINPTY_URL%>> urls.txt | |
92 | |
93 - name: Cache downloaded files | |
94 uses: actions/cache@v2 | |
95 with: | |
96 path: downloads | |
97 key: ${{ runner.os }}-${{ matrix.bits }}-${{ hashFiles('urls.txt') }} | |
98 | |
99 - name: Download dependencies | |
100 shell: cmd | |
101 run: | | |
102 path C:\Program Files\7-Zip;%path% | |
103 if not exist downloads mkdir downloads | |
104 | |
105 echo %COL_GREEN%Download Lua%COL_RESET% | |
106 call :downloadfile %LUA${{ matrix.bits }}_URL% downloads\lua.zip | |
107 7z x downloads\lua.zip -o%LUA_DIR% > nul || exit 1 | |
108 | |
109 echo %COL_GREEN%Download winpty%COL_RESET% | |
110 call :downloadfile %WINPTY_URL% downloads\winpty.zip | |
111 7z x -y downloads\winpty.zip -oD:\winpty > nul || exit 1 | |
112 copy /Y D:\winpty\${{ matrix.warch }}\bin\winpty.dll src\winpty${{ matrix.bits }}.dll | |
113 copy /Y D:\winpty\${{ matrix.warch }}\bin\winpty-agent.exe src\ | |
114 | |
115 goto :eof | |
116 | |
117 :downloadfile | |
118 :: call :downloadfile <URL> <localfile> | |
119 if not exist %2 ( | |
120 curl -f -L %1 -o %2 | |
121 ) | |
122 if ERRORLEVEL 1 ( | |
123 rem Retry once. | |
124 curl -f -L %1 -o %2 || exit 1 | |
125 ) | |
126 goto :eof | |
127 | |
128 - name: Build (MSVC) | |
129 if: matrix.toolchain == 'msvc' | |
130 shell: cmd | |
131 run: | | |
132 call "%VCVARSALL%" ${{ matrix.vcarch }} | |
133 cd src | |
134 :: Filter out the progress bar from the build log | |
135 sed -e "s/@<<$/@<< | sed -e 's#.*\\\\r.*##'/" Make_mvc.mak > Make_mvc2.mak | |
136 if "${{ matrix.features }}"=="HUGE" ( | |
137 nmake -nologo -f Make_mvc2.mak ^ | |
138 FEATURES=${{ matrix.features }} ^ | |
139 GUI=yes IME=yes ICONV=yes VIMDLL=yes ^ | |
140 DYNAMIC_LUA=yes LUA=%LUA_DIR% ^ | |
141 DYNAMIC_PYTHON=yes PYTHON=%PYTHON_DIR% ^ | |
142 DYNAMIC_PYTHON3=yes PYTHON3=%PYTHON3_DIR% | |
143 ) else ( | |
144 nmake -nologo -f Make_mvc2.mak ^ | |
145 FEATURES=${{ matrix.features }} ^ | |
146 GUI=yes IME=yes ICONV=yes VIMDLL=yes | |
147 ) | |
148 if not exist vim${{ matrix.bits }}.dll ( | |
149 echo %COL_RED%Build failure.%COL_RESET% | |
150 exit 1 | |
151 ) | |
152 | |
153 - name: Build (MinGW) | |
154 if: matrix.toolchain == 'mingw' | |
155 shell: msys2 {0} | |
156 run: | | |
157 cd src | |
158 if [ "${{ matrix.features }}" = "HUGE" ]; then | |
159 mingw32-make -f Make_ming.mak -j2 \ | |
160 FEATURES=${{ matrix.features }} \ | |
161 GUI=yes IME=yes ICONV=yes VIMDLL=yes \ | |
162 DYNAMIC_LUA=yes LUA=${LUA_DIR} \ | |
163 DYNAMIC_PYTHON=yes PYTHON=${PYTHON_DIR} \ | |
164 DYNAMIC_PYTHON3=yes PYTHON3=${PYTHON3_DIR} \ | |
165 STATIC_STDCPLUS=yes | |
166 else | |
167 mingw32-make -f Make_ming.mak -j2 \ | |
168 FEATURES=${{ matrix.features }} \ | |
169 GUI=yes IME=yes ICONV=yes VIMDLL=yes \ | |
170 STATIC_STDCPLUS=yes | |
171 fi | |
172 | |
173 # - name: Prepare Artifact | |
174 # shell: cmd | |
175 # run: | | |
176 # mkdir artifacts | |
177 # copy src\*vim.exe artifacts | |
178 # copy src\vim*.dll artifacts | |
179 # | |
180 # - name: Upload Artifact | |
181 # uses: actions/upload-artifact@v1 | |
182 # with: | |
183 # name: vim${{ matrix.bits }}-${{ matrix.toolchain }} | |
184 # path: ./artifacts | |
185 | |
186 - name: Test | |
187 shell: cmd | |
188 timeout-minutes: 20 | |
189 run: | | |
190 PATH %LUA_DIR%;C:\msys64\${{ matrix.msystem }}\bin;%PATH%;%PYTHON3_DIR% | |
191 call "%VCVARSALL%" ${{ matrix.vcarch }} | |
192 cd src | |
193 echo. | |
194 echo %COL_GREEN%vim version:%COL_RESET% | |
195 .\vim --version || exit 1 | |
196 cd testdir | |
197 echo %COL_GREEN%Test gvim:%COL_RESET% | |
198 nmake -nologo -f Make_dos.mak VIMPROG=..\gvim || exit 1 | |
199 nmake -nologo -f Make_dos.mak clean | |
200 echo %COL_GREEN%Test vim:%COL_RESET% | |
201 if "${{ matrix.toolchain }}-${{ matrix.arch }}"=="msvc-x64" ( | |
202 rem This test may hang up unless it is executed in a separate console. | |
203 start /wait cmd /c "nmake -nologo -f Make_dos.mak VIMPROG=..\vim > nul" | |
204 if exist messages type messages | |
205 nmake -nologo -f Make_dos.mak report || exit 1 | |
206 ) else ( | |
207 nmake -nologo -f Make_dos.mak VIMPROG=..\vim || exit 1 | |
208 ) |