From f7d5aaf4ced75b37055a7f5e3de2f3cf742734bd Mon Sep 17 00:00:00 2001 From: Scott W Harden Date: Sat, 2 Oct 2021 17:13:25 -0400 Subject: [PATCH 1/6] Docker support for unit tests Note that 1 test currently fails: https://github.com/j6s/phparch/issues/22 --- .gitignore | 1 + README.md | 9 +++++++++ docker-compose.yml | 9 +++++++++ dockerfile | 10 ++++++++++ 4 files changed, 29 insertions(+) create mode 100644 docker-compose.yml create mode 100644 dockerfile diff --git a/.gitignore b/.gitignore index 75f1bd1..e9e407b 100644 --- a/.gitignore +++ b/.gitignore @@ -3,3 +3,4 @@ vendor/ composer.lock coverage/ .phpunit.result.cache +.cache/ \ No newline at end of file diff --git a/README.md b/README.md index 9e83fd3..44fb512 100644 --- a/README.md +++ b/README.md @@ -165,6 +165,15 @@ $architecture = (new Architecture) ->addComposerBasedComponent('packages/subpackage/composer.json'); ``` +## Development Environment + +Unit tests can be run using docker: + +```bash +docker-compose build +docker-compose up +``` + ## Examples - [PHPArch tests its own architecture](./tests/ArchitectureTest.php) diff --git a/docker-compose.yml b/docker-compose.yml new file mode 100644 index 0000000..2f88703 --- /dev/null +++ b/docker-compose.yml @@ -0,0 +1,9 @@ +version: '2' + +services: + php: + build: ./ + working_dir: /phparch + command: bash -c "composer install && phpunit -vvv" + volumes: + - ./:/phparch \ No newline at end of file diff --git a/dockerfile b/dockerfile new file mode 100644 index 0000000..0dd6f2b --- /dev/null +++ b/dockerfile @@ -0,0 +1,10 @@ +FROM php:7-cli + +RUN apt-get update +RUN apt-get install -y curl zip + +RUN curl -sS https://getcomposer.org/installer | php +RUN mv composer.phar /usr/local/bin/composer +RUN composer global require "phpunit/phpunit" +ENV PATH /root/.composer/vendor/bin:$PATH +RUN ln -s /root/.composer/vendor/bin/phpunit /usr/bin/phpunit \ No newline at end of file From 7e4f90ad65413d97b1a9331c7906bd9cc1caae40 Mon Sep 17 00:00:00 2001 From: Scott W Harden Date: Sat, 2 Oct 2021 17:30:55 -0400 Subject: [PATCH 2/6] dockerfile: specify php version 7.4 --- dockerfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/dockerfile b/dockerfile index 0dd6f2b..739a4ba 100644 --- a/dockerfile +++ b/dockerfile @@ -1,4 +1,4 @@ -FROM php:7-cli +FROM php:7.4-cli RUN apt-get update RUN apt-get install -y curl zip From df4a184a449024feda953feffe2911324786d14d Mon Sep 17 00:00:00 2001 From: Scott W Harden Date: Sat, 2 Oct 2021 17:36:44 -0400 Subject: [PATCH 3/6] dockerfile: do not use getcomposer.org installer --- dockerfile | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/dockerfile b/dockerfile index 739a4ba..eb89db7 100644 --- a/dockerfile +++ b/dockerfile @@ -1,10 +1,9 @@ FROM php:7.4-cli RUN apt-get update -RUN apt-get install -y curl zip +RUN apt-get install -y git +COPY --from=composer /usr/bin/composer /usr/bin/composer -RUN curl -sS https://getcomposer.org/installer | php -RUN mv composer.phar /usr/local/bin/composer RUN composer global require "phpunit/phpunit" ENV PATH /root/.composer/vendor/bin:$PATH RUN ln -s /root/.composer/vendor/bin/phpunit /usr/bin/phpunit \ No newline at end of file From e0dacbbca4fd444e321d0dbad8c1ec0bee24c800 Mon Sep 17 00:00:00 2001 From: Scott W Harden Date: Sat, 2 Oct 2021 17:41:52 -0400 Subject: [PATCH 4/6] docker: invoke phpunit with relative file path --- docker-compose.yml | 2 +- dockerfile | 9 +-------- 2 files changed, 2 insertions(+), 9 deletions(-) diff --git a/docker-compose.yml b/docker-compose.yml index 2f88703..a420b7a 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -4,6 +4,6 @@ services: php: build: ./ working_dir: /phparch - command: bash -c "composer install && phpunit -vvv" + command: bash -c "composer install && ./vendor/bin/phpunit -vvv" volumes: - ./:/phparch \ No newline at end of file diff --git a/dockerfile b/dockerfile index eb89db7..ba35f60 100644 --- a/dockerfile +++ b/dockerfile @@ -1,9 +1,2 @@ FROM php:7.4-cli - -RUN apt-get update -RUN apt-get install -y git -COPY --from=composer /usr/bin/composer /usr/bin/composer - -RUN composer global require "phpunit/phpunit" -ENV PATH /root/.composer/vendor/bin:$PATH -RUN ln -s /root/.composer/vendor/bin/phpunit /usr/bin/phpunit \ No newline at end of file +COPY --from=composer /usr/bin/composer /usr/bin/composer \ No newline at end of file From 769ece30d091a34e04d2d914e68aba28b9025a3a Mon Sep 17 00:00:00 2001 From: Scott W Harden Date: Tue, 19 Oct 2021 19:39:34 -0400 Subject: [PATCH 5/6] Create docker.yaml CI using GitHub Actions to build docker container used for running PHP tests --- .github/workflows/docker.yaml | 14 ++++++++++++++ 1 file changed, 14 insertions(+) create mode 100644 .github/workflows/docker.yaml diff --git a/.github/workflows/docker.yaml b/.github/workflows/docker.yaml new file mode 100644 index 0000000..225e5c1 --- /dev/null +++ b/.github/workflows/docker.yaml @@ -0,0 +1,14 @@ +name: Test in Docker + +on: push + +jobs: + test: + runs-on: ubuntu-latest + steps: + - name: ๐Ÿšš Checkout Repo + uses: actions/checkout@v2 + - name: ๐Ÿณ Build Container + run: docker-compose build + - name: ๐Ÿงช Test in Docker + run: docker-compose up From 10ac3c384f39cc7fbfdd7fcd2b4a5db88d29c79c Mon Sep 17 00:00:00 2001 From: Scott W Harden Date: Tue, 19 Oct 2021 19:41:17 -0400 Subject: [PATCH 6/6] Update dockerfile installs git and zip so vendor files can be downloaded and extracted --- dockerfile | 2 ++ 1 file changed, 2 insertions(+) diff --git a/dockerfile b/dockerfile index ba35f60..cdd44e9 100644 --- a/dockerfile +++ b/dockerfile @@ -1,2 +1,4 @@ FROM php:7.4-cli +RUN apt-get update +RUN apt-get install -y git zip COPY --from=composer /usr/bin/composer /usr/bin/composer \ No newline at end of file