diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 9477420dea1c587d8fa31cdaedd904ae94b92a96..5de51760a840a224bf67b3b63afd053b7f0120e7 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -1,4 +1,4 @@ -image: registry.gitlab.tugraz.at/dbp/middleware/dbp-api/api-core-bundle/main:v1 +image: registry.gitlab.tugraz.at/dbp/middleware/dbp-api/api-server-template/main:v1 before_script: - 'git config --global url."https://gitlab-ci-token:${CI_JOB_TOKEN}@gitlab.tugraz.at/".insteadOf "git@gitlab.tugraz.at:"' diff --git a/.gitlab-ci/Dockerfile b/.gitlab-ci/Dockerfile new file mode 100644 index 0000000000000000000000000000000000000000..83bd83a48d9d7d7d297e16fb7eb4f065ac99a2ac --- /dev/null +++ b/.gitlab-ci/Dockerfile @@ -0,0 +1,81 @@ +FROM debian:buster + +ENV LANG C.UTF-8 +ENV DEBIAN_FRONTEND noninteractive + +# Basics +RUN apt-get update && apt-get install -y \ + composer \ + php-zip \ + rsync \ + 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/ + +# PHP 8.0 +# FIXME: php8.0-xdebug not installed because it leads to segfaults +# https://gitlab.tugraz.at/dbp/middleware/api/-/issues/65#note_21039 +RUN apt-get update && apt-get install -y \ + php8.0 \ + php8.0-curl \ + php8.0-soap \ + php8.0-xml \ + php8.0-ldap \ + php8.0-zip \ + php8.0-gmp \ + php8.0-mbstring \ + && rm -rf /var/lib/apt/lists/* +COPY ./php-ini-overrides.ini /etc/php/8.0/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 + +# Install a newer composer +RUN mkdir -p /home/user/.local/bin +WORKDIR /home/user/.local/bin +RUN wget https://raw.githubusercontent.com/composer/getcomposer.org/bfd95e2a4383ee9cf7c058c2df29d7acb5f86d77/web/installer -O - -q | php -- +RUN mv composer.phar composer +ENV PATH "/home/user/.local/bin:$PATH" + +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..3465c9bb78526c77cea65b99e4810dd79326ed60 --- /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/main: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..52192df67bfa83769089c36cbb68aaee4f523ab8 --- /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/main:v1" +sudo docker build --tag "${TAG}" --file "Dockerfile" . +sudo 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'" diff --git a/.gitlab-ci/php-ini-overrides.ini b/.gitlab-ci/php-ini-overrides.ini new file mode 100644 index 0000000000000000000000000000000000000000..83a111612b6c9e9162a5c9b0d9d13c2a62171b58 --- /dev/null +++ b/.gitlab-ci/php-ini-overrides.ini @@ -0,0 +1 @@ +zend.assertions = 1 \ No newline at end of file