Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
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 #6569)
- Loading branch information
Showing
5 changed files
with
230 additions
and
34 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,208 @@ | ||
name: CI with MSVC and MinGW-w64 | ||
|
||
on: | ||
push: | ||
pull_request: | ||
|
||
env: | ||
VCVARSALL: C:\Program Files (x86)\Microsoft Visual Studio\2019\Enterprise\VC\Auxiliary\Build\vcvarsall.bat | ||
|
||
# Interfaces | ||
# Lua | ||
LUA_VER: 54 | ||
LUA_VER_DOT: '5.4' | ||
LUA_RELEASE: 5.4.0 | ||
LUA32_URL: https://downloads.sourceforge.net/luabinaries/lua-%LUA_RELEASE%_Win32_dllw6_lib.zip | ||
LUA64_URL: https://downloads.sourceforge.net/luabinaries/lua-%LUA_RELEASE%_Win64_dllw6_lib.zip | ||
LUA_DIR: D:\Lua | ||
# Python 2 | ||
PYTHON_VER: 27 | ||
PYTHON_VER_DOT: '2.7' | ||
# Python 3 | ||
PYTHON3_VER: 38 | ||
PYTHON3_VER_DOT: '3.8' | ||
|
||
# Other dependencies | ||
# winpty | ||
WINPTY_URL: https://github.com/rprichard/winpty/releases/download/0.4.3/winpty-0.4.3-msvc2015.zip | ||
|
||
# Escape sequences | ||
COL_RED: "\x1b[31m" | ||
COL_GREEN: "\x1b[32m" | ||
COL_YELLOW: "\x1b[33m" | ||
COL_RESET: "\x1b[m" | ||
|
||
jobs: | ||
build: | ||
runs-on: windows-latest | ||
|
||
strategy: | ||
matrix: | ||
toolchain: [msvc, mingw] | ||
arch: [x64, x86] | ||
features: [HUGE, NORMAL] | ||
include: | ||
- arch: x64 | ||
vcarch: amd64 | ||
warch: x64 | ||
bits: 64 | ||
msystem: MINGW64 | ||
cygreg: registry | ||
pyreg: "" | ||
- arch: x86 | ||
vcarch: x86 | ||
warch: ia32 | ||
bits: 32 | ||
msystem: MINGW32 | ||
cygreg: registry32 | ||
pyreg: "-32" | ||
exclude: | ||
- toolchain: msvc | ||
arch: x64 | ||
features: NORMAL | ||
- toolchain: mingw | ||
arch: x86 | ||
features: NORMAL | ||
|
||
steps: | ||
- name: Initalize | ||
id: init | ||
shell: bash | ||
run: | | ||
git config --global core.autocrlf input | ||
python_dir=$(cat "/proc/${{ matrix.cygreg }}/HKEY_LOCAL_MACHINE/SOFTWARE/Python/PythonCore/${PYTHON_VER_DOT}/InstallPath/@") | ||
python3_dir=$(cat "/proc/${{ matrix.cygreg }}/HKEY_LOCAL_MACHINE/SOFTWARE/Python/PythonCore/${PYTHON3_VER_DOT}${{ matrix.pyreg }}/InstallPath/@") | ||
echo "::set-env name=PYTHON_DIR::$python_dir" | ||
echo "::set-env name=PYTHON3_DIR::$python3_dir" | ||
- uses: msys2/setup-msys2@v2 | ||
if: matrix.toolchain == 'mingw' | ||
with: | ||
msystem: ${{ matrix.msystem }} | ||
release: false | ||
|
||
- uses: actions/checkout@v2 | ||
|
||
- name: Create a list of download URLs | ||
shell: cmd | ||
run: | | ||
type NUL > urls.txt | ||
echo %LUA_RELEASE%>> urls.txt | ||
echo %WINPTY_URL%>> urls.txt | ||
- name: Cache downloaded files | ||
uses: actions/cache@v2 | ||
with: | ||
path: downloads | ||
key: ${{ runner.os }}-${{ matrix.bits }}-${{ hashFiles('urls.txt') }} | ||
|
||
- name: Download dependencies | ||
shell: cmd | ||
run: | | ||
path C:\Program Files\7-Zip;%path% | ||
if not exist downloads mkdir downloads | ||
echo %COL_GREEN%Download Lua%COL_RESET% | ||
call :downloadfile %LUA${{ matrix.bits }}_URL% downloads\lua.zip | ||
7z x downloads\lua.zip -o%LUA_DIR% > nul || exit 1 | ||
echo %COL_GREEN%Download winpty%COL_RESET% | ||
call :downloadfile %WINPTY_URL% downloads\winpty.zip | ||
7z x -y downloads\winpty.zip -oD:\winpty > nul || exit 1 | ||
copy /Y D:\winpty\${{ matrix.warch }}\bin\winpty.dll src\winpty${{ matrix.bits }}.dll | ||
copy /Y D:\winpty\${{ matrix.warch }}\bin\winpty-agent.exe src\ | ||
goto :eof | ||
:downloadfile | ||
:: call :downloadfile <URL> <localfile> | ||
if not exist %2 ( | ||
curl -f -L %1 -o %2 | ||
) | ||
if ERRORLEVEL 1 ( | ||
rem Retry once. | ||
curl -f -L %1 -o %2 || exit 1 | ||
) | ||
goto :eof | ||
- name: Build (MSVC) | ||
if: matrix.toolchain == 'msvc' | ||
shell: cmd | ||
run: | | ||
call "%VCVARSALL%" ${{ matrix.vcarch }} | ||
cd src | ||
:: Filter out the progress bar from the build log | ||
sed -e "s/@<<$/@<< | sed -e 's#.*\\\\r.*##'/" Make_mvc.mak > Make_mvc2.mak | ||
if "${{ matrix.features }}"=="HUGE" ( | ||
nmake -nologo -f Make_mvc2.mak ^ | ||
FEATURES=${{ matrix.features }} ^ | ||
GUI=yes IME=yes ICONV=yes VIMDLL=yes ^ | ||
DYNAMIC_LUA=yes LUA=%LUA_DIR% ^ | ||
DYNAMIC_PYTHON=yes PYTHON=%PYTHON_DIR% ^ | ||
DYNAMIC_PYTHON3=yes PYTHON3=%PYTHON3_DIR% | ||
) else ( | ||
nmake -nologo -f Make_mvc2.mak ^ | ||
FEATURES=${{ matrix.features }} ^ | ||
GUI=yes IME=yes ICONV=yes VIMDLL=yes | ||
) | ||
if not exist vim${{ matrix.bits }}.dll ( | ||
echo %COL_RED%Build failure.%COL_RESET% | ||
exit 1 | ||
) | ||
- name: Build (MinGW) | ||
if: matrix.toolchain == 'mingw' | ||
shell: msys2 {0} | ||
run: | | ||
cd src | ||
if [ "${{ matrix.features }}" = "HUGE" ]; then | ||
mingw32-make -f Make_ming.mak -j2 \ | ||
FEATURES=${{ matrix.features }} \ | ||
GUI=yes IME=yes ICONV=yes VIMDLL=yes \ | ||
DYNAMIC_LUA=yes LUA=${LUA_DIR} \ | ||
DYNAMIC_PYTHON=yes PYTHON=${PYTHON_DIR} \ | ||
DYNAMIC_PYTHON3=yes PYTHON3=${PYTHON3_DIR} \ | ||
STATIC_STDCPLUS=yes | ||
else | ||
mingw32-make -f Make_ming.mak -j2 \ | ||
FEATURES=${{ matrix.features }} \ | ||
GUI=yes IME=yes ICONV=yes VIMDLL=yes \ | ||
STATIC_STDCPLUS=yes | ||
fi | ||
# - name: Prepare Artifact | ||
# shell: cmd | ||
# run: | | ||
# mkdir artifacts | ||
# copy src\*vim.exe artifacts | ||
# copy src\vim*.dll artifacts | ||
# | ||
# - name: Upload Artifact | ||
# uses: actions/upload-artifact@v1 | ||
# with: | ||
# name: vim${{ matrix.bits }}-${{ matrix.toolchain }} | ||
# path: ./artifacts | ||
|
||
- name: Test | ||
shell: cmd | ||
timeout-minutes: 20 | ||
run: | | ||
PATH %LUA_DIR%;C:\msys64\${{ matrix.msystem }}\bin;%PATH%;%PYTHON3_DIR% | ||
call "%VCVARSALL%" ${{ matrix.vcarch }} | ||
cd src | ||
echo. | ||
echo %COL_GREEN%vim version:%COL_RESET% | ||
.\vim --version || exit 1 | ||
cd testdir | ||
echo %COL_GREEN%Test gvim:%COL_RESET% | ||
nmake -nologo -f Make_dos.mak VIMPROG=..\gvim || exit 1 | ||
nmake -nologo -f Make_dos.mak clean | ||
echo %COL_GREEN%Test vim:%COL_RESET% | ||
if "${{ matrix.toolchain }}-${{ matrix.arch }}"=="msvc-x64" ( | ||
rem This test may hang up unless it is executed in a separate console. | ||
start /wait cmd /c "nmake -nologo -f Make_dos.mak VIMPROG=..\vim > nul" | ||
if exist messages type messages | ||
nmake -nologo -f Make_dos.mak report || exit 1 | ||
) else ( | ||
nmake -nologo -f Make_dos.mak VIMPROG=..\vim || exit 1 | ||
) |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters