diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 5ede26cf..a7c2afb5 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -21,25 +21,15 @@ jobs: strategy: fail-fast: false matrix: - php: ['8.1', '8.2'] - kubernetes: ['1.24.12', '1.25.8', '1.26.3'] - laravel: ['9.*', '10.*', '11.*'] + php: [8.2, 8.3, 8.4] + kubernetes: [1.32.9, 1.33.5, 1.34.1] + laravel: [11, 12] prefer: [prefer-lowest, prefer-stable] - include: - - laravel: "9.*" - testbench: "7.*" - - laravel: "10.*" - testbench: "8.*" - - laravel: "11.*" - testbench: "9.*" - exclude: - - laravel: "11.*" - php: "8.1" name: PHP ${{ matrix.php }} - Laravel ${{ matrix.laravel }} - K8s v${{ matrix.kubernetes }} --${{ matrix.prefer }} steps: - - uses: actions/checkout@v3 + - uses: actions/checkout@v4 - name: Setup PHP uses: shivammathur/setup-php@v2 @@ -48,7 +38,7 @@ jobs: extensions: dom, curl, libxml, mbstring, zip, pcntl, pdo, sqlite, pdo_sqlite, bcmath, soap, intl, gd, exif, iconv, yaml coverage: pcov - - uses: actions/cache@v3.0.5 + - uses: actions/cache@v4 name: Cache dependencies with: path: ~/.composer/cache/files @@ -57,7 +47,7 @@ jobs: - uses: medyagh/setup-minikube@latest name: Setup Minikube with: - minikube-version: 1.29.0 + minikube-version: 1.37.0 container-runtime: containerd kubernetes-version: v${{ matrix.kubernetes }} @@ -67,16 +57,21 @@ jobs: - name: Install dependencies run: | - composer require "laravel/framework:${{ matrix.laravel }}" "orchestra/testbench:${{ matrix.testbench }}" --no-interaction --no-update - composer update --${{ matrix.prefer }} --prefer-dist --no-interaction + composer require "laravel/framework:^${{ matrix.laravel }}.0" --dev "orchestra/testbench" --no-interaction --${{ matrix.prefer }} --prefer-dist - name: Setup in-cluster config + env: + TEST_TOKEN: some-token + TEST_CERT: c29tZS1jZXJ0Cg== + TEST_NAMESPACE: some-namespace run: | sudo mkdir -p /var/run/secrets/kubernetes.io/serviceaccount - echo "some-token" | sudo tee /var/run/secrets/kubernetes.io/serviceaccount/token - echo "c29tZS1jZXJ0Cg==" | sudo tee /var/run/secrets/kubernetes.io/serviceaccount/ca.crt - echo "some-namespace" | sudo tee /var/run/secrets/kubernetes.io/serviceaccount/namespace - sudo chmod -R 777 /var/run/secrets/kubernetes.io/serviceaccount/ + echo "$TEST_TOKEN" | sudo tee /var/run/secrets/kubernetes.io/serviceaccount/token + echo "$TEST_CERT" | sudo tee /var/run/secrets/kubernetes.io/serviceaccount/ca.crt + echo "$TEST_NAMESPACE" | sudo tee /var/run/secrets/kubernetes.io/serviceaccount/namespace + sudo chmod 644 /var/run/secrets/kubernetes.io/serviceaccount/token + sudo chmod 644 /var/run/secrets/kubernetes.io/serviceaccount/ca.crt + sudo chmod 644 /var/run/secrets/kubernetes.io/serviceaccount/namespace - name: Setting CRDs for testing run: | @@ -86,6 +81,6 @@ jobs: run: | vendor/bin/phpunit --coverage-text --coverage-clover=coverage.xml - - uses: codecov/codecov-action@v3.1.0 + - uses: codecov/codecov-action@v4 with: fail_ci_if_error: false diff --git a/.gitignore b/.gitignore index 93dbbb09..bb1f1b91 100644 --- a/.gitignore +++ b/.gitignore @@ -3,4 +3,4 @@ composer.phar composer.lock .DS_Store .idea/ -.phpunit.result.cache \ No newline at end of file +.phpunit.cache diff --git a/composer.json b/composer.json index 5a531531..4313d1ee 100644 --- a/composer.json +++ b/composer.json @@ -24,12 +24,13 @@ } ], "require": { - "guzzlehttp/guzzle": "^6.5|^7.0", - "illuminate/macroable": "^9.35|^10.1|^11.0", - "illuminate/support": "^9.35|^10.1|^11.0", + "php": "^8.2|^8.3|^8.4|^8.5", + "guzzlehttp/guzzle": "^7.0", + "illuminate/macroable": "^11.0|^12.0", + "illuminate/support": "^11.0|^12.0", "ratchet/pawl": "^0.4.1", - "symfony/process": "^5.4|^6.0|^7.0", - "vierbergenlars/php-semver": "^2.1|^3.0" + "symfony/process": "^6.0|^7.0", + "vierbergenlars/php-semver": "^3.0" }, "suggest": { "ext-yaml": "YAML extension is used to read or generate YAML from PHP K8s internal classes." @@ -48,13 +49,13 @@ "test": "vendor/bin/phpunit" }, "require-dev": { - "mockery/mockery": "^1.5", - "orchestra/testbench": "^7.23|^8.1|^9.0", - "phpunit/phpunit": "^9.5.20|^10.0", - "vimeo/psalm": "^4.20|^5.22" + "mockery/mockery": "^1.6", + "orchestra/testbench": "^9.0|^10.0", + "phpunit/phpunit": "^10.5|^11.0" }, "config": { "sort-packages": true }, - "minimum-stability": "dev" + "minimum-stability": "dev", + "prefer-stable": true } diff --git a/phpunit.xml b/phpunit.xml index ef9baef1..9a5eb214 100644 --- a/phpunit.xml +++ b/phpunit.xml @@ -1,16 +1,23 @@ - - - - src/ - - - - - tests - - - - - + + + + tests + + + + + + + + + + src + + diff --git a/psalm.xml b/psalm.xml deleted file mode 100644 index b7d600f6..00000000 --- a/psalm.xml +++ /dev/null @@ -1,18 +0,0 @@ - - - - - - - - - - - - diff --git a/tests/KubeConfigTest.php b/tests/KubeConfigTest.php index 82a657ec..e2bff3aa 100644 --- a/tests/KubeConfigTest.php +++ b/tests/KubeConfigTest.php @@ -2,6 +2,7 @@ namespace RenokiCo\PhpK8s\Test; +use PHPUnit\Framework\Attributes\DataProvider; use RenokiCo\PhpK8s\Exceptions\KubeConfigBaseEncodedDataInvalid; use RenokiCo\PhpK8s\Exceptions\KubeConfigClusterNotFound; use RenokiCo\PhpK8s\Exceptions\KubeConfigContextNotFound; @@ -208,10 +209,8 @@ public function test_in_cluster_config() K8sResource::setDefaultNamespace('default'); } - /** - * @dataProvider environmentVariableContextProvider - */ - public function test_from_environment_variable(string $context = null, string $expectedDomain) + #[DataProvider('environmentVariableContextProvider')] + public function test_from_environment_variable(?string $context, string $expectedDomain) { $_SERVER['KUBECONFIG'] = __DIR__.'/cluster/kubeconfig.yaml::'.__DIR__.'/cluster/kubeconfig-2.yaml'; @@ -220,7 +219,7 @@ public function test_from_environment_variable(string $context = null, string $e $this->assertSame("https://{$expectedDomain}:8443/?", $cluster->getCallableUrl('/', [])); } - public function environmentVariableContextProvider(): iterable + public static function environmentVariableContextProvider(): iterable { yield [null, 'minikube']; yield ['minikube-2', 'minikube-2'];