drm_hwcomposer: CI: Use fdo ci-templates
Currently a customized container is built every time that the CI pipeline
runs. Instead, use the freedesktop ci-templates to save and re-use the
customized container in the drm_hwcomposer container registry.
Signed-off-by: Deborah Brouwer <deborah.brouwer@collabora.com>
diff --git a/.ci/container/.gitlab-ci.yml b/.ci/container/.gitlab-ci.yml
new file mode 100644
index 0000000..85024f8
--- /dev/null
+++ b/.ci/container/.gitlab-ci.yml
@@ -0,0 +1,37 @@
+
+.incorporate-templates-commit:
+ variables:
+ FDO_DISTRIBUTION_TAG: "${HWC_TAG}--${CI_TEMPLATES_COMMIT}"
+
+.container:
+ stage: container
+ extends:
+ - .incorporate-templates-commit
+ variables:
+ FDO_REPO_SUFFIX: $CI_JOB_NAME
+ # no need to pull the whole repo to build the container image
+ GIT_STRATEGY: none
+
+ubuntu/x86_64_hwc:
+ extends:
+ - .fdo.container-build@ubuntu
+ - .container
+ variables:
+ FDO_DISTRIBUTION_VERSION: "24.10"
+ FDO_DISTRIBUTION_EXEC: 'bash .ci/container/ubuntu/x86_64_aospless.sh'
+ HWC_TAG: $UBUNTU_HWC_TAG
+
+.set-image:
+ extends:
+ - .incorporate-templates-commit
+ image: "$CI_REGISTRY_IMAGE/${HWC_IMAGE}:${FDO_DISTRIBUTION_TAG}"
+
+.use-ubuntu/x86_64_hwc:
+ extends:
+ - .fdo.container-build@ubuntu
+ - .set-image
+ variables:
+ HWC_TAG: $UBUNTU_HWC_TAG
+ HWC_IMAGE: $UBUNTU_HWC_IMAGE
+ needs:
+ - ubuntu/x86_64_hwc
diff --git a/.ci/container/ubuntu/x86_64_aospless.sh b/.ci/container/ubuntu/x86_64_aospless.sh
new file mode 100644
index 0000000..9b6e49d
--- /dev/null
+++ b/.ci/container/ubuntu/x86_64_aospless.sh
@@ -0,0 +1,52 @@
+#!/usr/bin/env bash
+
+# For any changes to this file to take effect, the UBUNTU_HWC_TAG has
+# to be bumped to generate a new image.
+
+set -ex
+
+DEPS=(
+ clang
+ llvm
+ clang-19
+ clang-tidy-19
+ clang-format-19
+ ca-certificates
+ git
+ libdrm-dev
+ blueprint-tools
+ libgtest-dev
+ make
+ python3
+ wget
+ sudo
+ rsync
+ lld
+ pkg-config
+ ninja-build
+ meson
+ python3-mako
+ python3-jinja2
+ python3-ply
+ python3-yaml
+ wget
+ gnupg
+ xz-utils
+)
+
+export DEBIAN_FRONTEND=noninteractive
+
+apt-get update
+apt-get upgrade -y
+
+apt-get install -y --no-remove --no-install-recommends "${DEPS[@]}"
+
+wget https://gitlab.freedesktop.org/-/project/5/uploads/cafa930dad28acf7ee44d50101d5e8f0/aospless_drm_hwcomposer_arm64.tar.xz
+
+sha256sum aospless_drm_hwcomposer_arm64.tar.xz
+if echo f792b1140861112f80c8a3a22e1af8e3eccf4910fe4449705e62d2032b713bf9 aospless_drm_hwcomposer_arm64.tar.xz | sha256sum --check; then
+ tar --no-same-owner -xf aospless_drm_hwcomposer_arm64.tar.xz -C /
+else
+ echo "Tar file check failed"
+ exit 1
+fi
diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml
index 3690573..3d39f17 100644
--- a/.gitlab-ci.yml
+++ b/.gitlab-ci.yml
@@ -1,5 +1,3 @@
-image: ubuntu:24.10
-
workflow:
rules:
- if: $CI_PIPELINE_SOURCE == 'merge_request_event'
@@ -7,51 +5,50 @@
variables:
DEBIAN_FRONTEND: noninteractive
+ CI_TEMPLATES_COMMIT: &ci-templates-commit e195d80f35b45cc73668be3767b923fd76c70ed5
+ FDO_UPSTREAM_REPO: "drm-hwcomposer/drm-hwcomposer"
+ UBUNTU_HWC_IMAGE: "ubuntu/x86_64_hwc"
+ UBUNTU_HWC_TAG: "20250218_hwc"
-before_script:
- - apt-get --quiet update --yes >/dev/null
- - apt-get --quiet install --yes clang-19 clang-tidy-19 clang-format-19 git libdrm-dev blueprint-tools libgtest-dev make >/dev/null
- - apt-get --quiet install --yes clang llvm make python3 wget sudo rsync lld pkg-config ninja-build meson >/dev/null
- - apt-get --quiet install --yes python3-mako python3-jinja2 python3-ply python3-yaml >/dev/null
+include:
+ - project: 'freedesktop/ci-templates'
+ ref: *ci-templates-commit
+ file:
+ - '/templates/ubuntu.yml'
+ - local: '.ci/container/.gitlab-ci.yml'
stages:
+ - container
- build
- tidy
- style
build:
stage: build
+ extends:
+ .use-ubuntu/x86_64_hwc
script:
- - mkdir -p install/arm64
- - cd ..
- - rm -f aospless_drm_hwcomposer_arm64.tar.xz
- - rm -rf aospless/*
- - wget https://gitlab.freedesktop.org/-/project/5/uploads/cafa930dad28acf7ee44d50101d5e8f0/aospless_drm_hwcomposer_arm64.tar.xz
- - tar xf aospless_drm_hwcomposer_arm64.tar.xz
- - rm -rf aospless/src
- - ln -s ../drm-hwcomposer/ aospless/src
- - make -C ./aospless install
- - cp -r aospless/install/* drm-hwcomposer/install/arm64
- - ls drm-hwcomposer/install/arm64
-
+ - ln -s "${CI_PROJECT_DIR}" "/aospless/src"
+ - make -C /aospless install
+ - mkdir -p "${CI_PROJECT_DIR}/install/arm64"
+ - cp -r /aospless/install/* "${CI_PROJECT_DIR}/install/arm64"
artifacts:
paths:
- - install/
+ - "${CI_PROJECT_DIR}/install/arm64"
expire_in: 1 week
tidy:
stage: tidy
+ extends:
+ .use-ubuntu/x86_64_hwc
script:
- - cd ..
- - rm -f aospless_drm_hwcomposer_arm64.tar.xz
- - rm -rf aospless/*
- - wget https://gitlab.freedesktop.org/-/project/5/uploads/cafa930dad28acf7ee44d50101d5e8f0/aospless_drm_hwcomposer_arm64.tar.xz
- - tar xf aospless_drm_hwcomposer_arm64.tar.xz
- - cd -
- - make -j$(nproc) -k -f .ci/Makefile
+ - cp -r /aospless ../
+ - make -j$(nproc) -k -f "${CI_PROJECT_DIR}/.ci/Makefile"
checkstyle:
stage: style
+ extends:
+ .use-ubuntu/x86_64_hwc
script: "./.ci/.gitlab-ci-checkcommit.sh"
artifacts:
when: on_failure