diff --git a/Jenkinsfile b/Jenkinsfile new file mode 100644 index 0000000..2f5e2ad --- /dev/null +++ b/Jenkinsfile @@ -0,0 +1,54 @@ +pipeline { + agent 'mapguesser' + + agent { + node { + label 'mapguesser' + customWorkspace 'workspace/mapguesser' + } + } + + stages { + stage('Checkout') { + steps { + checkout scm + } + } + + stage('Unit Testing') { + agent { + dockerfile { + filename 'docker/Dockerfile-test' + dir '.' + reuseNode true + } + } + steps { + sh '/composer/vendor/bin/phpunit --log-junit unit_test_results.xml --testdox tests' + } + post { + success { + archiveArtifacts 'unit_test_results.xml' + } + } + } + + stage('Static Code Analysis') { + agent { + dockerfile { + filename 'docker/Dockerfile-test' + dir '.' + reuseNode true + } + } + steps { + sh 'php -d memory_limit=1G /composer/vendor/bin/phpstan analyse -c phpstan.neon --error-format=prettyJson > static_code_analysis_results.json' + } + post { + success { + archiveArtifacts 'static_code_analysis_results.json' + } + } + } + } +} diff --git a/docker/Dockerfile-test b/docker/Dockerfile-test new file mode 100644 index 0000000..facfc59 --- /dev/null +++ b/docker/Dockerfile-test @@ -0,0 +1,7 @@ +FROM php:7.4.7-cli-buster + +RUN apt-get update && apt-get install -y unzip +RUN curl -sS https://getcomposer.org/installer | php -- --install-dir=/usr/local/bin --filename=composer + +COPY composer.* /composer/ +RUN cd /composer/ && composer install