diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 67830facbc6..4f5ed6b68df 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -3,9 +3,11 @@ stages: - image - build + - test - deploy include: - local: "/tools/gitlab/image.yml" - local: "/tools/gitlab/build.yml" + - local: "/tools/gitlab/test.yml" - local: "/tools/gitlab/release.yml" diff --git a/tools/gitlab/build-linux b/tools/gitlab/build-linux index 351e100b4f8..6170a66e792 100755 --- a/tools/gitlab/build-linux +++ b/tools/gitlab/build-linux @@ -10,13 +10,19 @@ set -Eeuxo pipefail autoreconf cd build64 -../configure -C --enable-win64 --enable-werror --with-mingw +../configure -q -C --enable-win64 --enable-werror --with-mingw make -s -j$(nproc) cd .. cd build32 -../configure -C --enable-werror --with-mingw +../configure -q -C --enable-werror --with-mingw make -s -j$(nproc) cd .. -git reset --hard +if test -s .git/rebase-merge/git-rebase-todo +then + git reset --hard +else + make -s -j$(nproc) -C build32 install-lib install-test DESTDIR=$BASEDIR + make -s -j$(nproc) -C build64 install-lib install-test DESTDIR=$BASEDIR +fi diff --git a/tools/gitlab/build.yml b/tools/gitlab/build.yml index 08e63db0ecd..9b7edcbb912 100644 --- a/tools/gitlab/build.yml +++ b/tools/gitlab/build.yml @@ -20,6 +20,7 @@ - export CCACHE_COMPILERCHECK=content - export PATH="/usr/lib/ccache:$PATH" - mkdir -p build32 build64 + - rm -fr .git/rebase-merge # in case a previous CI run failed in git rebase build-linux: extends: .wine-build @@ -31,7 +32,6 @@ build-linux: - build64/config.log - build32/config.log script: - - rm -fr .git/rebase-merge # in case a previous CI run failed in git rebase - git rebase $CI_MERGE_REQUEST_DIFF_BASE_SHA --exec ./tools/gitlab/build-linux build-mac: @@ -46,26 +46,32 @@ build-mac: - build64/config.log - build32/config.log script: - - rm -fr .git/rebase-merge - export PATH="/usr/local/opt/ccache/libexec:$PATH" - git rebase $CI_MERGE_REQUEST_DIFF_BASE_SHA --exec ./tools/gitlab/build-mac -build-winetest: +build-daily-linux: extends: .wine-build rules: - if: $CI_PIPELINE_SOURCE == 'trigger' && $CI_COMMIT_BRANCH == $CI_DEFAULT_BRANCH + artifacts: + expire_in: 1 day + paths: + - usr/local/ + script: + - ./tools/gitlab/build-linux + +build-winetest: + stage: build + image: $CI_DEPENDENCY_PROXY_DIRECT_GROUP_IMAGE_PREFIX/debian:bullseye + rules: + - if: $CI_PIPELINE_SOURCE == 'trigger' && $CI_COMMIT_BRANCH == $CI_DEFAULT_BRANCH + needs: + - job: build-daily-linux artifacts: name: winetest paths: - winetest.exe - winetest64.exe script: - - cd build64 - - ../configure -q -C --enable-win64 --with-mingw - - make -s -j$(nproc) install-test DESTDIR=$BASEDIR - - cd ../build32 - - ../configure -q -C --with-mingw - - make -s -j$(nproc) install-test DESTDIR=$BASEDIR - - cd .. - mv usr/local/lib/wine/i386-windows/winetest.exe winetest.exe - mv usr/local/lib/wine/x86_64-windows/winetest.exe winetest64.exe diff --git a/tools/gitlab/image.docker b/tools/gitlab/image.docker index c30e8f0de26..0d23a75483b 100644 --- a/tools/gitlab/image.docker +++ b/tools/gitlab/image.docker @@ -51,7 +51,11 @@ RUN export DEBIAN_FRONTEND=noninteractive; \ samba-dev:amd64 \ unixodbc-dev:amd64 unixodbc-dev:i386 \ x11proto-dev && \ - apt-get install -y ccache && \ + apt-get install -y ccache netbase curl ca-certificates xserver-xorg-video-dummy xserver-xorg xfonts-base xinit fvwm \ + winbind fonts-liberation2 fonts-noto-core fonts-noto-cjk pulseaudio libasound2-plugins:amd64 libasound2-plugins:i386 \ + libmjpegutils-2.1-0:amd64 libmjpegutils-2.1-0:i386 gstreamer1.0-libav:amd64 gstreamer1.0-libav:i386 \ + gstreamer1.0-plugins-base:amd64 gstreamer1.0-plugins-good:amd64 gstreamer1.0-plugins-bad:amd64 gstreamer1.0-plugins-ugly:amd64 \ + gstreamer1.0-plugins-base:i386 gstreamer1.0-plugins-good:i386 gstreamer1.0-plugins-bad:i386 gstreamer1.0-plugins-ugly:i386 && \ apt-get clean && \ useradd -m gitlab diff --git a/tools/gitlab/test.yml b/tools/gitlab/test.yml new file mode 100644 index 00000000000..c64ddb449d3 --- /dev/null +++ b/tools/gitlab/test.yml @@ -0,0 +1,60 @@ +# CI script for testing Wine + +.wine-test: + stage: test + image: $CI_REGISTRY/wine/wine:debian-bullseye + interruptible: true + variables: + GECKO_VER: 2.47.3 + MONO_VER: 7.3.0 + cache: + - key: wine-gecko-$GECKO_VER + paths: + - wine-gecko-$GECKO_VER-x86.msi + - wine-gecko-$GECKO_VER-x86_64.msi + - key: wine-mono-$MONO_VER + paths: + - wine-mono-$MONO_VER-x86.msi + before_script: + - export BASEDIR=$PWD + - export PATH=$BASEDIR/usr/local/bin:$PATH + - export DISPLAY=:0 + - export LC_ALL=C.UTF-8 + - export WINEDEBUG=err-all,fixme-all + - | + cat >$HOME/xorg.conf << EOF + Section "Device" + Identifier "dummy" + Driver "dummy" + VideoRam 32768 + EndSection + EOF + - echo 'exec /usr/bin/fvwm -f config -c "Style * MwmDecor" 2>/dev/null' >$HOME/.xinitrc + - startx -- -config $HOME/xorg.conf $DISPLAY & + - test -f wine-gecko-$GECKO_VER-x86.msi || curl -o wine-gecko-$GECKO_VER-x86.msi https://dl.winehq.org/wine/wine-gecko/$GECKO_VER/wine-gecko-$GECKO_VER-x86.msi + - test -f wine-gecko-$GECKO_VER-x86_64.msi || curl -o wine-gecko-$GECKO_VER-x86_64.msi https://dl.winehq.org/wine/wine-gecko/$GECKO_VER/wine-gecko-$GECKO_VER-x86_64.msi + - test -f wine-mono-$MONO_VER-x86.msi || curl -o wine-mono-$MONO_VER-x86.msi https://dl.winehq.org/wine/wine-mono/$MONO_VER/wine-mono-$MONO_VER-x86.msi + - mkdir -p $HOME/Documents $HOME/Desktop usr/local/share/wine/gecko usr/local/share/wine/mono + - ln -sf $BASEDIR/wine-gecko-$GECKO_VER-x86.msi $BASEDIR/wine-gecko-$GECKO_VER-x86_64.msi usr/local/share/wine/gecko + - ln -sf $BASEDIR/wine-mono-$MONO_VER-x86.msi usr/local/share/wine/mono + - pulseaudio --start --exit-idle-time=-1 + - wine wineboot.exe -u + - wineserver -w + +debian-32: + extends: .wine-test + rules: + - if: $CI_PIPELINE_SOURCE == 'trigger' && $CI_COMMIT_BRANCH == $CI_DEFAULT_BRANCH + needs: + - job: build-daily-linux + script: + - wine usr/local/lib/wine/i386-windows/winetest.exe -q -t gitlab-$CI_JOB_NAME -m $CI_JOB_URL + +debian-64: + extends: .wine-test + rules: + - if: $CI_PIPELINE_SOURCE == 'trigger' && $CI_COMMIT_BRANCH == $CI_DEFAULT_BRANCH + needs: + - job: build-daily-linux + script: + - wine usr/local/lib/wine/x86_64-windows/winetest.exe -q -t gitlab-$CI_JOB_NAME -m $CI_JOB_URL