From 2883b2ba03aeb70892153af676d191ccabb6e319 Mon Sep 17 00:00:00 2001
From: Andreas Romeyke <andreas.romeyke@slub-dresden.de>
Date: Fri, 17 Feb 2023 11:29:49 +0100
Subject: [PATCH] - init

---
 .gitignore     |  5 ++++
 .gitlab-ci.yml | 73 ++++++++++++++++++++++++++++++++++++++++++++++++++
 2 files changed, 78 insertions(+)
 create mode 100644 .gitignore
 create mode 100644 .gitlab-ci.yml

diff --git a/.gitignore b/.gitignore
new file mode 100644
index 0000000..2145430
--- /dev/null
+++ b/.gitignore
@@ -0,0 +1,5 @@
+.idea
+*.jar
+*.class
+*~
+build/
diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml
new file mode 100644
index 0000000..29d9c03
--- /dev/null
+++ b/.gitlab-ci.yml
@@ -0,0 +1,73 @@
+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/lib/"
+  IMAGE_TARGET: "$CI_REGISTRY_IMAGE/bullseye_subapp"
+  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"
+
+default:
+  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 ROSETTASDK="${ROSETTASDK}"
+
+build-env-job:       # This job runs in the build stage, which runs first.
+  stage: build
+  timeout: 30m
+  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\":{\"$CI_REGISTRY\":{\"auth\":\"$(printf "%s:%s" "$CI_REGISTRY_USER" "$CI_REGISTRY_PASSWORD" | base64 | tr -d '\n')\"},\"$(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
+    # In this task, Kaniko executor is called to build the Image based on the Dockerfile provided with "--dockerfile".
+    - echo "CI_PROJECT_DIR=${CI_PROJECT_DIR}"
+    - >-
+      /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
+      --snapshotMode=redo
+      --use-new-run
+      --ignore-var-run
+
+test-job:
+  stage: test
+  timeout: 3h
+  tags:
+    - "docker"
+  script:
+    - ls -lha /exlibris/
+    - ROSETTASDK=$ROSETTASDK make -e check_prerequisites
+    - ROSETTASDK=$ROSETTASDK make -e test
+
+packaging-job:
+  stage: packaging
+  timeout: 3h
+  tags:
+    - "docker"
+  script:
+    - ROSETTASDK=$ROSETTASDK make -e
+  artifacts:
+    paths:
+      - ./*.jar
-- 
GitLab