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: Michael Stefaniuc <mstefani@winehq.org>
This commit is contained in:
parent
56eeaa9b30
commit
d709299287
8 changed files with 315 additions and 0 deletions
12
.gitlab-ci.yml
Normal file
12
.gitlab-ci.yml
Normal file
|
@ -0,0 +1,12 @@
|
||||||
|
# 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"
|
28
tools/gitlab/build-linux
Executable file
28
tools/gitlab/build-linux
Executable file
|
@ -0,0 +1,28 @@
|
||||||
|
#!/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
|
17
tools/gitlab/build-mac
Executable file
17
tools/gitlab/build-mac
Executable file
|
@ -0,0 +1,17 @@
|
||||||
|
#!/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
|
80
tools/gitlab/build.yml
Normal file
80
tools/gitlab/build.yml
Normal file
|
@ -0,0 +1,80 @@
|
||||||
|
# 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
|
62
tools/gitlab/image.docker
Normal file
62
tools/gitlab/image.docker
Normal file
|
@ -0,0 +1,62 @@
|
||||||
|
# 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
|
21
tools/gitlab/image.yml
Normal file
21
tools/gitlab/image.yml
Normal file
|
@ -0,0 +1,21 @@
|
||||||
|
# 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"
|
22
tools/gitlab/release.yml
Normal file
22
tools/gitlab/release.yml
Normal file
|
@ -0,0 +1,22 @@
|
||||||
|
# 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\"}"
|
73
tools/gitlab/test.yml
Normal file
73
tools/gitlab/test.yml
Normal file
|
@ -0,0 +1,73 @@
|
||||||
|
# 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
|
Loading…
Add table
Reference in a new issue