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