From 9d30da0e482c39b4a9ec67d00a03e51ae54f0e2a Mon Sep 17 00:00:00 2001 From: Andrea Giannantonio Date: Wed, 30 Dec 2020 14:16:09 +0100 Subject: [PATCH 1/3] feat(deps): add compatibility with php 8.0 --- .circleci/config.yml | 45 ++++++++++++++++++++----- .circleci/images/{ => php74}/Dockerfile | 3 +- .circleci/images/php80/Dockerfile | 16 +++++++++ CHANGELOG.md | 6 ++++ CONTRIBUTING.md | 9 +++-- README.md | 21 +++++++----- composer.json | 20 ++++++----- docker-compose.yml | 14 ++++++-- docker/php-fpm/Dockerfile | 23 ------------- docker/php74/Dockerfile | 5 +++ docker/php80/Dockerfile | 5 +++ 11 files changed, 111 insertions(+), 56 deletions(-) rename .circleci/images/{ => php74}/Dockerfile (83%) create mode 100644 .circleci/images/php80/Dockerfile delete mode 100644 docker/php-fpm/Dockerfile create mode 100644 docker/php74/Dockerfile create mode 100644 docker/php80/Dockerfile diff --git a/.circleci/config.yml b/.circleci/config.yml index 9ee0294..85ad272 100644 --- a/.circleci/config.yml +++ b/.circleci/config.yml @@ -1,14 +1,23 @@ version: 2.1 executors: - poser_executor: # declares a reusable executor + # declares a reusable executor + poser_executor_php74: docker: - - image: pugx/poser:2.0 + - image: pugx/poser:php74 + working_directory: ~/app + + poser_executor_php80: + docker: + - image: pugx/poser:php80 working_directory: ~/app jobs: checkout_code: - executor: poser_executor + parameters: + poser_executor: + type: executor + executor: << parameters.poser_executor >> steps: - checkout - save_cache: @@ -17,7 +26,10 @@ jobs: - ~/app php_dependencies: - executor: poser_executor + parameters: + poser_executor: + type: executor + executor: << parameters.poser_executor >> steps: - restore_cache: keys: @@ -32,7 +44,10 @@ jobs: key: v1-php-dependencies-{{ .Environment.CIRCLE_SHA1 }} lint_checks: - executor: poser_executor + parameters: + poser_executor: + type: executor + executor: << parameters.poser_executor >> steps: - restore_cache: keys: @@ -46,7 +61,10 @@ jobs: command: bin/php-cs-fixer fix --verbose --diff --dry-run phpspec_and_behat: - executor: poser_executor + parameters: + poser_executor: + type: executor + executor: << parameters.poser_executor >> steps: - restore_cache: keys: @@ -68,16 +86,27 @@ jobs: command: bin/behat workflows: - version: 2 build-and-test: jobs: - - checkout_code + - checkout_code: + matrix: + parameters: + poser_executor: [ "poser_executor_php74", "poser_executor_php80" ] - php_dependencies: + matrix: + parameters: + poser_executor: [ "poser_executor_php74", "poser_executor_php80" ] requires: - checkout_code - lint_checks: + matrix: + parameters: + poser_executor: [ "poser_executor_php74", "poser_executor_php80" ] requires: - php_dependencies - phpspec_and_behat: + matrix: + parameters: + poser_executor: [ "poser_executor_php74", "poser_executor_php80" ] requires: - php_dependencies diff --git a/.circleci/images/Dockerfile b/.circleci/images/php74/Dockerfile similarity index 83% rename from .circleci/images/Dockerfile rename to .circleci/images/php74/Dockerfile index 5bf5d59..8530f20 100644 --- a/.circleci/images/Dockerfile +++ b/.circleci/images/php74/Dockerfile @@ -13,5 +13,4 @@ RUN docker-php-ext-install zip iconv gd USER circleci -# install prestissimo -RUN composer global require hirak/prestissimo +COPY --from=composer:2 /usr/bin/composer /usr/local/bin/composer diff --git a/.circleci/images/php80/Dockerfile b/.circleci/images/php80/Dockerfile new file mode 100644 index 0000000..7d10646 --- /dev/null +++ b/.circleci/images/php80/Dockerfile @@ -0,0 +1,16 @@ +FROM circleci/php:8.0-fpm-browsers + +USER root + +# install system packages +RUN apt-get install -qqy libzip-dev libpng-dev libjpeg-dev libfreetype6-dev + +# configure php packages +RUN docker-php-ext-configure gd --with-freetype=/usr/include/ --with-jpeg=/usr/include/ + +# install php requirements +RUN docker-php-ext-install zip iconv gd + +USER circleci + +COPY --from=composer:2 /usr/bin/composer /usr/local/bin/composer diff --git a/CHANGELOG.md b/CHANGELOG.md index 61ea313..cbdd915 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -7,6 +7,12 @@ and this project adheres to [Semantic Versioning](http://semver.org/spec/v2.0.0. ## [Unreleased] +### Added +* add CircleCI jobs for build and tests with php 8.0 + +### Changed +* refactoring of docker-compose to develop with php74 and php80 + ### Fixed * removed unnecessary composer symlinks from `bin` dir, removed them from `.gitignore` too diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index f816beb..8445b52 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -36,11 +36,14 @@ composer behat ```bash docker-compose up --build -d -docker-compose exec fpm composer install -docker-compose exec fpm composer phpspec -docker-compose exec fpm composer behat +docker-compose exec php74 composer install +docker-compose exec php74 composer phpspec +docker-compose exec php74 composer behat +docker-compose exec php74 composer php-cs-fixer ``` +or + ## Pull Request diff --git a/README.md b/README.md index c3fa8a9..cca99cc 100644 --- a/README.md +++ b/README.md @@ -19,26 +19,30 @@ to use the library with lower php version use the tag [v1.4](https://github.com/ #### 1. Create a project -``` bash -$ composer create-project badges/poser -$ ln -s poser/bin/poser /usr/local/bin/poser +```bash +composer create-project badges/poser +ln -s poser/bin/poser /usr/local/bin/poser ``` #### 2. Launch the command Create an image - -`$ poser license MIT blue -p "license.svg"` +```bash +poser license MIT blue -p "license.svg" +``` Flush an image - -`$ poser license MIT blue` +```bash +poser license MIT blue +``` ## Usage as library #### 1. Add to composer dependencies -`$ composer require badges/poser` +```bash +composer require badges/poser +``` #### 2. Use in your project as lib @@ -92,4 +96,3 @@ Please refer to [CONTRIBUTING](CONTRIBUTING.md) ## License [![License](https://poser.pugx.org/badges/poser/license.svg)](./LICENSE) - diff --git a/composer.json b/composer.json index 2269db5..f88e228 100644 --- a/composer.json +++ b/composer.json @@ -28,7 +28,7 @@ "repositories": [ { "type": "vcs", - "url": "https://github.com/madisoft/phpspec-data-provider-extension" + "url": "https://github.com/JellyBellyDev/phpspec-data-provider-extension" } ], "require": { @@ -38,12 +38,12 @@ "symfony/console": "^4.0|^5.0" }, "require-dev": { - "behat/behat": "^3.7", - "phpspec/phpspec": "^6.1", - "friends-of-phpspec/phpspec-code-coverage": "^4.3", - "friendsofphp/php-cs-fixer": "^2.16", - "moave/phpspec-data-provider-extension": "dev-master", - "vimeo/psalm": "^3.12" + "behat/behat": "^3.8", + "phpspec/phpspec": "^7.0", + "friends-of-phpspec/phpspec-code-coverage": "^6.0", + "friendsofphp/php-cs-fixer": "^2.17", + "moave/phpspec-data-provider-extension": "dev-feat/add-compatibility-to-php80", + "vimeo/psalm": "^4.3" }, "config": { "bin-dir": "bin", @@ -55,7 +55,11 @@ "php-cs-fixer": "bin/php-cs-fixer fix -v --ansi", "phpspec": "bin/phpspec run --format=pretty --ansi", "phpspec-coverage": "bin/phpspec run -f progress -c phpspec-coverage.yml --ansi", - "behat": "bin/behat" + "behat": "bin/behat", + "docker:build:php74": "docker build -t pugx/poser:php74 -f .circleci/images/php74/Dockerfile .", + "docker:push:php74": "docker push pugx/poser:php74", + "docker:build:php80": "docker build -t pugx/poser:php80 -f .circleci/images/php80/Dockerfile .", + "docker:push:php80": "docker push pugx/poser:php80" }, "extra": { "branch-alias": { diff --git a/docker-compose.yml b/docker-compose.yml index 42a29a4..065859e 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -1,10 +1,18 @@ version: '3.7' services: - fpm: + php74: build: - context: docker/php-fpm - network: host + context: docker/php74 working_dir: /application + stdin_open: true + volumes: + - .:/application:cached + + php80: + build: + context: docker/php80 + working_dir: /application + stdin_open: true volumes: - .:/application:cached diff --git a/docker/php-fpm/Dockerfile b/docker/php-fpm/Dockerfile deleted file mode 100644 index e9413e7..0000000 --- a/docker/php-fpm/Dockerfile +++ /dev/null @@ -1,23 +0,0 @@ -FROM phpdockerio/php74-fpm:latest -WORKDIR "/application" - -# Fix debconf warnings upon build -ARG DEBIAN_FRONTEND=noninteractive - -# Install selected extensions and other stuff -RUN apt-get update \ - && apt-get -y --no-install-recommends install php-xdebug php7.4-bcmath php7.4-gd php7.4-intl php-msgpack php-yaml \ - && apt-get clean; rm -rf /var/lib/apt/lists/* /tmp/* /var/tmp/* /usr/share/doc/* - -# Install git -RUN apt-get update \ - && apt-get -y install git \ - && apt-get clean; rm -rf /var/lib/apt/lists/* /tmp/* /var/tmp/* /usr/share/doc/* - -RUN mkdir -p /home/dev/.composer \ - && chown -R 1000:1000 /home/dev/ - -ENV COMPOSER_CACHE_DIR='/home/dev/.composer' - -# Install prestissimo -RUN composer global require hirak/prestissimo diff --git a/docker/php74/Dockerfile b/docker/php74/Dockerfile new file mode 100644 index 0000000..cddd459 --- /dev/null +++ b/docker/php74/Dockerfile @@ -0,0 +1,5 @@ +FROM pugx/poser:php74 + +USER root + +WORKDIR "/application" diff --git a/docker/php80/Dockerfile b/docker/php80/Dockerfile new file mode 100644 index 0000000..54fe96b --- /dev/null +++ b/docker/php80/Dockerfile @@ -0,0 +1,5 @@ +FROM pugx/poser:php80 + +USER root + +WORKDIR "/application" From abc16d80d9ee7216e5e406481abc369a89edd83d Mon Sep 17 00:00:00 2001 From: Andrea Giannantonio Date: Sat, 2 Jan 2021 13:13:34 +0100 Subject: [PATCH 2/3] Add git and wget to docker images. --- .circleci/images/php74/Dockerfile | 5 ++++- .circleci/images/php80/Dockerfile | 5 ++++- 2 files changed, 8 insertions(+), 2 deletions(-) diff --git a/.circleci/images/php74/Dockerfile b/.circleci/images/php74/Dockerfile index 8530f20..f91babd 100644 --- a/.circleci/images/php74/Dockerfile +++ b/.circleci/images/php74/Dockerfile @@ -3,7 +3,10 @@ FROM circleci/php:7.4-fpm-browsers USER root # install system packages -RUN apt-get install -qqy libzip-dev libpng-dev libjpeg-dev libfreetype6-dev +RUN apt-get update \ + && apt-get -y install git wget \ + && apt-get install -qqy libzip-dev libpng-dev libjpeg-dev libfreetype6-dev \ + && apt-get clean; rm -rf /var/lib/apt/lists/* /tmp/* /var/tmp/* /usr/share/doc/* # configure php packages RUN docker-php-ext-configure gd --with-freetype=/usr/include/ --with-jpeg=/usr/include/ diff --git a/.circleci/images/php80/Dockerfile b/.circleci/images/php80/Dockerfile index 7d10646..5c27928 100644 --- a/.circleci/images/php80/Dockerfile +++ b/.circleci/images/php80/Dockerfile @@ -3,7 +3,10 @@ FROM circleci/php:8.0-fpm-browsers USER root # install system packages -RUN apt-get install -qqy libzip-dev libpng-dev libjpeg-dev libfreetype6-dev +RUN apt-get update \ + && apt-get -y install git wget \ + && apt-get install -qqy libzip-dev libpng-dev libjpeg-dev libfreetype6-dev \ + && apt-get clean; rm -rf /var/lib/apt/lists/* /tmp/* /var/tmp/* /usr/share/doc/* # configure php packages RUN docker-php-ext-configure gd --with-freetype=/usr/include/ --with-jpeg=/usr/include/ From 00a013d3e4f184020a5fa1039be26a6ab1926344 Mon Sep 17 00:00:00 2001 From: Andrea Giannantonio Date: Sat, 2 Jan 2021 13:29:08 +0100 Subject: [PATCH 3/3] fixup warning in circleCI --- .circleci/config.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.circleci/config.yml b/.circleci/config.yml index 85ad272..a7dbc91 100644 --- a/.circleci/config.yml +++ b/.circleci/config.yml @@ -58,7 +58,7 @@ jobs: - v1-php-dependencies-{{ .Environment.CIRCLE_SHA1 }} - run: name: run php-cs-fixer checks - command: bin/php-cs-fixer fix --verbose --diff --dry-run + command: PHP_CS_FIXER_IGNORE_ENV=1 bin/php-cs-fixer fix --verbose --diff --dry-run phpspec_and_behat: parameters: @@ -78,7 +78,7 @@ jobs: command: bin/phpspec run --format=pretty - run: name: run phpspec coverage tests - command: bin/phpspec run -f progress -c phpspec-coverage.yml + command: XDEBUG_MODE=coverage bin/phpspec run -f progress -c phpspec-coverage.yml - store_artifacts: path: coverage - run: