Browse Source

Maintenance: Automate testing of packager.io packages

(cherry picked from commit 25bdaa11b621d9bce4083732323e94d468fe43d4)

aefb873e Maintenance: Automate testing of packager.io packages
f1acc0a8 Make branch configurable
767a6040 Try to add to CI pipeline
b1f63c8b Fix class name
acc7c2ec Fix variables key
49ff547a Use docker image
72977a5e Switch to sh
76df04fa Switch to fixed branch name
a487d5dc Debug
441167db debug
82c69a82 Avoid config mount
cff3b272 Add debian 11, improve cleanup
2870ae22 Improve cleanup
fd53b8e7 Add ubuntu 24.04
2bbf0a65 Refactor, add ubuntu 20.04 and 22.04
48e02fda Fix subshell
6f9f203c Fix scenario script
133397bd Fix scenario script
39716f31 Switch to noninteractive deb
20ee2cf5 Improve cleanup
4a55b6c9 Add rhel 9
6f35a6ab Add rhel 8
e6bee1b0 Improve curl check and un-silence apt
d495fefa Solve concurrency failures
e1d48a8d Remove sleep
4d0ca19b Use ipv4 for testing
7026d15b Add sles 15
fa97646d Fix suse, drop hardcoded branch
4ba95d11 Fix redis on suse, revert CI stage
0e5dfdef Add interruptible
13406384 Fix rhel-8
f7f01a79 Add missing dependencies
df0af150 Drop dep workarounds
752ea259 Fix branch name interpolation
607bd5a6 reduce redundancy
65c117c7 Add update test, simlifications
a2bcbb3c Only enable for scheduled and manual pipelines

Co-authored-by: Martin Gruner <mg@zammad.com>
Martin Gruner 5 months ago
parent
commit
0d42c95552

+ 61 - 0
.gitlab/ci/test/packager.io.yml

@@ -0,0 +1,61 @@
+.packager.io:
+  image: docker
+  stage: test
+  interruptible: false
+  rules:
+  - if: $CI_PIPELINE_SOURCE == "schedule" || $CI_PIPELINE_SOURCE == "web"
+  services: []
+  cache: []
+  before_script: []
+  script:
+    - .gitlab/packager.io/run-scenarios.sh
+  after_script:
+    - .gitlab/packager.io/cleanup.sh
+
+packager.io:debian-11:
+  extends: [.packager.io]
+  variables:
+    DISTRIBUTION: debian
+    DISTRIBUTION_VERSION: '11'
+
+packager.io:debian-12:
+  extends: [.packager.io]
+  variables:
+    DISTRIBUTION: debian
+    DISTRIBUTION_VERSION: '12'
+
+packager.io:ubuntu-20.04:
+  extends: [.packager.io]
+  variables:
+    DISTRIBUTION: ubuntu
+    DISTRIBUTION_VERSION: '20.04'
+
+packager.io:ubuntu-22.04:
+  extends: [.packager.io]
+  variables:
+    DISTRIBUTION: ubuntu
+    DISTRIBUTION_VERSION: '22.04'
+
+packager.io:ubuntu-24.04:
+  extends: [.packager.io]
+  variables:
+    DISTRIBUTION: ubuntu
+    DISTRIBUTION_VERSION: '24.04'
+
+packager.io:rhel-8:
+  extends: [.packager.io]
+  variables:
+    DISTRIBUTION: rhel
+    DISTRIBUTION_VERSION: '8'
+
+packager.io:rhel-9:
+  extends: [.packager.io]
+  variables:
+    DISTRIBUTION: rhel
+    DISTRIBUTION_VERSION: '9'
+
+packager.io:sles-15:
+  extends: [.packager.io]
+  variables:
+    DISTRIBUTION: sles
+    DISTRIBUTION_VERSION: '15'

+ 15 - 0
.gitlab/packager.io/cleanup.sh

@@ -0,0 +1,15 @@
+#!/bin/sh
+
+set -eu
+
+cd "$(dirname $0)"
+
+docker compose down --timeout 0
+docker volume prune --all --force
+
+DELETE_IMAGES=$(docker image ls "zammad-packagerio-ci-${CI_JOB_ID}" -q)
+if [ -n "$DELETE_IMAGES" ]
+then
+  # shellcheck disable=SC2086
+  docker image rm $DELETE_IMAGES
+fi

+ 16 - 0
.gitlab/packager.io/docker-compose.yml

@@ -0,0 +1,16 @@
+---
+name: zammad-packagerio-ci-${CI_JOB_ID}
+services:
+  zammad:
+    image: zammad-packagerio-ci-${CI_JOB_ID}:${DISTRIBUTION}-${DISTRIBUTION_VERSION}
+    build:
+      context: "."
+      platforms: ["linux/amd64"]
+      dockerfile: dockerfiles/Dockerfile.${DISTRIBUTION}
+      args:
+        DISTRIBUTION: ${DISTRIBUTION}
+        DISTRIBUTION_VERSION: ${DISTRIBUTION_VERSION}
+        CI_COMMIT_REF_NAME: ${CI_COMMIT_REF_NAME}
+    privileged: true
+    restart: unless-stopped
+    expose: ["80"]

+ 9 - 0
.gitlab/packager.io/dockerfiles/Dockerfile.debian

