diff --git a/.github/workflows/ci.yaml b/.github/workflows/ci.yaml new file mode 100644 index 0000000..6158748 --- /dev/null +++ b/.github/workflows/ci.yaml @@ -0,0 +1,35 @@ +name: CI Pipeline + +on: + pull_request: + types: + - opened + - reopened + - synchronize + - ready_for_review + push: + branches: + - master + +jobs: + tests: + runs-on: ubuntu-latest + strategy: + matrix: + php_version: [7.1, 7.2, 7.3, 7.4] + task: ['test', 'test-lowest'] + steps: + - uses: actions/checkout@v4 + - name: Run tests + run: make PHP_VERSION=${{ matrix.php_version }} ${{ matrix.task }} + tests-future-versions: + runs-on: ubuntu-latest + strategy: + matrix: + php_version: [8.0, 8.1, 8.2, 8.3] + task: ['test', 'test-lowest'] + steps: + - uses: actions/checkout@v4 + - name: Run tests against all major versions of PHP + run: make PHP_VERSION=${{ matrix.php_version }} ${{ matrix.task }} + continue-on-error: true diff --git a/Dockerfile b/Dockerfile new file mode 100644 index 0000000..3bd78ac --- /dev/null +++ b/Dockerfile @@ -0,0 +1,5 @@ +ARG PHP_VERSION=7.4 +FROM php:${PHP_VERSION} + +RUN apt-get update && apt-get install -y git unzip && rm -rf /var/lib/apt/lists/* +COPY --from=composer:2.2 /usr/bin/composer /usr/bin/composer diff --git a/Makefile b/Makefile new file mode 100644 index 0000000..5cef693 --- /dev/null +++ b/Makefile @@ -0,0 +1,35 @@ +.PHONY: build test clean test +build: + $(if $(PHP_VERSION),,$(error PHP_VERSION make variable needs to be set)) + docker buildx build --build-arg=PHP_VERSION=$(PHP_VERSION) -t php-composer:$(PHP_VERSION) . + +lint: build + docker run --rm -v ./:/code -v/code/vendor php-composer:$(PHP_VERSION) bash -c 'cd /code && composer update && vendor/bin/phpcs --standard=phpcs.xml.dist --warning-severity=0 -p src/ test/' + +test: build lint + docker run --rm -v ./:/code -e dependencies=highest -v/code/vendor php-composer:$(PHP_VERSION) bash -c 'cd /code && composer update && ./project_tests.sh' + +test-lowest: build lint + docker run --rm -v ./:/code -e dependencies=lowest -v/code/vendor php-composer:$(PHP_VERSION) bash -c 'cd /code && ./project_tests.sh' + + +test-7.1: + @$(MAKE) PHP_VERSION=7.1 test test-lowest +test-7.2: + @$(MAKE) PHP_VERSION=7.2 test test-lowest +test-7.3: + @$(MAKE) PHP_VERSION=7.3 test test-lowest +test-7.4: + @$(MAKE) PHP_VERSION=7.4 test test-lowest +test-8.0: + @$(MAKE) PHP_VERSION=8.0 test test-lowest +test-8.1: + @$(MAKE) PHP_VERSION=8.1 test test-lowest +test-8.2: + @$(MAKE) PHP_VERSION=8.2 test test-lowest +test-8.3: + @$(MAKE) PHP_VERSION=8.3 test test-lowest + +test-all: test-7.1 test-7.2 test-7.3 test-7.4 test-8.0 test-8.1 test-8.2 test-8.3 + +test-all-supported: test-7.1 test-7.2 test-7.3 test-7.4