mirror of
https://gitlab.winehq.org/wine/vkd3d.git
synced 2024-09-13 09:16:14 -07:00
ci: Introduce a CI pipeline for GitLab.
This commit is contained in:
parent
c39c5b3907
commit
4a3ad750e0
Notes:
Alexandre Julliard
2023-08-29 22:15:58 +02:00
Approved-by: Henri Verbeet (@hverbeet) Approved-by: Alexandre Julliard (@julliard) Merge-Request: https://gitlab.winehq.org/wine/vkd3d/-/merge_requests/271
7
.gitlab-ci.yml
Normal file
7
.gitlab-ci.yml
Normal file
@ -0,0 +1,7 @@
|
||||
stages:
|
||||
- image
|
||||
- build
|
||||
|
||||
include:
|
||||
- local: "/gitlab/image.yml"
|
||||
- local: "/gitlab/build.yml"
|
19
gitlab/build-linux
Executable file
19
gitlab/build-linux
Executable file
@ -0,0 +1,19 @@
|
||||
#!/bin/bash
|
||||
|
||||
echo "Building $(git log -1)"
|
||||
echo "---"
|
||||
|
||||
COMMIT=$(git rev-parse --short HEAD)
|
||||
|
||||
set -Eeuxo pipefail
|
||||
|
||||
./autogen.sh
|
||||
rm -fr build
|
||||
mkdir build
|
||||
cd build
|
||||
../configure --enable-demos && make -j$(nproc) && make -j$(nproc) crosstest || touch ../pipeline_failed
|
||||
|
||||
mkdir -p ../artifacts/$COMMIT
|
||||
rsync -Rr doc/* tests/*.exe ../artifacts/$COMMIT
|
||||
|
||||
git reset --hard
|
29
gitlab/build.yml
Normal file
29
gitlab/build.yml
Normal file
@ -0,0 +1,29 @@
|
||||
.build:
|
||||
stage: build
|
||||
rules:
|
||||
- if: $CI_PIPELINE_SOURCE == 'merge_request_event'
|
||||
image: $CI_REGISTRY/wine/vkd3d:debian-bookworm
|
||||
interruptible: true
|
||||
needs:
|
||||
- job: build-image
|
||||
optional: true
|
||||
dependencies: []
|
||||
script:
|
||||
- git config --global --add safe.directory $CI_PROJECT_DIR
|
||||
- git clean -fdx
|
||||
- git reset --hard
|
||||
- rm -fr .git/rebase-merge
|
||||
- mkdir artifacts
|
||||
- cat /proc/cpuinfo > artifacts/cpuinfo.txt
|
||||
- cat /proc/meminfo > artifacts/meminfo.txt
|
||||
- vulkaninfo > artifacts/vulkaninfo.txt
|
||||
- git rebase $CI_MERGE_REQUEST_DIFF_BASE_SHA --exec ./gitlab/build-linux
|
||||
- if [ -f pipeline_failed ] ; then exit 1 ; fi
|
||||
artifacts:
|
||||
when: always
|
||||
expire_in: 1 day
|
||||
paths:
|
||||
- artifacts
|
||||
|
||||
build:
|
||||
extends: .build
|
40
gitlab/image.docker
Normal file
40
gitlab/image.docker
Normal file
@ -0,0 +1,40 @@
|
||||
# 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 dist-upgrade -y && \
|
||||
apt-get install -y build-essential pkg-config gcc-multilib gcc-mingw-w64 \
|
||||
autoconf automake libtool flex bison \
|
||||
git ca-certificates rsync \
|
||||
doxygen doxygen-latex graphviz \
|
||||
mesa-vulkan-drivers mesa-vulkan-drivers:i386 \
|
||||
vulkan-tools spirv-headers \
|
||||
libvulkan-dev libvulkan-dev:i386 \
|
||||
libncurses-dev libncurses-dev:i386 \
|
||||
libxcb1-dev libxcb1-dev:i386 \
|
||||
libxcb-util-dev libxcb-util-dev:i386 \
|
||||
libxcb-icccm4-dev libxcb-icccm4-dev:i386 \
|
||||
libxcb-keysyms1-dev libxcb-keysyms1-dev:i386 && \
|
||||
git clone --depth 1 --branch wine-3.21 https://gitlab.winehq.org/wine/wine.git && \
|
||||
cd wine && \
|
||||
mkdir build && \
|
||||
cd build && \
|
||||
../configure --without-x --without-freetype && \
|
||||
make tools/widl/widl && \
|
||||
cp tools/widl/widl /usr/local/bin && \
|
||||
cd ../.. && \
|
||||
rm -rf wine && \
|
||||
apt-get clean && \
|
||||
useradd -m gitlab
|
||||
|
||||
USER gitlab
|
20
gitlab/image.yml
Normal file
20
gitlab/image.yml
Normal file
@ -0,0 +1,20 @@
|
||||
build-image:
|
||||
stage: image
|
||||
rules:
|
||||
- if: $CI_PIPELINE_SOURCE == 'push' && $CI_PROJECT_PATH == "wine/vkd3d" && $CI_COMMIT_BRANCH == $CI_DEFAULT_BRANCH
|
||||
changes:
|
||||
- .gitlab-ci.yml
|
||||
- gitlab/image.yml
|
||||
- gitlab/image.docker
|
||||
image:
|
||||
name: gcr.io/kaniko-project/executor:debug
|
||||
entrypoint: [""]
|
||||
variables:
|
||||
IMAGE_SOURCE: "$CI_DEPENDENCY_PROXY_DIRECT_GROUP_IMAGE_PREFIX/debian:bookworm"
|
||||
IMAGE_LOCAL: "$CI_REGISTRY_IMAGE:debian-bookworm"
|
||||
DOCKER_FILE: "$CI_PROJECT_DIR/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"
|
Loading…
Reference in New Issue
Block a user