Skip to content
Snippets Groups Projects
Commit d7092992 authored by Michael Stefaniuc's avatar Michael Stefaniuc Committed by Alexandre Julliard
Browse files

gitlab: Import the gitlab CI from the master branch (devel tree).


Original code written by Alexandre Julliard, Rémi Bernon and
Hugh McMaster.

Changes specific for stable:
- Do not run the build script on each commit.
  The build scripts are missing on the initially pulled commits.
  Also it is common for the stable build to be broken until a few
  commits are cherry-picked.
- Use the correct Gecko and Mono versions.
- Don't run the tests for now as too many fail.

Signed-off-by: default avatarMichael Stefaniuc <mstefani@winehq.org>
parent 56eeaa9b
No related branches found
No related tags found
No related merge requests found
# main Gitlab CI script
stages:
- image
- build
- test
- deploy
include:
- local: "/tools/gitlab/image.yml"
- local: "/tools/gitlab/build.yml"
- local: "/tools/gitlab/release.yml"
#!/bin/bash
echo "Building $(git log -1)"
echo "---"
set -Eeuxo pipefail
./tools/make_requests
./tools/make_makefiles
autoreconf
cd build64
../configure -q -C --enable-win64 --enable-werror --with-mingw
make -s -j$(nproc)
cd ..
cd build32
../configure -q -C --enable-werror --with-mingw
make -s -j$(nproc)
cd ..
if ! test -s .git/rebase-merge/git-rebase-todo
then
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
git reset --hard
#!/bin/bash
echo "Building $(git log -1)"
echo "---"
set -Eeuxo pipefail
./tools/make_requests
./tools/make_makefiles
autoreconf
cd build64
../configure -C --enable-win64 --with-mingw BISON=/usr/local/opt/bison/bin/bison
make -s -j8
cd ..
git reset --hard
# CI script for building Wine
.wine-build:
stage: build
image: $CI_REGISTRY/wine/wine:debian-bullseye
interruptible: true
variables:
GIT_DEPTH: 0
cache:
- paths:
- ccache/
- key:
files:
- configure.ac
paths:
- build32/config.cache
- build64/config.cache
before_script:
- export BASEDIR="$PWD"
- export CCACHE_BASEDIR="$BASEDIR"
- export CCACHE_DIR="$BASEDIR/ccache"
- 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
rules:
- if: $CI_PIPELINE_SOURCE == 'merge_request_event'
artifacts:
expire_in: 1 day
paths:
- usr/local/
script:
- ./tools/gitlab/build-linux
build-mac:
extends: .wine-build
rules:
- if: $CI_PIPELINE_SOURCE == 'merge_request_event'
tags:
- mac
artifacts:
when: on_failure
paths:
- build64/config.log
- build32/config.log
script:
- export PATH="/usr/local/opt/ccache/libexec:$PATH"
- ./tools/gitlab/build-mac
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
variables:
GIT_STRATEGY: none
artifacts:
name: winetest
paths:
- winetest.exe
- winetest64.exe
script:
- mv usr/local/lib/wine/i386-windows/winetest.exe winetest.exe
- mv usr/local/lib/wine/x86_64-windows/winetest.exe winetest64.exe
# FROM line will be added dynamically
WORKDIR /tmp
RUN export DEBIAN_FRONTEND=noninteractive; \
echo 'path-exclude=/usr/share/doc/*' > /etc/dpkg/dpkg.cfg.d/99-exclude-cruft && \
echo 'path-exclude=/usr/share/locale/*' >> /etc/dpkg/dpkg.cfg.d/99-exclude-cruft && \
echo 'path-exclude=/usr/share/man/*' >> /etc/dpkg/dpkg.cfg.d/99-exclude-cruft && \
echo 'APT::Install-Recommends "false";' > /etc/apt/apt.conf && \
echo '#!/bin/sh' > /usr/sbin/policy-rc.d && \
echo 'exit 101' >> /usr/sbin/policy-rc.d && \
chmod +x /usr/sbin/policy-rc.d && \
dpkg --add-architecture i386 && \
apt-get update && \
apt-get install -y gcc gcc-mingw-w64-x86-64 gcc-mingw-w64-i686 gcc-multilib \
git autoconf flex bison perl gettext \
libasound2-dev:amd64 libasound2-dev:i386 \
libcapi20-dev:amd64 libcapi20-dev:i386 \
libcups2-dev:amd64 libcups2-dev:i386 \
libdbus-1-dev:amd64 libdbus-1-dev:i386 \
libfontconfig-dev:amd64 libfontconfig-dev:i386 \
libfreetype-dev:amd64 libfreetype-dev:i386 \
libgl1-mesa-dev:amd64 libgl1-mesa-dev:i386 \
libgnutls28-dev:amd64 libgnutls28-dev:i386 \
libgphoto2-dev:amd64 libgphoto2-dev:i386 \
libgstreamer-plugins-base1.0-dev:amd64 libgstreamer-plugins-base1.0-dev:i386 \
libice-dev:amd64 libice-dev:i386 \
libkrb5-dev:amd64 libkrb5-dev:i386 \
libldap-dev:amd64 libldap-dev:i386 \
libopenal-dev:amd64 libopenal-dev:i386 \
libosmesa6-dev:amd64 libosmesa6-dev:i386 \
libpcap-dev:amd64 libpcap-dev:i386 \
libpulse-dev:amd64 libpulse-dev:i386 \
libsane-dev:amd64 libsane-dev:i386 \
libsdl2-dev:amd64 libsdl2-dev:i386 \
libudev-dev:amd64 libudev-dev:i386 \
libusb-1.0-0-dev:amd64 libusb-1.0-0-dev:i386 \
libv4l-dev:amd64 libv4l-dev:i386 \
libvulkan-dev:amd64 libvulkan-dev:i386 \
libx11-dev:amd64 libx11-dev:i386 \
libxcomposite-dev:amd64 libxcomposite-dev:i386 \
libxcursor-dev:amd64 libxcursor-dev:i386 \
libxext-dev:amd64 libxext-dev:i386 \
libxi-dev:amd64 libxi-dev:i386 \
libxinerama-dev:amd64 libxinerama-dev:i386 \
libxrandr-dev:amd64 libxrandr-dev:i386 \
libxrender-dev:amd64 libxrender-dev:i386 \
libxxf86vm-dev:amd64 libxxf86vm-dev:i386 \
linux-libc-dev:amd64 linux-libc-dev:i386 \
ocl-icd-opencl-dev:amd64 ocl-icd-opencl-dev:i386 \
samba-dev:amd64 \
unixodbc-dev:amd64 unixodbc-dev:i386 \
x11proto-dev && \
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
USER gitlab
# CI script for creating the docker image used for Wine builds
build-image:
stage: image
rules:
- if: $CI_PIPELINE_SOURCE == 'push' && $CI_PROJECT_PATH == "wine/wine" && $CI_COMMIT_BRANCH == $CI_DEFAULT_BRANCH
changes:
- tools/gitlab/image.yml
- tools/gitlab/image.docker
image:
name: gcr.io/kaniko-project/executor:debug
entrypoint: [""]
variables:
IMAGE_SOURCE: "$CI_DEPENDENCY_PROXY_DIRECT_GROUP_IMAGE_PREFIX/debian:bullseye"
IMAGE_LOCAL: "$CI_REGISTRY_IMAGE:debian-bullseye"
DOCKER_FILE: "$CI_PROJECT_DIR/tools/gitlab/image.docker"
script:
- mkdir -p /kaniko/.docker
- echo "{\"auths\":{\"$CI_REGISTRY\":{\"auth\":\"$(printf "%s:%s" "$CI_REGISTRY_USER" "$CI_REGISTRY_PASSWORD" | base64 | tr -d '\n')\"},\"$CI_DEPENDENCY_PROXY_SERVER\":{\"auth\":\"$(printf "%s:%s" "$CI_DEPENDENCY_PROXY_USER" "$CI_DEPENDENCY_PROXY_PASSWORD" | base64 | tr -d '\n')\"}}}" > /kaniko/.docker/config.json
- sed -i "1iFROM $IMAGE_SOURCE" "$DOCKER_FILE"
- /kaniko/executor --context "$CI_PROJECT_DIR" --dockerfile "$DOCKER_FILE" --destination "$IMAGE_LOCAL"
# CI script for creating releases
create-release:
stage: deploy
image: registry.gitlab.com/gitlab-org/release-cli:latest
rules:
- if: $CI_COMMIT_TAG && $CI_PROJECT_PATH == "wine/wine"
script:
- VERSION=$(expr "$CI_COMMIT_TAG" ":" 'wine-\(.*\)')
- URL=$(grep -o "https://dl.winehq.org/.*" ANNOUNCE)
- FILEPATH=$(expr "$URL" ":" '.*\(/.*\)')
- |
sed -e '/^The source/,/^----------/d
/^----------/,$d
/^Bugs fixed/i--------
s/^\*\*\*/###/' ANNOUNCE >announce.md
- release-cli create
--name "Wine $VERSION"
--tag-name "$CI_COMMIT_TAG"
--released-at "$CI_COMMIT_TIMESTAMP"
--description announce.md
--assets-link "{\"name\":\"Source code\",\"url\":\"$URL\",\"link_type\":\"other\",\"filepath\":\"$FILEPATH\"}"
# CI script for testing Wine
.wine-test:
stage: test
image: $CI_REGISTRY/wine/wine:debian-bullseye
interruptible: true
variables:
GIT_STRATEGY: none
GECKO_VER: 2.47.2
MONO_VER: 7.0.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
test-linux-32:
extends: .wine-test
variables:
EXCLUDE_TESTS: "d3d10core:d3d10core d3d11:d3d11 d3d8:device d3d8:visual d3d9:d3d9ex d3d9:device d3d9:visual"
rules:
- if: $CI_PIPELINE_SOURCE == 'merge_request_event'
needs:
- job: build-linux
script:
- export WINETEST_COLOR=1
- wine usr/local/lib/wine/i386-windows/winetest.exe -q -q -o - -t gitlab -u $CI_JOB_URL -n $EXCLUDE_TESTS
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 -u $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 -u $CI_JOB_URL
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment