Alexandre Julliard : gitlab: Initial version of the Gitlab CI scripts.
Alexandre Julliard
julliard at winehq.org
Mon Jul 25 16:20:46 CDT 2022
Module: wine
Branch: master
Commit: 889fe64d9f2e1a0d9a3660bbb94e0a9b74155827
URL: https://gitlab.winehq.org/wine/wine/-/commit/889fe64d9f2e1a0d9a3660bbb94e0a9b74155827
Author: Alexandre Julliard <julliard at winehq.org>
Date: Mon Jul 25 12:25:20 2022 +0200
gitlab: Initial version of the Gitlab CI scripts.
Derived in part from the freedesktop.org config.
---
.gitlab-ci.yml | 9 +++++++
tools/gitlab/build.yml | 62 +++++++++++++++++++++++++++++++++++++++++++++++
tools/gitlab/image.docker | 55 +++++++++++++++++++++++++++++++++++++++++
tools/gitlab/image.yml | 21 ++++++++++++++++
4 files changed, 147 insertions(+)
diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml
new file mode 100644
index 00000000000..413745f6758
--- /dev/null
+++ b/.gitlab-ci.yml
@@ -0,0 +1,9 @@
+# main Gitlab CI script
+
+stages:
+ - image
+ - build
+
+include:
+ - local: "/tools/gitlab/image.yml"
+ - local: "/tools/gitlab/build.yml"
diff --git a/tools/gitlab/build.yml b/tools/gitlab/build.yml
new file mode 100644
index 00000000000..4f1ff0eddc5
--- /dev/null
+++ b/tools/gitlab/build.yml
@@ -0,0 +1,62 @@
+# CI script for building Wine
+
+.wine-build:
+ stage: build
+ image: $CI_REGISTRY/wine/wine:debian-bullseye
+ interruptible: true
+ cache:
+ - paths:
+ - ccache/
+ - key:
+ files:
+ - configure.ac
+ paths:
+ - build32/config.cache
+ - build64/config.cache
+ before_script:
+ - export CCACHE_BASEDIR="$PWD"
+ - export CCACHE_DIR="$PWD/ccache"
+ - export CCACHE_COMPILERCHECK=content
+ - export PATH="/usr/lib/ccache:$PATH"
+ - mkdir -p build32 build64
+
+build-all:
+ extends: .wine-build
+ rules:
+ - if: $CI_PIPELINE_SOURCE == 'merge_request_event'
+ artifacts:
+ when: on_failure
+ paths:
+ - build64/config.log
+ - build32/config.log
+ script:
+ - ./tools/make_requests
+ - ./tools/make_makefiles
+ - autoreconf
+ - cd build64
+ - ../configure -C --enable-win64 --enable-werror --with-mingw
+ - make -s -j$(nproc)
+ - cd ../build32
+ - ../configure -C --enable-werror --with-mingw
+ - make -s -j$(nproc)
+
+build-winetest:
+ extends: .wine-build
+ rules:
+ - if: $CI_PIPELINE_SOURCE == 'trigger' && $CI_COMMIT_BRANCH == $CI_DEFAULT_BRANCH
+ artifacts:
+ name: winetest
+ paths:
+ - winetest.exe
+ - winetest64.exe
+ script:
+ - cd build64
+ - ../configure -C --enable-win64 --with-mingw
+ - make -s -j$(nproc) programs/winetest/winetest.exe
+ - cd ../build32
+ - ../configure -C --with-mingw
+ - make -s -j$(nproc) programs/winetest/winetest.exe
+ - cd ..
+ - mv build32/programs/winetest/winetest.exe winetest.exe
+ - mv build64/programs/winetest/winetest.exe winetest64.exe
+ - chmod 644 winetest.exe winetest64.exe
diff --git a/tools/gitlab/image.docker b/tools/gitlab/image.docker
new file mode 100644
index 00000000000..b1835d6dd55
--- /dev/null
+++ b/tools/gitlab/image.docker
@@ -0,0 +1,55 @@
+# 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 \
+ libfreetype6-dev:amd64 libfreetype6-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 && \
+ apt-get clean
diff --git a/tools/gitlab/image.yml b/tools/gitlab/image.yml
new file mode 100644
index 00000000000..2108f5c85cc
--- /dev/null
+++ b/tools/gitlab/image.yml
@@ -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_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"
More information about the wine-cvs
mailing list