Add ci workflow

Change-Id: I8320cba9d97cdd57a6a9c02c95b007058bf8be66
diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml
new file mode 100644
index 0000000..8320639
--- /dev/null
+++ b/.gitlab-ci.yml
@@ -0,0 +1,56 @@
+# use the verse rocker image, as it contains tidyverse, devtools and some texlive
+image: rocker/tidyverse
+
+# define stages of runner. at the moment,
+# just build (no test or deploy).
+stages:
+  - build
+
+build-job:
+  stage: build
+
+  cache:
+    key: icc
+    paths:
+      - ./cache
+
+  artifacts:
+    paths:
+      - "target/*"
+
+  before_script:
+    - source `find .. -name section_helper.sh`
+
+    - start_section install_linux_packages "Installing missing Linux packages"
+    - apt-get update
+    - apt-get install -y libvulkan1 libu2f-udev fonts-liberation build-essential libglpk40 libcurl4-gnutls-dev libxml2-dev libsodium-dev libsecret-1-dev libfontconfig1-dev libssl-dev libxt6 libpq-dev imagemagick ghostscript  inkscape scour poppler-utils librsvg2-dev
+    - wget https://dl.google.com/linux/direct/google-chrome-stable_current_amd64.deb
+    - dpkg -i google-chrome-stable_current_amd64.deb || apt-get install -y -f
+    - locale-gen de_DE.utf8 en_GB.utf8 en_US.utf8
+
+    - end_section install_linux_packages
+
+    - start_section testing_chromium "Testing chromium PDF export"
+    - ./ci/html2pdf https://google.com test.pdf 1
+    - ls -l ./test.pdf
+    - end_section testing_chromium
+
+    - start_section install_fonts "Installing Libertinus and Fira fonts"
+    - wget -O- https://github.com/mozilla/Fira/archive/refs/tags/4.202.tar.gz | tar -C /usr/share/fonts -zx --wildcards "*.otf"
+    - fc-cache
+    - end_section install_fonts
+
+    - start_section install_r_packages "Installing missing R packages"
+    - R -e "install.packages(c('devtools', 'RKorAPClient', 'httr', 'tidytext', 'httpuv', 'scales', 'sp', 'raster', 'kableExtra', 'DT', 'svglite', 'qrcode', 'rsvg'))"
+    - R -e 'devtools::install_git("https://korap.ids-mannheim.de/gerrit/IDS-Mannheim/idsThemeR")'
+    - R -e 'devtools::install_git("https://korap.ids-mannheim.de/gerrit/IDS-Mannheim/posterdown")'
+    - end_section install_r_packages
+
+  script:
+    - start_section render "Running scripts"
+    - R_CACHE_ROOTPATH=./cache R -e "require(rmarkdown); render('lvc_identification.md', output_format='posterdown::posterdown_ids', output_dir='target')"
+    - ./ci/html2pdf target/poster.html target/poster.pdf 1
+    - inkscape -b white --pdf-poppler -o target/poster.svg target/poster.pdf || true
+    - scour -i target/poster.svg -o target/poster_optimized.svg --enable-viewboxing --enable-id-stripping --shorten-ids --indent=none
+
+    - end_section render
diff --git a/ci/html2pdf b/ci/html2pdf
new file mode 100755
index 0000000..b16a183
--- /dev/null
+++ b/ci/html2pdf
@@ -0,0 +1,4 @@
+#!/bin/sh -eu
+in=$1 out=$2 page0=${3:-} page1=${4:-$page0}
+google-chrome --disable-background-networking --enable-features=NetworkService,NetworkServiceInProcess --disable-background-timer-throttling --disable-backgrounding-occluded-windows --disable-breakpad --disable-client-side-phishing-detection --disable-component-extensions-with-background-pages --disable-default-apps --disable-dev-shm-usage --disable-extensions --disable-features=TranslateUI,BlinkGenPropertyTrees,ImprovedCookieControls,SameSiteByDefaultCookies,LazyFrameLoading --disable-hang-monitor --disable-ipc-flooding-protection --disable-popup-blocking --disable-prompt-on-repost --disable-renderer-backgrounding --disable-sync --force-color-profile=srgb --metrics-recording-only --no-first-run --enable-automation --password-store=basic --use-mock-keychain --headless --hide-scrollbars --mute-audio --blink-settings=primaryHoverType=2,availableHoverTypes=2,primaryPointerType=4,availablePointerTypes=4 --no-sandbox --no-startup-window --disable-gpu --run-all-compositor-stages-before-draw --no-pdf-header-footer --print-to-pdf="$out".tmp "$in"
+pdfseparate -f 1 -l 1 "$out".tmp $out
diff --git a/ci/section_helper.sh b/ci/section_helper.sh
new file mode 100644
index 0000000..ddefe0d
--- /dev/null
+++ b/ci/section_helper.sh
@@ -0,0 +1,20 @@
+#!/bin/bash
+
+# Reference: https://docs.gitlab.com/ee/ci/jobs/#custom-collapsible-sections
+
+#
+# Takes 2 Parameters a new section id and a heading/title
+#
+function start_section() {
+  id=$1
+  title=$2
+  echo -e "\e[0Ksection_start:$(date +%s):${id}[collapsed=true]\r\e[0K\e[36;1m${title}\e[0m"
+}
+
+#
+# Takes 1 Parameter, the unique section id of the section that should end
+#
+function end_section() {
+  id=$1
+  echo -e "\e[0Ksection_end:$(date +%s):${id}\r\e[0K"
+}