From d032468aa17c223c96850cbdb57172f13da5ce03 Mon Sep 17 00:00:00 2001 From: Julius Kiekbusch Date: Wed, 4 Sep 2024 15:08:58 +0200 Subject: [PATCH 01/11] Test Building Docker Images --- .github/workflows/tests.yml | 68 +++++++++++++++++++++++++++++++++++++ 1 file changed, 68 insertions(+) create mode 100644 .github/workflows/tests.yml diff --git a/.github/workflows/tests.yml b/.github/workflows/tests.yml new file mode 100644 index 00000000..84014e51 --- /dev/null +++ b/.github/workflows/tests.yml @@ -0,0 +1,68 @@ +name: Docker Compose Test + +on: + push: + branches: + - master + - '*.x' + pull_request: + +permissions: + contents: read + +jobs: + tests: + runs-on: ubuntu-latest + + strategy: + fail-fast: true + matrix: + include: + - php: '8.0' + laravel: 10 + - php: '8.1' + laravel: 10 + - php: '8.2' + laravel: 11 + - php: '8.3' + laravel: 11 + + name: PHP ${{ matrix.php }} - L${{ matrix.laravel }} + + steps: + + - name: Checkout code + uses: actions/checkout@v4 + with: + path: 'sail' + + - name: Setup PHP + uses: shivammathur/setup-php@v2 + with: + php-version: ${{ matrix.php }} + extensions: dom, curl, libxml, mbstring, zip, fileinfo + ini-values: error_reporting=E_ALL + tools: composer:v2 + coverage: none + + - name: Create a new laravel application + uses: composer create-project laravel/laravel app "${{ matrix.laravel }}.x" --remove-vsc --no-interaction --prefer-dist + + - name: Link Sail Repository + run: | + composer config minimum-stability dev + composer config repositories.sail path ../sail + composer require laravel/sail:* --dev -W + working-directory: app + + - name: Start Sail Container (In Background) + run: vendor/bin/sail up -d + working-directory: app + + - name: Run Tests in Sail Container + run: vendor/bin/sail test + working-directory: app + + - name: Stop Sail Container + run: vendor/bin/sail down + working-directory: app From adfabbe674f00541fed14a7446a023eecdd33fc9 Mon Sep 17 00:00:00 2001 From: Julius Kiekbusch Date: Wed, 4 Sep 2024 15:10:49 +0200 Subject: [PATCH 02/11] Fix workflow --- .github/workflows/tests.yml | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/.github/workflows/tests.yml b/.github/workflows/tests.yml index 84014e51..0021373b 100644 --- a/.github/workflows/tests.yml +++ b/.github/workflows/tests.yml @@ -46,7 +46,7 @@ jobs: coverage: none - name: Create a new laravel application - uses: composer create-project laravel/laravel app "${{ matrix.laravel }}.x" --remove-vsc --no-interaction --prefer-dist + run: composer create-project laravel/laravel app "${{ matrix.laravel }}.x" --remove-vsc --no-interaction --prefer-dist - name: Link Sail Repository run: | @@ -55,7 +55,11 @@ jobs: composer require laravel/sail:* --dev -W working-directory: app - - name: Start Sail Container (In Background) + - name: Install Sail into App + run: php artisan sail:install --no-interaction + working-directory: app + + - name: Build and Start Sail Container run: vendor/bin/sail up -d working-directory: app From 90a48e6e70f208679cd540de3b74299c3cc2d719 Mon Sep 17 00:00:00 2001 From: Julius Kiekbusch Date: Wed, 4 Sep 2024 15:11:35 +0200 Subject: [PATCH 03/11] Fix workflow --- .github/workflows/tests.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/tests.yml b/.github/workflows/tests.yml index 0021373b..0907e2fd 100644 --- a/.github/workflows/tests.yml +++ b/.github/workflows/tests.yml @@ -46,7 +46,7 @@ jobs: coverage: none - name: Create a new laravel application - run: composer create-project laravel/laravel app "${{ matrix.laravel }}.x" --remove-vsc --no-interaction --prefer-dist + run: composer create-project laravel/laravel app "${{ matrix.laravel }}.x" --remove-vcs --no-interaction --prefer-dist - name: Link Sail Repository run: | From 2cbf682cd382b35e5f34327c82375d1ba26b0421 Mon Sep 17 00:00:00 2001 From: Julius Kiekbusch Date: Wed, 4 Sep 2024 15:13:11 +0200 Subject: [PATCH 04/11] Use PHP 8.0 with Laravel 9 --- .github/workflows/tests.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/tests.yml b/.github/workflows/tests.yml index 0907e2fd..f84cda81 100644 --- a/.github/workflows/tests.yml +++ b/.github/workflows/tests.yml @@ -19,7 +19,7 @@ jobs: matrix: include: - php: '8.0' - laravel: 10 + laravel: 9 - php: '8.1' laravel: 10 - php: '8.2' From 9dfde2be012d660774f4b0475e5a3b23a15b7fee Mon Sep 17 00:00:00 2001 From: Julius Kiekbusch Date: Wed, 4 Sep 2024 15:26:22 +0200 Subject: [PATCH 05/11] Add selectable PHP version --- .github/workflows/tests.yml | 2 +- src/Console/Concerns/InteractsWithDockerComposeServices.php | 6 +++++- src/Console/InstallCommand.php | 3 ++- stubs/docker-compose.stub | 4 ++-- 4 files changed, 10 insertions(+), 5 deletions(-) diff --git a/.github/workflows/tests.yml b/.github/workflows/tests.yml index f84cda81..0c955b1c 100644 --- a/.github/workflows/tests.yml +++ b/.github/workflows/tests.yml @@ -56,7 +56,7 @@ jobs: working-directory: app - name: Install Sail into App - run: php artisan sail:install --no-interaction + run: php artisan sail:install --php=${{ matrix.php }} --no-interaction working-directory: app - name: Build and Start Sail Container diff --git a/src/Console/Concerns/InteractsWithDockerComposeServices.php b/src/Console/Concerns/InteractsWithDockerComposeServices.php index 0404525b..d972127f 100644 --- a/src/Console/Concerns/InteractsWithDockerComposeServices.php +++ b/src/Console/Concerns/InteractsWithDockerComposeServices.php @@ -116,7 +116,11 @@ protected function buildDockerCompose(array $services) $compose['services']['selenium']['image'] = 'seleniarm/standalone-chromium'; } - file_put_contents($this->laravel->basePath('docker-compose.yml'), Yaml::dump($compose, Yaml::DUMP_OBJECT_AS_MAP)); + $yaml = Yaml::dump($compose, Yaml::DUMP_OBJECT_AS_MAP); + + $yaml = str_replace('{{PHP_VERSION}}', $this->option('php'), $yaml); + + file_put_contents($this->laravel->basePath('docker-compose.yml'), $yaml); } /** diff --git a/src/Console/InstallCommand.php b/src/Console/InstallCommand.php index 9b197ee7..d2b3ada3 100644 --- a/src/Console/InstallCommand.php +++ b/src/Console/InstallCommand.php @@ -19,7 +19,8 @@ class InstallCommand extends Command */ protected $signature = 'sail:install {--with= : The services that should be included in the installation} - {--devcontainer : Create a .devcontainer configuration directory}'; + {--devcontainer : Create a .devcontainer configuration directory} + {--php=8.3 : The PHP version that should be used}'; /** * The console command description. diff --git a/stubs/docker-compose.stub b/stubs/docker-compose.stub index 9619b379..c574efcb 100644 --- a/stubs/docker-compose.stub +++ b/stubs/docker-compose.stub @@ -2,11 +2,11 @@ services: laravel.test: build: - context: ./vendor/laravel/sail/runtimes/8.3 + context: ./vendor/laravel/sail/runtimes/{{PHP_VERSION}} dockerfile: Dockerfile args: WWWGROUP: '${WWWGROUP}' - image: sail-8.3/app + image: sail-{{PHP_VERSION}}/app extra_hosts: - 'host.docker.internal:host-gateway' ports: From 75939b95591828e7e21a23e69ed5e2ff70fde5dc Mon Sep 17 00:00:00 2001 From: Julius Kiekbusch Date: Wed, 4 Sep 2024 15:32:22 +0200 Subject: [PATCH 06/11] Remove Sail before testing --- .github/workflows/tests.yml | 16 ++++++++++++---- 1 file changed, 12 insertions(+), 4 deletions(-) diff --git a/.github/workflows/tests.yml b/.github/workflows/tests.yml index 0c955b1c..d5a6248f 100644 --- a/.github/workflows/tests.yml +++ b/.github/workflows/tests.yml @@ -59,14 +59,22 @@ jobs: run: php artisan sail:install --php=${{ matrix.php }} --no-interaction working-directory: app - - name: Build and Start Sail Container - run: vendor/bin/sail up -d + - name: Remove Sail + run: composer remove laravel/sail --no-interaction + working-directory: app + + - name: Start Sail Container + run: ../sail/bin/sail up -d + working-directory: app + + - name: Run Migrations + run: ../sail/bin/sail artisan migrate --no-interaction working-directory: app - name: Run Tests in Sail Container - run: vendor/bin/sail test + run: ../sail/bin/sail test working-directory: app - name: Stop Sail Container - run: vendor/bin/sail down + run: ../sail/bin/sail down working-directory: app From e53299794f2ec7cc0ff46e068c185c45f455ab9b Mon Sep 17 00:00:00 2001 From: Julius Kiekbusch Date: Wed, 4 Sep 2024 15:37:22 +0200 Subject: [PATCH 07/11] Fix --- .github/workflows/tests.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/tests.yml b/.github/workflows/tests.yml index d5a6248f..dc104284 100644 --- a/.github/workflows/tests.yml +++ b/.github/workflows/tests.yml @@ -60,7 +60,7 @@ jobs: working-directory: app - name: Remove Sail - run: composer remove laravel/sail --no-interaction + run: composer remove laravel/sail --dev --no-interaction -W working-directory: app - name: Start Sail Container From a44ab971c840049f12a4729ac4faf08b0ce76921 Mon Sep 17 00:00:00 2001 From: Julius Kiekbusch Date: Wed, 4 Sep 2024 15:48:48 +0200 Subject: [PATCH 08/11] Output .env --- .github/workflows/tests.yml | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/.github/workflows/tests.yml b/.github/workflows/tests.yml index dc104284..f1fe532f 100644 --- a/.github/workflows/tests.yml +++ b/.github/workflows/tests.yml @@ -67,6 +67,10 @@ jobs: run: ../sail/bin/sail up -d working-directory: app + - name: Output .env + run: cat .env + working-directory: app + - name: Run Migrations run: ../sail/bin/sail artisan migrate --no-interaction working-directory: app From 56f3113b0a413ec9aeee06694b161e180828e9d6 Mon Sep 17 00:00:00 2001 From: Julius Kiekbusch Date: Wed, 4 Sep 2024 16:00:37 +0200 Subject: [PATCH 09/11] wip --- .github/workflows/tests.yml | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/.github/workflows/tests.yml b/.github/workflows/tests.yml index f1fe532f..db895d59 100644 --- a/.github/workflows/tests.yml +++ b/.github/workflows/tests.yml @@ -56,7 +56,9 @@ jobs: working-directory: app - name: Install Sail into App - run: php artisan sail:install --php=${{ matrix.php }} --no-interaction + run: | + php artisan sail:install --php=${{ matrix.php }} --no-interaction + php artisan sail:publish --no-interaction working-directory: app - name: Remove Sail @@ -71,6 +73,10 @@ jobs: run: cat .env working-directory: app + - name: Output docker-compose.yml + run: cat docker-compose.yml + working-directory: app + - name: Run Migrations run: ../sail/bin/sail artisan migrate --no-interaction working-directory: app From d26588d96aaa0cb9ce1eb12a398de88e0217dd14 Mon Sep 17 00:00:00 2001 From: Julius Kiekbusch Date: Wed, 4 Sep 2024 16:06:33 +0200 Subject: [PATCH 10/11] wait for all services --- .github/workflows/tests.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/tests.yml b/.github/workflows/tests.yml index db895d59..6dec54ce 100644 --- a/.github/workflows/tests.yml +++ b/.github/workflows/tests.yml @@ -66,7 +66,7 @@ jobs: working-directory: app - name: Start Sail Container - run: ../sail/bin/sail up -d + run: ../sail/bin/sail up -d --wait working-directory: app - name: Output .env From e14cebc3b4383e6002544f1c9545ff3b297cbcd2 Mon Sep 17 00:00:00 2001 From: Julius Kiekbusch Date: Wed, 4 Sep 2024 16:11:42 +0200 Subject: [PATCH 11/11] Remove unneded steps --- .github/workflows/tests.yml | 8 -------- 1 file changed, 8 deletions(-) diff --git a/.github/workflows/tests.yml b/.github/workflows/tests.yml index 6dec54ce..c84dabb4 100644 --- a/.github/workflows/tests.yml +++ b/.github/workflows/tests.yml @@ -69,14 +69,6 @@ jobs: run: ../sail/bin/sail up -d --wait working-directory: app - - name: Output .env - run: cat .env - working-directory: app - - - name: Output docker-compose.yml - run: cat docker-compose.yml - working-directory: app - - name: Run Migrations run: ../sail/bin/sail artisan migrate --no-interaction working-directory: app