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