diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml new file mode 100644 index 0000000000000000000000000000000000000000..e43d16b87a64a5393cef47230b48fd1c491dfd7f --- /dev/null +++ b/.gitlab-ci.yml @@ -0,0 +1,37 @@ +image: registry.gitlab.tugraz.at/dbp/middleware/dbp-api/api-starter-bundle:v1 + +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 run lint \ No newline at end of file diff --git a/.gitlab-ci/Dockerfile b/.gitlab-ci/Dockerfile new file mode 100644 index 0000000000000000000000000000000000000000..4e099f8bd198b6f268bc3739f9b74e6412436d0d --- /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 0000000000000000000000000000000000000000..6693f67cd3615472c7b0d5655dce5b02a7d2fe33 --- /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-starter-bundle:v1 \ No newline at end of file diff --git a/.gitlab-ci/build.sh b/.gitlab-ci/build.sh new file mode 100755 index 0000000000000000000000000000000000000000..4047d6bea9949beabcb6bf336a8d955afb7ed292 --- /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-starter-bundle: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 0000000000000000000000000000000000000000..23c8e404f963f4205366c1c3f65eba8c9c33988f --- /dev/null +++ b/.gitlab-ci/php-ini-overrides.ini @@ -0,0 +1 @@ +zend.assertions = 1 diff --git a/tests/bootstrap.php b/tests/bootstrap.php index 927977a0f688790cfb16cc3db8796e5fa48345eb..eddbb52dd25c5e668ee48fa6f7b084492512d72d 100644 --- a/tests/bootstrap.php +++ b/tests/bootstrap.php @@ -2,4 +2,4 @@ declare(strict_types=1); -require dirname(__DIR__).'/vendor/autoload.php'; \ No newline at end of file +require dirname(__DIR__).'/vendor/autoload.php';