open-feature / cloudbees-provider
The CloudBees provider package for OpenFeature
Requires
- php: ^8
- open-feature/sdk: ^2.0
- rollout/rox: ^5.0
Requires (Dev)
- ergebnis/composer-normalize: ^2.25
- friendsofphp/php-cs-fixer: ^3.13
- hamcrest/hamcrest-php: ^2.0
- mdwheele/zalgo: ^0.3.1
- mockery/mockery: ^1.5
- phan/phan: ^5.4
- php-parallel-lint/php-console-highlighter: ^1.0
- php-parallel-lint/php-parallel-lint: ^1.3
- phpstan/extension-installer: ^1.1
- phpstan/phpstan: ~1.10.0
- phpstan/phpstan-mockery: ^1.0
- phpstan/phpstan-phpunit: ^1.1
- psalm/plugin-mockery: ^0.11.0
- psalm/plugin-phpunit: ^0.18.0
- ramsey/coding-standard: ^2.0.3
- ramsey/composer-repl: ^1.4
- ramsey/conventional-commits: ^1.3
- roave/security-advisories: dev-latest
- spatie/phpunit-snapshot-assertions: ^4.2
- vimeo/psalm: ~4.30.0
README
Overview
CloudBees Feature Management is designed to release, control, and measure features at scale. This repository and package provides the client side code for interacting with it via the OpenFeature PHP SDK.
This package also builds on various PSRs (PHP Standards Recommendations) such as the Logger interfaces (PSR-3) and the Basic and Extended Coding Standards (PSR-1 and PSR-12).
Limitations
There is an open issue with object deserialization in the upstream library used for Rollout, CloudBees Feature Management SDK for PHP. Objects are also not first-class citizens of the feature management system, as in there is no direct "object" retrieval. Instead the OpenFeature provider builds upon the string retrieval with JSON as the expected format. This doesn't really work though, due to the open issue above. Once that is resolved, JSON objects saved in CloudBees Feature Management system will simply be accessible.
Installation
composer require open-feature/cloudbees-provider
Usage
The CloudBeesProvider
can be created with the static setup
method. This works in much the same way as the Rox::setup
method, so you can refer to the Rollout documentation for PHP here for more information.
// retrieve the OpenFeatureAPI instance $api = OpenFeatureAPI::getInstance(); // setup the CloudBeesProvider with the default settings $provider = CloudBeesProvider::setup($apiKey); // set the OpenFeature provider $api->setProvider($provider); // retrieve an OpenFeatureClient $client = $api->getClient('cloudbees-example', '1.0'); $flagValue = $client->getBooleanDetails('dev.openfeature.example_flag', true, null, null); // ... do work with the $flagValue // IMPORTANT! make sure to shutdown the CloudBees provider CloudBeesProvider::shutdown();
Development
PHP Versioning
This library targets PHP version 8.0 and newer. As long as you have any compatible version of PHP on your system you should be able to utilize the OpenFeature SDK.
This package also has a .tool-versions
file for use with PHP version managers like asdf
.
Installation and Dependencies
Install dependencies with composer install
. composer install
will update the composer.lock
with the most recent compatible versions.
We value having as few runtime dependencies as possible. The addition of any dependencies requires careful consideration and review.
Testing
Run tests with composer run test
.
Integration tests
The integration test suite utilizes a locally available mock server for Rollout called Roxy.
The docker image is published under rollout/roxy
.
For more information on Roxy, see the documentation.