diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml new file mode 100644 index 0000000000000000000000000000000000000000..3f34e919c04cb83372bfcff3c08bcbde93701638 --- /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 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..8d8563a8a532ba9ea8d93a9ea671de518ce02a90 --- /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 0000000000000000000000000000000000000000..bdc8b7409e69717470c2eb484fe41bb1ca50defb --- /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 0000000000000000000000000000000000000000..23c8e404f963f4205366c1c3f65eba8c9c33988f --- /dev/null +++ b/.gitlab-ci/php-ini-overrides.ini @@ -0,0 +1 @@ +zend.assertions = 1