From d9c10d736f8390a05933296a3b7d81083ae9efcd Mon Sep 17 00:00:00 2001
From: Christoph Reiter <reiter.christoph@gmail.com>
Date: Thu, 29 Oct 2020 15:58:25 +0100
Subject: [PATCH] gitlab-ci stuff

---
 .gitlab-ci.yml                   | 41 +++++++++++++++++++++++
 .gitlab-ci/Dockerfile            | 57 ++++++++++++++++++++++++++++++++
 .gitlab-ci/README.md             |  4 +++
 .gitlab-ci/build.sh              |  9 +++++
 .gitlab-ci/php-ini-overrides.ini |  1 +
 5 files changed, 112 insertions(+)
 create mode 100644 .gitlab-ci.yml
 create mode 100644 .gitlab-ci/Dockerfile
 create mode 100644 .gitlab-ci/README.md
 create mode 100755 .gitlab-ci/build.sh
 create mode 100644 .gitlab-ci/php-ini-overrides.ini

diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml
new file mode 100644
index 0000000..3f34e91
--- /dev/null
+++ b/.gitlab-ci.yml
@@ -0,0 +1,41 @@
+image: registry.gitlab.tugraz.at/dbp/middleware/dbp-api/api-server-template:v1
+
+before_script:
+  - 'git config --global url."https://gitlab-ci-token:${CI_JOB_TOKEN}@gitlab.tugraz.at/".insteadOf "git@gitlab.tugraz.at:"'
+
+variables:
+  COMPOSER_CACHE_DIR: "$CI_PROJECT_DIR/_composer_cache"
+
+cache:
+  key: ${CI_PROJECT_PATH}
+  paths:
+    - _composer_cache
+
+stages:
+  - test
+
+.test_defaults: &test_defaults
+  script:
+    - sudo update-alternatives --set php "/usr/bin/${PHP}"
+    - composer install
+    - composer test
+
+test-php7.3:
+  stage: test
+  variables:
+    PHP: "php7.3"
+  <<: *test_defaults
+
+test-php7.4:
+  stage: test
+  variables:
+    PHP: "php7.4"
+  <<: *test_defaults
+
+lint:
+  stage: test
+  allow_failure: true
+  script:
+    - sudo update-alternatives --set php /usr/bin/php7.3
+    - composer install
+    - composer run lint
\ No newline at end of file
diff --git a/.gitlab-ci/Dockerfile b/.gitlab-ci/Dockerfile
new file mode 100644
index 0000000..4e099f8
--- /dev/null
+++ b/.gitlab-ci/Dockerfile
@@ -0,0 +1,57 @@
+FROM debian:buster
+
+ENV LANG C.UTF-8
+ENV DEBIAN_FRONTEND noninteractive
+
+# Basics
+RUN apt-get update && apt-get install -y \
+    composer \
+    php-zip \
+    sudo \
+    wget \
+    curl \
+    lsb-release \
+    && rm -rf /var/lib/apt/lists/*
+
+# PHP Repo
+RUN wget -O /etc/apt/trusted.gpg.d/php.gpg https://packages.sury.org/php/apt.gpg
+RUN echo "deb https://packages.sury.org/php/ $(lsb_release -sc) main" > /etc/apt/sources.list.d/php.list
+
+# PHP 7.3
+RUN apt-get update && apt-get install -y \
+    php7.3 \
+    php7.3-curl \
+    php7.3-soap \
+    php7.3-xml \
+    php7.3-ldap \
+    php7.3-zip \
+    php7.3-gmp \
+    php7.3-xdebug \
+    php7.3-mbstring \
+    && rm -rf /var/lib/apt/lists/*
+COPY ./php-ini-overrides.ini /etc/php/7.3/cli/conf.d/
+
+# PHP 7.4
+RUN apt-get update && apt-get install -y \
+    php7.4 \
+    php7.4-curl \
+    php7.4-soap \
+    php7.4-xml \
+    php7.4-ldap \
+    php7.4-zip \
+    php7.4-gmp \
+    php7.4-xdebug \
+    php7.4-mbstring \
+    && rm -rf /var/lib/apt/lists/*
+COPY ./php-ini-overrides.ini /etc/php/7.4/cli/conf.d/
+
+# Default to PHP 7.3
+RUN sudo update-alternatives --set php /usr/bin/php7.3
+RUN sudo update-alternatives --set phar /usr/bin/phar7.3
+RUN sudo update-alternatives --set phar.phar /usr/bin/phar.phar7.3
+
+# Add a normal user and enable sudo
+RUN useradd -u 1000 -ms /bin/bash user
+RUN echo 'user ALL=(ALL) NOPASSWD:ALL' >> /etc/sudoers
+USER user
+WORKDIR /home/user
\ No newline at end of file
diff --git a/.gitlab-ci/README.md b/.gitlab-ci/README.md
new file mode 100644
index 0000000..8d8563a
--- /dev/null
+++ b/.gitlab-ci/README.md
@@ -0,0 +1,4 @@
+* In case of an incompatible change increase the tag version number in build.sh
+* ./build.sh
+* (first time) sudo docker login registry.gitlab.tugraz.at
+* sudo docker push registry.gitlab.tugraz.at/dbp/middleware/dbp-api/api-server-template:v1
\ No newline at end of file
diff --git a/.gitlab-ci/build.sh b/.gitlab-ci/build.sh
new file mode 100755
index 0000000..bdc8b74
--- /dev/null
+++ b/.gitlab-ci/build.sh
@@ -0,0 +1,9 @@
+#!/bin/bash
+
+set -e
+TAG="registry.gitlab.tugraz.at/dbp/middleware/dbp-api/api-server-template:v1"
+docker build --tag "${TAG}" --file "Dockerfile" .
+docker run --rm --security-opt label=disable \
+    --volume "$(pwd)/..:/home/user/app" --workdir "/home/user/app" \
+    --tty --interactive "${TAG}" bash
+echo "Now run: sudo docker push '$TAG'"
\ No newline at end of file
diff --git a/.gitlab-ci/php-ini-overrides.ini b/.gitlab-ci/php-ini-overrides.ini
new file mode 100644
index 0000000..23c8e40
--- /dev/null
+++ b/.gitlab-ci/php-ini-overrides.ini
@@ -0,0 +1 @@
+zend.assertions = 1
-- 
GitLab