Skip to content
Snippets Groups Projects
Verified Commit 845e2e82 authored by Andreas Romeyke's avatar Andreas Romeyke
Browse files

- init gitlab CICD files

parent bb1e180b
No related branches found
No related tags found
No related merge requests found
Pipeline #6932 failed
stages: # List of stages for jobs, and their order of execution
- prebuildtest
- build
- pretest
- unittest
- secret_detection
variables:
EXTLIB: "/usr/local/perl5/"
PERL5LIB: "$EXTLIB/lib/perl5/:lib"
# Make sure to use only codenames that are supported by SLUB's Debian repo server!
DEBIAN_DEFAULT_RELEASE: "bookworm"
DEBIAN_RELEASES: "${DEBIAN_DEFAULT_RELEASE}"
IMAGE_TARGET: "${HARBOR_HOST}/${HARBOR_PROJECT}/${DEBIAN_DEFAULT_RELEASE}_${HARBOR_PROJECT}"
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"
CACHEDIR: "${CI_PROJECT_NAME}/${CI_COMMIT_BRANCH}/"
default:
timeout: 30m
image:
# use this image for all later stages that happen after the build stage
name: "${IMAGE_TARGET}:latest"
before_script: # These steps are run before EACH job.
- export PERL5LIB
- export PATH="$PATH:$EXTLIB/bin"
- export Log4perl=1
cache:
paths:
- ${CACHEDIR}
#- docker login -u ${HARBOR_USER} -p ${HARBOR_PASSWORD} ${HARBOR_HOST}
#after_script:
#- docker logout
prebuildtest-job:
stage: prebuildtest
tags:
- "shell"
before_script: []
script:
- find ./make/ -type f -name "*.sh" -exec
shellcheck --check-sourced --color=always --norc --shell=bash
--exclude=SC2034,SC2154 \{\} \;
build-env-job: # This job runs in the build stage, which runs first.
stage: build
tags:
- "docker"
image:
# Use Kaniko base image to build a Docker image to use as the base image for later jobs.
name: gcr.io/kaniko-project/executor:debug
entrypoint: [""]
# Do not run the before_script tasks here, they wouldn't be included in the Docker image. Instead, provide an empty list of tasks.
before_script: []
# docu: https://docs.gitlab.com/ee/ci/docker/using_kaniko.html, this is basically copy-pasted from there
script:
- mkdir -p /kaniko/.docker;
- echo "{\"auths\":{\"${HARBOR_HOST}\":{\"auth\":\"$(echo -n ${HARBOR_USERNAME}:${HARBOR_PASSWORD} | base64)\"}},\"$(printf "%s" "$CI_DEPENDENCY_PROXY_SERVER" | cut -d':' -f1)\":{\"auth\":\"$(printf "%s:%s" "$CI_DEPENDENCY_PROXY_USER" "$CI_DEPENDENCY_PROXY_PASSWORD" | base64 | tr -d '\n')\"}}}" > /kaniko/.docker/config.json
- echo "CI_PROJECT_DIR=${CI_PROJECT_DIR}";
# In this task, Kaniko executor is called to build the Image based on the Dockerfile provided with "--dockerfile".
- >-
/kaniko/executor
--context "${CI_PROJECT_DIR}"
--dockerfile "${CI_PROJECT_DIR}/gitlab-ci/Dockerfile"
--destination "${IMAGE_TARGET}:latest"
--build-arg "GITDIR=${CI_PROJECT_DIR}"
--cache=true
--cache-repo=${CI_REGISTRY_IMAGE}
--cache-copy-layers=true
--snapshot-mode=redo
--use-new-run
--ignore-var-run
dependencies:
- build-pre-job
perl-unit-test-job: # This job runs in the test stage.
stage: unittest # It only starts when the job in the build stage completes successfully.
timeout: 60m
tags:
- "docker"
script:
- prove -l t/
perl-quality-test-job: # This job runs in the test stage.
stage: pretest # It only starts when the job in the build stage completes successfully.
timeout: 30m
tags:
- "docker"
script:
- prove -l xt/
ARG DEBIAN_RELEASE
FROM sdvharbor.slub-dresden.de/replication/debian:${DEBIAN_RELEASE}-slim
# Do NOT delete "ARG DEBIAN_RELEASE" line, it's needed because of
# https://docs.docker.com/engine/reference/builder/#understand-how-arg-and-from-interact
ARG GITDIR
ENV DEBIAN_FRONTEND=noninteractive
ENV EXTDPKG="extdpkg"
ENV EXTLIB="/usr/local/perl5/"
ENV PERL5LIB="$EXTLIB/lib/perl5/:lib"
ENV PATH="$PATH:$EXTLIB/bin"
ENV PERL_CPANM_HOME="/cpanm/"
RUN apt-get update; \
apt-get install -y --no-install-recommends gnupg wget; \
wget -O - http://sdvdebianrepo.slub-dresden.de/deb-repository/pub.gpg.key | apt-key add - ; \
echo "deb http://sdvdebianrepo.slub-dresden.de/deb-repository "${DEBIAN_RELEASE}" main" > /etc/apt/sources.list.d/slub.list;
RUN if [ -f /etc/apt/sources.list ]; then \
sed -i -e "s/^\(\(deb\|Components\).*main\( contrib\)\?\)$/\1 non-free/g" /etc/apt/sources.list; \
cat /etc/apt/sources.list; \
fi
RUN find /etc/apt/sources.list.d/ -type f -exec sed -i -e "s/^\(\(deb\|Components\).*main\( contrib\)\?\)$/\1 non-free/g" \{\} \; ; \
find /etc/apt/sources.list.d/ -type f -exec cat \{\} \; ;
RUN apt-get update; \
apt-get install -y --no-install-recommends \
apt-file \
apt-utils \
asciidoc-base \
asciidoctor \
bash \
build-essential \
coreutils \
cpanminus \
dh-make-perl\
git \
libc-dev-bin \
libc6-dev \
libperl-prereqscanner-perl \
libperl-version-perl \
libsys-cpu-perl \
&& rm -rf /var/lib/apt/lists/* \
;
# dh-make-perl löst über apt-file Datenbank das Perl-Modul auf
RUN apt-file update;
RUN mkdir -p "$EXTLIB"
RUN mkdir -p "$PERL_CPANM_HOME"
RUN cpanm -L "$EXTLIB" --notest --verbose --no-interactive \
Pod::Autopod \
Test::Retry \
Perl::Critic::Policy::Compatibility::PerlMinimumVersionAndWhy \
Perl::Critic::Policy::Miscellanea::RequireRcsKeywords \
Perl::Critic::Policy::Subroutines::ProhibitCallsToUndeclaredSubs \
Perl::Critic::Policy::Subroutines::ProhibitCallsToUnexportedSubs \
Perl::Critic::Policy::ValuesAndExpressions::ProhibitFiletest_f \
Perl::Critic::Policy::Bangs::ProhibitDebuggingModules \
Perl::Critic::Policy::Bangs::ProhibitNumberedNames \
Perl::Critic::Policy::CognitiveComplexity::ProhibitExcessCognitiveComplexity \
Perl::Critic::Policy::Compatibility::PodMinimumVersion \
Perl::Critic::Policy::CompileTime \
Perl::Critic::Policy::Modules::RequireExplicitInclusion \
Perl::Critic::Policy::Moose::ProhibitDESTROYMethod \
Perl::Critic::Policy::Moose::ProhibitLazyBuild \
Perl::Critic::Policy::Moose::ProhibitMultipleWiths \
Perl::Critic::Policy::Moose::ProhibitNewMethod \
Perl::Critic::Policy::Moose::RequireCleanNamespace \
Perl::Critic::Policy::Moose::RequireMakeImmutable \
Perl::Critic::Policy::Perlsecret \
Perl::Critic::Policy::TooMuchCode::ProhibitDuplicateLiteral \
Perl::Critic::Policy::TooMuchCode::ProhibitLargeBlock \
Perl::Critic::Policy::TooMuchCode::ProhibitUnnecessaryUTF8Pragma \
Perl::Critic::Policy::TooMuchCode::ProhibitUnusedImport \
Perl::Critic::Policy::ValuesAndExpressions::RestrictLongStrings \
Perl::Critic::Policy::Variables::ProhibitLoopOnHash \
Perl::Critic::Policy::Compatibility::PerlMinimumVersionAndWhy \
Perl::Critic::Policy::Miscellanea::RequireRcsKeywords \
Perl::Critic::Policy::Subroutines::ProhibitCallsToUndeclaredSubs \
Perl::Critic::Policy::Subroutines::ProhibitCallsToUnexportedSubs \
Perl::Critic::Policy::ValuesAndExpressions::ProhibitFiletest_f \
Perl::Critic::Policy::Bangs::ProhibitDebuggingModules \
Perl::Critic::Policy::Bangs::ProhibitNumberedNames \
Perl::Critic::Policy::CognitiveComplexity::ProhibitExcessCognitiveComplexity \
Perl::Critic::Policy::Compatibility::PodMinimumVersion \
Perl::Critic::Policy::CompileTime \
Perl::Critic::Policy::Modules::RequireExplicitInclusion \
Perl::Critic::Policy::Moose::ProhibitDESTROYMethod \
Perl::Critic::Policy::Moose::ProhibitLazyBuild \
Perl::Critic::Policy::Moose::ProhibitMultipleWiths \
Perl::Critic::Policy::Moose::ProhibitNewMethod \
Perl::Critic::Policy::Moose::RequireCleanNamespace \
Perl::Critic::Policy::Moose::RequireMakeImmutable \
Perl::Critic::Policy::Perlsecret \
Perl::Critic::Policy::TooMuchCode::ProhibitDuplicateLiteral \
Perl::Critic::Policy::TooMuchCode::ProhibitLargeBlock \
Perl::Critic::Policy::TooMuchCode::ProhibitUnnecessaryUTF8Pragma \
Perl::Critic::Policy::TooMuchCode::ProhibitUnusedImport \
Perl::Critic::Policy::ValuesAndExpressions::RestrictLongStrings \
Perl::Critic::Policy::Variables::ProhibitLoopOnHash \
Perl::Critic::Policy::Compatibility::PerlMinimumVersionAndWhy \
Perl::Critic::Policy::Miscellanea::RequireRcsKeywords \
Perl::Critic::Policy::Subroutines::ProhibitCallsToUndeclaredSubs \
Perl::Critic::Policy::Subroutines::ProhibitCallsToUnexportedSubs \
Perl::Critic::Policy::ValuesAndExpressions::ProhibitFiletest_f \
Perl::Critic::Policy::Bangs::ProhibitDebuggingModules \
Perl::Critic::Policy::Bangs::ProhibitNumberedNames \
Perl::Critic::Policy::CognitiveComplexity::ProhibitExcessCognitiveComplexity \
Perl::Critic::Policy::Compatibility::PodMinimumVersion \
Perl::Critic::Policy::CompileTime \
Perl::Critic::Policy::Modules::RequireExplicitInclusion \
Perl::Critic::Policy::Moose::ProhibitDESTROYMethod \
Perl::Critic::Policy::Moose::ProhibitLazyBuild \
Perl::Critic::Policy::Moose::ProhibitMultipleWiths \
Perl::Critic::Policy::Moose::ProhibitNewMethod \
Perl::Critic::Policy::Moose::RequireCleanNamespace \
Perl::Critic::Policy::Moose::RequireMakeImmutable \
Perl::Critic::Policy::Perlsecret \
Perl::Critic::Policy::TooMuchCode::ProhibitDuplicateLiteral \
Perl::Critic::Policy::TooMuchCode::ProhibitLargeBlock \
Perl::Critic::Policy::TooMuchCode::ProhibitUnnecessaryUTF8Pragma \
Perl::Critic::Policy::TooMuchCode::ProhibitUnusedImport \
Perl::Critic::Policy::ValuesAndExpressions::RestrictLongStrings \
Perl::Critic::Policy::Variables::ProhibitLoopOnHash \
Perl::Critic::Policy::Compatibility::PerlMinimumVersionAndWhy \
Perl::Critic::Policy::Miscellanea::RequireRcsKeywords \
Perl::Critic::Policy::Subroutines::ProhibitCallsToUndeclaredSubs \
Perl::Critic::Policy::Subroutines::ProhibitCallsToUnexportedSubs \
Perl::Critic::Policy::ValuesAndExpressions::ProhibitFiletest_f \
Perl::Critic::Policy::Bangs::ProhibitDebuggingModules \
Perl::Critic::Policy::Bangs::ProhibitNumberedNames \
Perl::Critic::Policy::CognitiveComplexity::ProhibitExcessCognitiveComplexity \
Perl::Critic::Policy::Compatibility::PodMinimumVersion \
Perl::Critic::Policy::CompileTime \
Perl::Critic::Policy::Modules::RequireExplicitInclusion \
Perl::Critic::Policy::Moose::ProhibitDESTROYMethod \
Perl::Critic::Policy::Moose::ProhibitLazyBuild \
Perl::Critic::Policy::Moose::ProhibitMultipleWiths \
Perl::Critic::Policy::Moose::ProhibitNewMethod \
Perl::Critic::Policy::Moose::RequireCleanNamespace \
Perl::Critic::Policy::Moose::RequireMakeImmutable \
Perl::Critic::Policy::Perlsecret \
Perl::Critic::Policy::TooMuchCode::ProhibitDuplicateLiteral \
Perl::Critic::Policy::TooMuchCode::ProhibitLargeBlock \
Perl::Critic::Policy::TooMuchCode::ProhibitUnnecessaryUTF8Pragma \
Perl::Critic::Policy::TooMuchCode::ProhibitUnusedImport \
Perl::Critic::Policy::ValuesAndExpressions::RestrictLongStrings \
Perl::Critic::Policy::Variables::ProhibitLoopOnHash \
&& rm -Rf $PERL_CPANM_HOME/work/* \
;
WORKDIR ${GITDIR}
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment