PHPackages                             yeebase/readiness - PHPackages - PHPackages  [Skip to content](#main-content)[PHPackages](/)[Directory](/)[Categories](/categories)[Trending](/trending)[Leaderboard](/leaderboard)[Changelog](/changelog)[Analyze](/analyze)[Collections](/collections)[Log in](/login)[Sign up](/register)

1. [Directory](/)
2. /
3. [Utility &amp; Helpers](/categories/utility)
4. /
5. yeebase/readiness

Abandoned → [t3n/flow-healthstatus](/?search=t3n%2Fflow-healthstatus)ArchivedNeos-yeebase[Utility &amp; Helpers](/categories/utility)

yeebase/readiness
=================

1.3.0(7y ago)36.7k1MITPHP

Since Apr 10Pushed 7y ago3 watchersCompare

[ Source](https://github.com/yeebase/Yeebase.Readiness)[ Packagist](https://packagist.org/packages/yeebase/readiness)[ RSS](/packages/yeebase-readiness/feed)WikiDiscussions master Synced 3d ago

READMEChangelog (5)Dependencies (2)Versions (8)Used By (0)

[![Build Status](https://camo.githubusercontent.com/953cd51bb259cb183b95ee46aef433a6159a590c1de633cfd07e6b03a0a277db/68747470733a2f2f7472617669732d63692e636f6d2f796565626173652f596565626173652e52656164696e6573732e7376673f6272616e63683d6d6173746572)](https://travis-ci.com/yeebase/Yeebase.Readiness)

Yeebase.Readiness
=================

[](#yeebasereadiness)

Package to check the rediness of a flow application.

Useful in a kubernetes [readiness and liveness probe](https://kubernetes.io/docs/tasks/configure-pod-container/configure-liveness-readiness-probes/)to determine if a pod can serve traffic and is alive.

Usage
-----

[](#usage)

### Readiness

[](#readiness)

Simply execute the flow command `./flow app:isready`.

This will execute all tests defined in the `Yeebase.Readiness.testChain` of the Settings.yaml. If all tests have passed, the `readyChain` tasks will be executed.

After a successfully run of the ready chain an internal lock will be set to prevent repeated execution, so only the `readyChain` will be executed again. The `testChain` will be executed on every run. So the readyChain should bring your application in an "ready state". Make sure to initialize everything you need. The testChain should ping all services your application depends on.

### Liveness

[](#liveness)

Execute `./flow app:isalive` to check if your pod is still alive.

This will execute the `Yeebase.Readiness.livenessChain`.

Currently the liveness chain is empty by default and has one possible test: `statusCode`.

Configuration
-------------

[](#configuration)

Add all your tests in the following format in your apps Settings.yaml:

```
Yeebase:
  Readiness:
    testChain:
      yourUniqueTestKey:
        name: 'Optional name'
        test: 'database' // shorthand for a predefined task in Yeebase\Readiness\Test\*.Test or a full qualified class name
        options:
          key: 'value' // optional options for your test
        position: 'after otherTestKey' // optional position
```

After that, the check will execute the ready chain:

```
Yeebase:
  Readiness:
    readyChain:
      yourUniqueTaskKey:
        name: 'Optional name'
        task: 'command' // shorthand for a predefined task in Yeebase\Readiness\Task\*.Task or a full qualified class name
        options:
          key: 'value' // optional options for your task
        position: 'after otherTaskKey' / optional position
        lockName: 'mylock' // optional lock override. This will create a lock for this task only and ignore the global lock
```

After a successful ready chain invokation, you can call `./flow app:isalive` to execute your liveness chain:

```
Yeebase:
  Readiness:
    livenessChain:
      yourUniqueTestKey:
        name: 'Optional name'
        task: 'statusCode' // shorthand for a predefined task in Yeebase\Readiness\LivenessTest\*.Test or a full qualified class name
        options:
          key: 'value' // optional options for your task
        position: 'after otherTaskKey' / optional position
```

Advanced configuration
----------------------

[](#advanced-configuration)

Before each attempt to execute a ready task, the check will test the `Yeebase.Readiness.defaultReadyTaskCondition` to see if the task should be executed. In the default configuration this is simply a check to see if the ready lock is not yet set.

You can override this behaviour on a per task basis:

```
Yeebase:
  Readiness:
    readyChain:
      yourUniqueTaskKey:
        condition: '${Lock.isSet("mylock")}' // this can be any eel expression
        afterInvocation: '${Lock.set("mylock")}' // this will be executed after a successfull invocation
```

*(the `lockName` setting is simply a shorthand for exactly this example)*

To extend the eel context, you can provide additional helpers in `Yeebase.Readiness.defaultContext`.

Example Configuration
---------------------

[](#example-configuration)

This example could be used in your Flow package to make sure that your application pod has a ready state to serve traffic. Therefore it will always check the ping status for doctrine, redis and beanstalk. On the first run all missing database migrations will be executed, the redis cache flushed and static resources published. After a successfull run only the testChain will be executed again.

```
Yeebase:
  Readiness:
    testChain:
      database:
        test: doctrine
        position: start
      redis:
        test: redis
        options:
          hostmane: your-redis-host
      beanstalk:
        test: beanstalk
        options:
          hostname: your-beanstalk-host
    readyChain:
      migrations:
        task: command
        options:
          command: 'neos.flow:doctrine:migrate'
      flushRedis:
        name: 'Flush redis'
        position: 'start 100'
        task: redis
        options:
          hostname: your-redis-host
          command: FLUSHDB
          database: 0
      staticResources:
        name: 'Publish static resources'
        task: command
        position: 'end 20'
        lockname: staticresources
        cacheName: Yeebase_Readiness_LocalLock
        options:
          command: 'neos.flow:resource:publish'
          arguments:
            collection: static
    livenessChain:
      home:
        task: statusCode
        name: 'Homepage responds'
        options:
          url: '/'
          method: 'GET'
          statusCode: 200
```

Note the `lockname` configuration. This Configuration enables you to run tasks only once per deployment or always. By default the `Yeebase_Readiness_Lock` cache is used to read and write locks. Add this to your Caches.yaml and all your application pods will rely on the same lock files as they don't use the local file storage but redis. This will result in a execution once per deployment:

```
Yeebase_Readiness_Lock:
  backend: Neos\Cache\Backend\RedisBackend
  backendOptions:
    hostname: 'your-redis-server'
    database: 2
```

The `staticResources` task has a custom cacheName configured. To ensure that this task will be executed in each application pod set it to local file storage:

```
Yeebase_Readiness_LocalLock:
  frontend: Neos\Cache\Frontend\StringFrontend
  backend: Neos\Cache\Backend\FileBackend
```

###  Health Score

34

—

LowBetter than 77% of packages

Maintenance20

Infrequent updates — may be unmaintained

Popularity22

Limited adoption so far

Community13

Small or concentrated contributor base

Maturity68

Established project with proven stability

 Bus Factor1

Top contributor holds 72.7% of commits — single point of failure

How is this calculated?**Maintenance (25%)** — Last commit recency, latest release date, and issue-to-star ratio. Uses a 2-year decay window.

**Popularity (30%)** — Total and monthly downloads, GitHub stars, and forks. Logarithmic scaling prevents top-heavy scores.

**Community (15%)** — Contributors, dependents, forks, watchers, and maintainers. Measures real ecosystem engagement.

**Maturity (30%)** — Project age, version count, PHP version support, and release stability.

###  Release Activity

Cadence

Every ~97 days

Total

5

Last Release

2569d ago

### Community

Maintainers

![](https://avatars.githubusercontent.com/u/769789?v=4)[Johannes Steu](/maintainers/johannessteu)[@johannessteu](https://github.com/johannessteu)

![](https://www.gravatar.com/avatar/1761d781f5f02019a92554a360fadb464c08ac4a1b2e7799666fd90727c0c167?d=identicon)[brgmn](/maintainers/brgmn)

---

Top Contributors

[![johannessteu](https://avatars.githubusercontent.com/u/769789?v=4)](https://github.com/johannessteu "johannessteu (8 commits)")[![Torsten85](https://avatars.githubusercontent.com/u/531361?v=4)](https://github.com/Torsten85 "Torsten85 (3 commits)")

---

Tags

flowframeworkneoscms

### Embed Badge

![Health badge](/badges/yeebase-readiness/health.svg)

```
[![Health](https://phpackages.com/badges/yeebase-readiness/health.svg)](https://phpackages.com/packages/yeebase-readiness)
```

###  Alternatives

[neos/eel

The Embedded Expression Language (Eel) is a building block for creating Domain Specific Languages

122.0M27](/packages/neos-eel)[neos/form

Extensible and flexible API for building web forms

18853.0k40](/packages/neos-form)[neos/fusion-form

Fusion Form

19724.3k31](/packages/neos-fusion-form)[ttree/scheduler

Simple task scheduler for Neos Flow Framework

21108.8k1](/packages/ttree-scheduler)[avency/neos-vardump

Neos VarDump Package

147.1k](/packages/avency-neos-vardump)[flowpack/task

A Task scheduler for Neos Flow

1136.3k1](/packages/flowpack-task)

PHPackages © 2026

[Directory](/)[Categories](/categories)[Trending](/trending)[Changelog](/changelog)[Analyze](/analyze)