@@ -0,0 +1,9 @@
+ARG DISTRIBUTION_VERSION
+FROM docker.io/library/debian:${DISTRIBUTION_VERSION}
+ARG DISTRIBUTION
+ARG DISTRIBUTION_VERSION
+ARG CI_COMMIT_REF_NAME
+ADD dockerfiles dockerfiles
+ADD scenarios scenarios
+RUN bash /dockerfiles/bootstrap.debian.sh
+ENTRYPOINT [ "/sbin/init" ]

+ 9 - 0
.gitlab/packager.io/dockerfiles/Dockerfile.rhel

@@ -0,0 +1,9 @@
+ARG DISTRIBUTION_VERSION
+FROM docker.io/library/rockylinux:${DISTRIBUTION_VERSION}
+ARG DISTRIBUTION
+ARG DISTRIBUTION_VERSION
+ARG CI_COMMIT_REF_NAME
+ADD dockerfiles dockerfiles
+ADD scenarios scenarios
+RUN bash /dockerfiles/bootstrap.rhel.sh
+ENTRYPOINT [ "/sbin/init" ]

+ 9 - 0
.gitlab/packager.io/dockerfiles/Dockerfile.sles

@@ -0,0 +1,9 @@
+ARG DISTRIBUTION_VERSION
+FROM docker.io/opensuse/leap:${DISTRIBUTION_VERSION}
+ARG DISTRIBUTION
+ARG DISTRIBUTION_VERSION
+ARG CI_COMMIT_REF_NAME
+ADD dockerfiles dockerfiles
+ADD scenarios scenarios
+RUN bash /dockerfiles/bootstrap.sles.sh
+ENTRYPOINT [ "/sbin/init" ]

+ 9 - 0
.gitlab/packager.io/dockerfiles/Dockerfile.ubuntu

@@ -0,0 +1,9 @@
+ARG DISTRIBUTION_VERSION
+FROM docker.io/library/ubuntu:${DISTRIBUTION_VERSION}
+ARG DISTRIBUTION
+ARG DISTRIBUTION_VERSION
+ARG CI_COMMIT_REF_NAME
+ADD dockerfiles dockerfiles
+ADD scenarios scenarios
+RUN bash /dockerfiles/bootstrap.ubuntu.sh
+ENTRYPOINT [ "/sbin/init" ]

+ 12 - 0
.gitlab/packager.io/dockerfiles/bootstrap.debian.sh

@@ -0,0 +1,12 @@
+#!/usr/bin/bash
+
+set -eu
+
+export DEBIAN_FRONTEND=noninteractive
+
+cd "$(dirname $0)"
+
+bash ./shared.deb.sh
+
+echo "deb [signed-by=/usr/share/keyrings/zammad-archive-keyring.gpg] https://dl.packager.io/srv/deb/zammad/zammad/${CI_COMMIT_REF_NAME}/debian ${DISTRIBUTION_VERSION} main" > /etc/apt/sources.list.d/zammad.list
+apt-get update && apt-get install -y --download-only zammad

+ 26 - 0
.gitlab/packager.io/dockerfiles/bootstrap.rhel.sh

@@ -0,0 +1,26 @@
+#!/usr/bin/bash
+
+set -eu
+
+dnf update -y
+
+dnf install -y systemd epel-release
+
+rpm --import https://artifacts.elastic.co/GPG-KEY-elasticsearch
+echo "[elasticsearch-7.x]
+name=Elasticsearch repository for 7.x packages
+baseurl=https://artifacts.elastic.co/packages/7.x/yum
+gpgcheck=1
+gpgkey=https://artifacts.elastic.co/GPG-KEY-elasticsearch
+enabled=1
+autorefresh=1
+type=rpm-md"| tee /etc/yum.repos.d/elasticsearch-7.x.repo
+dnf install -y elasticsearch
+
+rpm --import https://dl.packager.io/srv/zammad/zammad/key
+
+curl -o /etc/yum.repos.d/zammad.repo \
+  https://dl.packager.io/srv/zammad/zammad/${CI_COMMIT_REF_NAME}/installer/el/${DISTRIBUTION_VERSION}.repo
+
+dnf update -y
+dnf install -y --downloadonly zammad

+ 26 - 0
.gitlab/packager.io/dockerfiles/bootstrap.sles.sh

@@ -0,0 +1,26 @@
+#!/usr/bin/bash
+
+set -eu
+
+zypper update -y
+
+zypper install -y systemd
+
+rpm --import https://artifacts.elastic.co/GPG-KEY-elasticsearch
+echo "[elasticsearch-7.x]
+name=Elasticsearch repository for 7.x packages
+baseurl=https://artifacts.elastic.co/packages/7.x/yum
+gpgcheck=1
+gpgkey=https://artifacts.elastic.co/GPG-KEY-elasticsearch
+enabled=1
+autorefresh=1
+type=rpm-md"| tee /etc/zypp/repos.d/elasticsearch-7.x.repo
+zypper install -y elasticsearch
+
+rpm --import https://dl.packager.io/srv/zammad/zammad/key
+
+curl -o /etc/zypp/repos.d/zammad.repo \
+  https://dl.packager.io/srv/zammad/zammad/${CI_COMMIT_REF_NAME}/installer/sles/${DISTRIBUTION_VERSION}.repo
+
+zypper update -y
+zypper install -y --download-only zammad

Some files were not shown because too many files changed in this diff