Skip to content

Commit

Permalink
Merge branch 'master' into master
Browse files Browse the repository at this point in the history
  • Loading branch information
cuppett authored Mar 22, 2024
2 parents 89a2a13 + 5d9d356 commit 1ed604a
Show file tree
Hide file tree
Showing 3 changed files with 93 additions and 91 deletions.
146 changes: 69 additions & 77 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -3,58 +3,54 @@ name: CI
on:
push:
branches:
- '*'
- "*"
tags:
- '*'
- "*"
pull_request:
branches:
- '*'
- "*"

jobs:
build:
if: "!contains(github.event.head_commit.message, 'skip ci')"

runs-on: ubuntu-latest

timeout-minutes: 15

strategy:
fail-fast: false
matrix:
php:
- '8.1'
- '8.2'
- '8.3'
kubernetes:
- '1.26.11'
- '1.27.8'
- '1.28.4'
laravel:
- 9.*
- 10.*
prefer:
- 'prefer-lowest'
- 'prefer-stable'
php: ['8.1', '8.2', '8.3']
kubernetes: ['1.26.11', '1.27.8', '1.28.4']
laravel: ['9.*', '10.*', '11.*']
prefer: [prefer-lowest, prefer-stable]
include:
- laravel: 9.*
testbench: 7.*
- laravel: 10.*
testbench: 8.*
- 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@v4
- uses: actions/checkout@v4

- name: Setup PHP
uses: shivammathur/setup-php@v2
with:
php-version: ${{ matrix.php }}
extensions: dom, curl, libxml, mbstring, zip, pcntl, pdo, sqlite, pdo_sqlite, bcmath, soap, intl, gd, exif, iconv, yaml
coverage: pcov
- name: Setup PHP
uses: shivammathur/setup-php@v2
with:
php-version: ${{ matrix.php }}
extensions: dom, curl, libxml, mbstring, zip, pcntl, pdo, sqlite, pdo_sqlite, bcmath, soap, intl, gd, exif, iconv, yaml
coverage: pcov

- name: Get composer cache directory
id: composer-cache
run: echo "dir=$(composer config cache-files-dir)" >> $GITHUB_OUTPUT
- name: Get composer cache directory
id: composer-cache
run: echo "dir=$(composer config cache-files-dir)" >> $GITHUB_OUTPUT

- name: Prepare cache key
id: prep
Expand All @@ -68,49 +64,45 @@ jobs:
echo "cache-key=composer-php-$PHP_VERSION-$LARAVEL_VERSION-$PREFER_VERSION-${{ hashFiles('composer.json') }}" >> $GITHUB_OUTPUT
- uses: actions/cache@v3
name: Cache dependencies
with:
path: ${{ steps.composer-cache.outputs.dir }}
key: ${{ steps.prep.outputs.cache-key }}

- uses: medyagh/setup-minikube@latest
name: Setup Minikube
with:
minikube-version: 1.32.0
driver: docker
container-runtime: containerd
kubernetes-version: "v${{ matrix.kubernetes }}"

- name: Run Kubernetes Proxy
run: |
kubectl proxy --port=8080 --reject-paths="^/non-existent-path" &
- 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
- name: Setup in-cluster config
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/
- name: Setting CRDs for testing
run: |
kubectl apply -f https://raw.githubusercontent.com/bitnami-labs/sealed-secrets/main/helm/sealed-secrets/crds/bitnami.com_sealedsecrets.yaml
# - name: Run static analysis
# run: |
# vendor/bin/psalm

- name: Run tests
run: |
vendor/bin/phpunit --coverage-text --coverage-clover=coverage.xml
- uses: codecov/[email protected]
with:
fail_ci_if_error: false
- uses: actions/cache@v3
name: Cache dependencies
with:
path: ${{ steps.composer-cache.outputs.dir }}
key: ${{ steps.prep.outputs.cache-key }}

- uses: medyagh/setup-minikube@latest
name: Setup Minikube
with:
minikube-version: 1.32.0
driver: docker
container-runtime: containerd
kubernetes-version: "v${{ matrix.kubernetes }}"

- name: Run Kubernetes Proxy
run: |
kubectl proxy --port=8080 --reject-paths="^/non-existent-path" &
- 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
- name: Setup in-cluster config
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/
- name: Setting CRDs for testing
run: |
kubectl apply -f https://raw.githubusercontent.com/bitnami-labs/sealed-secrets/main/helm/sealed-secrets/crds/bitnami.com_sealedsecrets.yaml
- name: Run tests
run: |
vendor/bin/phpunit --coverage-text --coverage-clover=coverage.xml
- uses: codecov/[email protected]
with:
fail_ci_if_error: false
25 changes: 19 additions & 6 deletions composer.json
Original file line number Diff line number Diff line change
@@ -1,7 +1,19 @@
{
"name": "renoki-co/php-k8s",
"description": "Control your Kubernetes clusters with this PHP-based Kubernetes client. It supports any form of authentication, the exec API, and it has an easy implementation for CRDs.",
"keywords": ["laravel", "php", "kubernetes", "k8s", "k3s", "k0s", "cluster", "api", "kubeadm", "kubeapi", "kube"],
"keywords": [
"laravel",
"php",
"kubernetes",
"k8s",
"k3s",
"k0s",
"cluster",
"api",
"kubeadm",
"kubeapi",
"kube"
],
"license": "Apache-2.0",
"homepage": "https://github.com/renoki-co/php-k8s",
"authors": [
Expand All @@ -13,11 +25,12 @@
],
"require": {
"guzzlehttp/guzzle": "^6.5|^7.0",
"illuminate/macroable": "^9.35|^10.1",
"illuminate/support": "^9.35|^10.1",
"illuminate/macroable": "^9.35|^10.1|^11.0",
"illuminate/support": "^9.35|^10.1|^11.0",
"ratchet/pawl": "^0.4.1",
"symfony/process": "^5.4|^6.0",
"symfony/process": "^5.4|^6.0|^7.0",
"composer/semver": "^3.0"

},
"suggest": {
"ext-yaml": "YAML extension is used to read or generate YAML from PHP K8s internal classes."
Expand All @@ -37,9 +50,9 @@
},
"require-dev": {
"mockery/mockery": "^1.5",
"orchestra/testbench": "^8.15.0",
"orchestra/testbench": "^7.23|^8.1|^9.0",
"phpunit/phpunit": "^9.5.20|^10.0",
"vimeo/psalm": "^5.16"
"vimeo/psalm": "^4.20|^5.22"
},
"config": {
"sort-packages": true
Expand Down
13 changes: 5 additions & 8 deletions src/KubernetesCluster.php
Original file line number Diff line number Diff line change
Expand Up @@ -202,17 +202,14 @@ public function setResourceClass(string $resourceClass)
public function runOperation(string $operation, string $path, $payload = '', array $query = ['pretty' => 1])
{
switch ($operation) {
case static::WATCH_OP:
return $this->watchPath($path, $payload, $query);
case static::WATCH_OP: return $this->watchPath($path, $payload, $query);
break;
case static::WATCH_LOGS_OP:
return $this->watchLogsPath($path, $payload, $query);
case static::WATCH_LOGS_OP: return $this->watchLogsPath($path, $payload, $query);
break;
case static::EXEC_OP:
return $this->execPath($path, $query);
case static::EXEC_OP: return $this->execPath($path, $query);
break;
case static::ATTACH_OP:
return $this->attachPath($path, $payload, $query);
case static::ATTACH_OP: return $this->attachPath($path, $payload, $query);

break;
default: break;
}
Expand Down

0 comments on commit 1ed604a

Please sign in to comment.