Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/shipsaas/dev-flag
Enabling your Application development to follow the CI/CD best practice by using the DevFlag
https://github.com/shipsaas/dev-flag
best-practices ci-cd cicd laravel php
Last synced: about 2 months ago
JSON representation
Enabling your Application development to follow the CI/CD best practice by using the DevFlag
- Host: GitHub
- URL: https://github.com/shipsaas/dev-flag
- Owner: shipsaas
- License: mit
- Created: 2022-12-17T01:49:02.000Z (about 2 years ago)
- Default Branch: main
- Last Pushed: 2023-06-04T11:10:16.000Z (over 1 year ago)
- Last Synced: 2024-04-23T17:06:55.974Z (9 months ago)
- Topics: best-practices, ci-cd, cicd, laravel, php
- Language: PHP
- Homepage:
- Size: 43 KB
- Stars: 0
- Watchers: 0
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# Laravel DevFlag / FeatureFlag - ShipSaaS
[![Build & Test (Laravel vers)](https://github.com/shipsaas/dev-flag/actions/workflows/build_laravel.yml/badge.svg)](https://github.com/shipsaas/dev-flag/actions/workflows/build_laravel.yml)
[![Build & Test (PHP vers)](https://github.com/shipsaas/dev-flag/actions/workflows/build_php.yml/badge.svg)](https://github.com/shipsaas/dev-flag/actions/workflows/build_php.yml)
[![Try Install Package (Laravel vers)](https://github.com/shipsaas/dev-flag/actions/workflows/try-installation.yml/badge.svg)](https://github.com/shipsaas/dev-flag/actions/workflows/try-installation.yml)
[![codecov](https://codecov.io/gh/shipsaas/dev-flag/branch/main/graph/badge.svg?token=4WAI95PDUT)](https://codecov.io/gh/shipsaas/dev-flag)DevFlag (aka Feature Flag) enabling your Application Development to follow the CI/CD best practices.
## Support
- PHP 8.0+
- Laravel 9.x & 10.x## Install
```bash
composer require shipsaas/dev-flag
```Then hit this to get the `devflag.php` to your codebase:
```bash
php artisan vendor:publish --tag=devflag
```## Deep dive
### Problems
IRL projects, it is inevitable for PRs that contains a lot of changes (thousands of lines, 50+ files).
For those PRs, even you have 10 people to review, they still won't cover everything 100%. Simply because it is too much.
Everybody loves small PRs and that is the undeniable fact. But how can we achieve it?
Welcome to DevFlag!
### Solutions
DevFlag will help you to achieve that. Not only the tool, but also require a bit of your critical thinking.Before starting development, you need to ensure:
- The scope, the changes that you will do (aka Technical Breakdown)
- This is the most important phase, you need to finalize the:
- Schema changes: avoid updating too much
- Code
- Create a DevFlag
- Start the developmentFurther reading for the PROs:
- [Practical on DevFlag](https://antman-does-software.com/dev-flags-supercharge-your-continuous-deployment-by-dropping-database-feature-toggles)
## Usage
### Add a new Flag
Open the `app/devflag.php`, prepare your application's environments. Add your flag into all envs:
```php
return [
'local' => [
'useNewFeature' => true,
],
'testing' => [
'useNewFeature' => true,
],
'staging' => [
'useNewFeature' => false,
],
'production' => [
'useNewFeature' => false,
],
];
```### Check
Func-way:
```php
function transfer(): ?Transaction
{
$useNewFeature = useDevFlag('useNewFeature');if (!$useNewFeature) {
return null;
}// doing awesome things
return $transaction;
}
```OOP/DI-way:
```php
use ShipSaaS\DevFlag\Contracts\DevFlagInterface;public function __construct(private DevFlagInterface $devFlag) {}
public function transfer(): mixed
{
if (!$this->devFlag->can('useNewFeature')) {
return null;
}
// handle new things
}
```## IRL Use cases
Check out WIKI: https://github.com/shipsaas/dev-flag/wiki
## Contribution rules
- Follow PSR-1 & PSR-12 coding conventions
- TDD is a mustFeel free to open a PR 😉
## Maintainer
- @sethsandaru## License
MIT License