-
Notifications
You must be signed in to change notification settings - Fork 73
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
* drop PHP versions below 8.1 * update dependencies * merge fix for When using json() failing command has output on stdout and not stderr #90 * add symfony process 7 Adding support of symfony/process ^7.0 #94 * add docker env for develeopment * update phpunit, fix tests to work with v11
- Loading branch information
Showing
16 changed files
with
339 additions
and
411 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,24 @@ | ||
FROM php:8.3-cli | ||
|
||
WORKDIR /app | ||
|
||
ENV ANSIBLE_VERSION 2.9.17 | ||
|
||
# composer | ||
RUN php -r "copy('https://getcomposer.org/installer', 'composer-setup.php');" \ | ||
&& php -r "if (hash_file('sha384', 'composer-setup.php') === 'dac665fdc30fdd8ec78b38b9800061b4150413ff2e3b6f88543c636f7cd84f6db9189d43a81e5503cda447da73c7e5b6') { echo 'Installer verified'; } else { echo 'Installer corrupt'; unlink('composer-setup.php'); } echo PHP_EOL;" \ | ||
&& php composer-setup.php \ | ||
&& php -r "unlink('composer-setup.php');" \ | ||
&& mv composer.phar /usr/bin/composer \ | ||
&& chmod +x /usr/bin/composer | ||
|
||
# python, pipx & ansible | ||
RUN apt-get update \ | ||
&& apt-get install -y gcc python3 git zip 7zip unzip pipx \ | ||
&& apt-get clean all; \ | ||
pipx install --upgrade pip; \ | ||
pipx install "ansible==${ANSIBLE_VERSION}"; \ | ||
pipx install ansible; | ||
|
||
# keep container running | ||
CMD [ "bash", "-c", "echo 'running'; tail -f /dev/null" ] |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,66 @@ | ||
# Executables (local) | ||
DOCKER_COMP = docker compose | ||
|
||
# Docker containers | ||
PHP_CONT = $(DOCKER_COMP) exec php-ansible | ||
|
||
# Executables | ||
PHP = $(PHP_CONT) php | ||
COMPOSER = $(PHP_CONT) composer | ||
|
||
# Misc | ||
.DEFAULT_GOAL = help | ||
|
||
## —— php-ansible Makefile 🎵 —————————————————————————————————— | ||
help: ## Outputs this help screen | ||
@grep -E '(^[a-zA-Z0-9\./_-]+:.*?##.*$$)|(^##)' $(MAKEFILE_LIST) | awk 'BEGIN {FS = ":.*?## "}{printf "\033[32m%-30s\033[0m %s\n", $$1, $$2}' | sed -e 's/\[32m##/[33m/' | ||
|
||
## —— Docker 🐳 ———————————————————————————————————————————————————————————————— | ||
build: ## Builds the Docker images | ||
@$(DOCKER_COMP) build --pull --no-cache | ||
|
||
up: ## Start the docker hub in detached mode (no logs) | ||
@$(DOCKER_COMP) up --detach | ||
|
||
start: build up ## Build and start the containers | ||
|
||
down: ## Stop the docker hub | ||
@$(DOCKER_COMP) down --remove-orphans | ||
|
||
logs: ## Show live logs | ||
@$(DOCKER_COMP) logs --tail=0 --follow | ||
|
||
sh: ## Connect to the php-fpm container | ||
@$(PHP_CONT) sh | ||
|
||
bash: ## Connect to the php-fpm container via bash so up and down arrows go to previous commands | ||
@$(PHP_CONT) bash | ||
|
||
test: ## Start tests with phpunit, pass the parameter "c=" to add options to phpunit, example: make test c="--group e2e --stop-on-failure" | ||
@$(eval c ?=) | ||
@$(PHP_CONT) vendor/bin/phpunit -c phpunit.xml.dist $(c) | ||
|
||
analyze: ## Start analysis with phpstan, pass the parameter "c=" to add options to phpstan. Default config ist always used, example: make analyze c="--group e2e" | ||
@$(eval c ?=) | ||
@$(PHP_CONT) vendor/bin/phpstan --configuration=phpstan.neon $(c) | ||
|
||
codestyle: ## Start codestyle analysis with phpcs, pass the parameter "c=" to add options to phpcs. Default config ist always used. Example: make codestyle c="--parallel=2" | ||
@$(eval c ?=) | ||
@$(PHP_CONT) vendor/bin/phpcs --standard=phpcs.xml.dist $(c) | ||
|
||
codestyle-fix: ## Start codestyle analysis with phpcbf, pass the parameter "c=" to add options to phpcbf. Default config ist always used. Example: make codestyle c="--parallel=2" | ||
@$(eval c ?=) | ||
@$(PHP_CONT) vendor/bin/phpcbf --standard=phpcs.xml.dist $(c) | ||
|
||
psalm: ## Start code analysis with psalm, pass the parameter "c=" to add options to psalm. Default config ist always used. Example: make codestyle c="--level=2" | ||
@$(eval c ?=) | ||
@$(DOCKER_COMP) exec -e APP_ENV=dev php vendor/bin/psalm --config=psalm.xml $(c) | ||
|
||
## —— Composer 🧙 —————————————————————————————————————————————————————————————— | ||
composer: ## Run composer, pass the parameter "c=" to run a given command, example: make composer c='req phpstan/phpstan' | ||
@$(eval c ?=) | ||
@$(COMPOSER) $(c) | ||
|
||
vendor: ## Install vendors according to the current composer.lock file | ||
vendor: c=install --prefer-dist --no-dev --no-progress --no-scripts --no-interaction | ||
vendor: composer |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,26 +1,24 @@ | ||
<?php | ||
/* | ||
* This file is part of the php-ansible package. | ||
* | ||
* (c) Marc Aschmann <[email protected]> | ||
* | ||
* For the full copyright and license information, please view the LICENSE | ||
* file that was distributed with this source code. | ||
*/ | ||
|
||
declare(strict_types=1); | ||
|
||
namespace Asm\Ansible; | ||
|
||
use Asm\Ansible\Exception\CommandException; | ||
use Asm\Ansible\Testing\AnsibleTestCase; | ||
use org\bovigo\vfs\vfsStream; | ||
use PHPUnit\Framework\Attributes\CoversClass; | ||
use PHPUnit\Framework\Attributes\CoversFunction; | ||
|
||
#[CoversClass(\Asm\Ansible\Ansible::class)] | ||
#[CoversFunction('playbook')] | ||
#[CoversFunction('createProcess')] | ||
#[CoversFunction('checkCommand')] | ||
#[CoversFunction('checkDir')] | ||
#[CoversFunction('__construct')] | ||
class AnsibleTest extends AnsibleTestCase | ||
{ | ||
/** | ||
* @covers \Asm\Ansible\Ansible::checkCommand | ||
* @covers \Asm\Ansible\Ansible::checkDir | ||
* @covers \Asm\Ansible\Ansible::__construct | ||
*/ | ||
|
||
public function testInstance() | ||
{ | ||
$ansible = new Ansible( | ||
|
@@ -31,11 +29,6 @@ public function testInstance() | |
$this->assertInstanceOf('\Asm\Ansible\Ansible', $ansible, 'Instantiation with given paths'); | ||
} | ||
|
||
/** | ||
* @covers \Asm\Ansible\Ansible::checkCommand | ||
* @covers \Asm\Ansible\Ansible::checkDir | ||
* @covers \Asm\Ansible\Ansible::__construct | ||
*/ | ||
public function testAnsibleProjectPathNotFoundException() | ||
{ | ||
$this->expectException(CommandException::class); | ||
|
@@ -46,11 +39,6 @@ public function testAnsibleProjectPathNotFoundException() | |
); | ||
} | ||
|
||
/** | ||
* @covers \Asm\Ansible\Ansible::checkCommand | ||
* @covers \Asm\Ansible\Ansible::checkDir | ||
* @covers \Asm\Ansible\Ansible::__construct | ||
*/ | ||
public function testAnsibleCommandNotFoundException() | ||
{ | ||
$this->expectException(CommandException::class); | ||
|
@@ -61,11 +49,6 @@ public function testAnsibleCommandNotFoundException() | |
); | ||
} | ||
|
||
/** | ||
* @covers \Asm\Ansible\Ansible::checkCommand | ||
* @covers \Asm\Ansible\Ansible::checkDir | ||
* @covers \Asm\Ansible\Ansible::__construct | ||
*/ | ||
public function testAnsibleNoCommandGivenException() | ||
{ | ||
// TODO: Not sure why the following command should give an error. | ||
|
@@ -75,11 +58,6 @@ public function testAnsibleNoCommandGivenException() | |
// ); | ||
} | ||
|
||
/** | ||
* @covers \Asm\Ansible\Ansible::checkCommand | ||
* @covers \Asm\Ansible\Ansible::checkDir | ||
* @covers \Asm\Ansible\Ansible::__construct | ||
*/ | ||
public function testAnsibleCommandNotExecutableException() | ||
{ | ||
$this->expectException(CommandException::class); | ||
|
@@ -94,13 +72,6 @@ public function testAnsibleCommandNotExecutableException() | |
); | ||
} | ||
|
||
/** | ||
* @covers \Asm\Ansible\Ansible::playbook | ||
* @covers \Asm\Ansible\Ansible::createProcess | ||
* @covers \Asm\Ansible\Ansible::checkCommand | ||
* @covers \Asm\Ansible\Ansible::checkDir | ||
* @covers \Asm\Ansible\Ansible::__construct | ||
*/ | ||
public function testPlaybookCommandInstance() | ||
{ | ||
$ansible = new Ansible( | ||
|
@@ -114,13 +85,6 @@ public function testPlaybookCommandInstance() | |
$this->assertInstanceOf('\Asm\Ansible\Command\AnsiblePlaybook', $playbook); | ||
} | ||
|
||
/** | ||
* @covers \Asm\Ansible\Ansible::galaxy | ||
* @covers \Asm\Ansible\Ansible::createProcess | ||
* @covers \Asm\Ansible\Ansible::checkCommand | ||
* @covers \Asm\Ansible\Ansible::checkDir | ||
* @covers \Asm\Ansible\Ansible::__construct | ||
*/ | ||
public function testGalaxyCommandInstance() | ||
{ | ||
$ansible = new Ansible( | ||
|
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Oops, something went wrong.