Skip to content
Snippets Groups Projects
Commit 677e9a72 authored by Jens Steidl's avatar Jens Steidl :baby_chick:
Browse files

- init rework of ci jobs for packaging & testing

parent 4acdf177
Branches
Tags
No related merge requests found
Pipeline #5574 failed
stages: # List of stages for jobs, and their order of execution
- build
- test
- packaging
variables:
EXLIBRIS_SDK_DIR: "/exlibris"
ROSETTASDK: "${EXLIBRIS_SDK_DIR}/7.3/dps-sdk-projects/dps-sdk-deposit/lib/" # base: https://github.com/ExLibrisGroup/Rosetta.dps-sdk-projects
IMAGE_TARGET: "$CI_REGISTRY_IMAGE/bookworm_xml_plugin4rosetta"
DOCKERFILE_DEB: "${CI_PROJECT_DIR}/gitlab-ci/Dockerfile_DEB"
IMAGE_TARGET_DEB: "${CI_REGISTRY_IMAGE}/debian12_${CI_PROJECT_NAME}"
IMAGE_BASE_DEB: "sdvharbor.slub-dresden.de/replication/debian:bookworm-slim"
IMAGE_BASE_ULX: "sdvharbor.slub-dresden.de/replication/ubuntu:jammy"
FF_USE_FASTZIP: "true"
# These can be specified per job or per pipeline
ARTIFACT_COMPRESSION_LEVEL: "fast"
CACHE_COMPRESSION_LEVEL: "fast"
# CI_DEBUG_TRACE: "true"
stages: # List of stages for jobs, and their order of execution
- build-env
- test-tool
- package-tool
- test-package
default:
image:
# use this image for all later stages that happen after the build stage
......@@ -21,9 +25,9 @@ default:
before_script: # These steps are run before EACH job.
- export ROSETTASDK="${ROSETTASDK}"
build-env-job: # This job runs in the build stage, which runs first.
stage: build
timeout: 30m
.build-env-job:
stage: build-env
timeout: 10m
tags:
- "docker"
image:
......@@ -41,7 +45,7 @@ build-env-job: # This job runs in the build stage, which runs first.
- >-
/kaniko/executor
--context "${CI_PROJECT_DIR}"
--dockerfile "${CI_PROJECT_DIR}/gitlab-ci/Dockerfile"
--dockerfile "${DOCKERFILE}"
--destination "${IMAGE_TARGET}:latest"
--build-arg "GITDIR=${CI_PROJECT_DIR}"
--cache=true
......@@ -51,23 +55,85 @@ build-env-job: # This job runs in the build stage, which runs first.
--use-new-run
--ignore-var-run
test-job:
stage: test
timeout: 3h
build-debian-env-job:
extends: .build-env-job
variables:
DOCKERFILE: ${DOCKERFILE_DEB}
IMAGE_TARGET: ${IMAGE_TARGET_DEB}
test-debian-job:
stage: test-tool
timeout: 5m
tags:
- "docker"
image:
name: "${IMAGE_TARGET_DEB}:latest"
script:
- ls -lha /exlibris/
- ROSETTASDK=$ROSETTASDK make -e check_prerequisites
- ROSETTASDK=$ROSETTASDK make -e test
packaging-job:
stage: packaging
timeout: 3h
package-debian-job:
stage: package-tool
timeout: 5m
image:
name: "${IMAGE_TARGET_DEB}:latest"
tags:
- "docker"
script:
- ROSETTASDK=$ROSETTASDK make -e
# HINT: current working dir == '/builds/digital-preservation/${CI_PROJECT_NAME}' as root
# bundle project into jar
- ROSETTASDK=${ROSETTASDK} make -e
# retrieve version infos
- REVISION="1"
- BRANCH="$(([ -z "${CI_COMMIT_BRANCH}" ] && echo ${CI_COMMIT_TAG} || echo ${CI_COMMIT_BRANCH}) | sed "s#[^A-Za-z0-9\.~+-]##g")" # use tag name in tag pipelines, filter characters based on https://www.debian.org/doc/debian-policy/ch-controlfields.html#s-f-version
- VERSION="$(git rev-list HEAD --count)-${BRANCH}"
- ARCHITECTURE="all"
# create build dir structure
- DEB_BUILD_DIR="${CI_PROJECT_NAME}_${VERSION}-${REVISION}_${ARCHITECTURE}"
- mkdir -p ${DEB_BUILD_DIR}/DEBIAN
- DEB_JAR_DIR="${DEB_BUILD_DIR}/usr/lib/java"
- mkdir -p ${DEB_JAR_DIR}
# copy project files to be packaged
- cp ./*.jar ${DEB_JAR_DIR}/
# copy & rename deb control file template
- cp gitlab-ci/${CI_PROJECT_NAME}.control ${DEB_BUILD_DIR}/DEBIAN/control
# set package version
- sed -i "s#VERSION_PLACEHOLDER#${VERSION}-${REVISION}#g" ${DEB_BUILD_DIR}/DEBIAN/control
- sed -i "s#ARCHITECTURE_PLACEHOLDER#${ARCHITECTURE}#g" "${DEB_BUILD_DIR}/DEBIAN/control"
# add checksums
- pushd ${DEB_BUILD_DIR}
- md5sum $(find * -type f -not -path 'DEBIAN/*') > DEBIAN/md5sums
- popd
# build binary deb package
- dpkg-deb --build --root-owner-group ${DEB_BUILD_DIR}/
artifacts:
paths:
- ./*.jar
# package name: ${CI_PROJECT_NAME}_[VERSION]-[REVISION]_[ARCHITECTURE].deb
- "*.deb"
test-install-debian-job:
stage: test-package
timeout: 5m
image:
# HINT: debian base image to simulate an installation target
name: "${IMAGE_BASE_DEB}"
tags:
- "docker"
script:
- apt update
- apt install -y ./${CI_PROJECT_NAME}*.deb
- java -jar /usr/local/java/XmlFormatValidationPlugin.jar
test-install-ubuntu-job:
stage: test-package
timeout: 5m
image:
# HINT: ubuntu base image to simulate an installation target
name: "${IMAGE_BASE_ULX}"
tags:
- "docker"
script:
- apt update
- apt install -y ./${CI_PROJECT_NAME}*.deb
- java -jar /usr/local/java/XmlFormatValidationPlugin.jar
\ No newline at end of file
File moved
Package: xml-plugin4rosetta
Version: VERSION_PLACEHOLDER
Architecture: ARCHITECTURE_PLACEHOLDER
Maintainer: SLUBArchiv.digital <langzeitarchiv@slub-dresden.de>
Description: This is a Java-based XML format validator plugin (for AIS Rosetta) or standalone CLI application.
Homepage: https://git.slub-dresden.de/digital-preservation/xml_plugin4rosetta
Section: main
Priority: optional
Depends: bash, gawk, mawk, coreutils, file, util-linux, sed, findutils, make, default-jre, libcommons-cli-java
Recommends: slubarchiv-xml-catalog
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment