php censor

PHP Censor is an open source self-hosted continuous integration server for PHP projects.

679
145
PHP

Minimum PHP version: 7.4.0
Actions
PHP Censor
Codecov
Latest Version
Total downloads
License

PHP Censor

PHP Censor is an open source, self-hosted, continuous integration server for PHP projects
(PHPCI fork). Official twitter @php_censor.

PHP Censor versions:

Version Latest Branch Status Minimal PHP Version
1.0 (Morty Smith) 1.0.16 release-1.0 Old version (UNSUPPORTED) >=5.6, <8.0
1.1 (Birdperson) 1.1.6 release-1.1 Old version (UNSUPPORTED) >=5.6, <8.0
1.2 (Summer Smith) 1.2.4 release-1.2 Old version (UNSUPPORTED) >=5.6, <8.0
1.3 (Jerry Smith) 1.3.7 release-1.3 Old version (UNSUPPORTED) >=5.6, <8.0
2.0 (Rick Sanchez) 2.0.13 release-2.0 Last stable version (Upgrade from v1 to v2) >=7.4
2.1 (Mr. Meeseeks) 2.1.5 release-2.1 Current stable version >=7.4
2.2 WIP master Feature minor version (WIP) >=7.4

Dashboard

More screenshots.

System requirements

  • Unix-like OS (Windows isn’t supported);

  • PHP 7.4+ (with OpenSSL support and enabled functions: exec(), shell_exec() and proc_open());

  • Web-server (Nginx or Apache2);

  • Database (MySQL/MariaDB or PostgreSQL);

  • Beanstalkd queue;

Features

  • Clone project from GitHub, Bitbucket (Git/Hg),
    GitLab, Git, Hg (Mercurial), SVN (Subversion) or from local
    directory;

  • Set up and tear down database tests for PostgreSQL, MySQL or
    SQLite;

  • Install Composer dependencies;

  • Run tests for PHPUnit, Atoum, Behat, Codeception and PHPSpec;

  • Check code via Lint, PHPParallelLint, Pdepend, PHPCodeSniffer, PHPCpd, PHPCsFixer, PHPDocblockChecker, PHPLoc,
    PHPMessDetector, PHPTalLint and TechnicalDebt;

  • Run through any combination of the other supported plugins, including Campfire,
    CleanBuild, CopyBuild, Deployer, Env, Git, Grunt, Gulp, PackageBuild, Phar, Phing, Shell and Wipe;

  • Send notifications to Email, XMPP, Slack, IRC, Flowdock and
    Telegram;

  • Use your LDAP-server for authentication;

Changelog

Versions changelog.

Roadmap

See milestones.

Installing

See Installing section in documentation;

Updating

See Updating section in documentation;

Configuring project

There are several ways to set up the project:

  • Add project without any project config (Runs “zero-config” plugins, including: Composer, TechnicalDebt, PHPLoc,
    PHPCpd, PHPCodeSniffer, PHPMessDetector, PHPDocblockChecker, PHPParallelLint, PHPUnit and Codeception);

  • Similar to Travis CI, to support PHP Censor in your project, you simply need to add a
    .php-censor.yml file to the root of your repository;

  • Add project config in PHP Censor project page (And it will cancel file config from project repository);

The project config should look something like this:

setup:
  composer:
    action:    "install"
    directory: "."
test:
  php_unit:
    config: "phpunit.xml"
  php_mess_detector:
    allow_failures: true
  php_code_sniffer:
    standard: "PSR2"
  php_cpd:
    allow_failures: true
complete:
  email_notify:
    default_mailto_address: [email protected]

More details about configuring project in documentation.

Migrations

Run to apply latest migrations:

cd /path/to/php-censor
./bin/console php-censor-migrations:migrate

Run to create a new migration:

cd /path/to/php-censor
./bin/console php-censor-migrations:create NewMigrationName

Code style

cd /path/to/php-censor

./vendor/bin/php-cs-fixer fix --allow-risky=yes

Tests

cd /path/to/php-censor

./vendor/bin/phpunit --configuration ./phpunit.xml.dist --coverage-html ./tests/runtime/coverage -vvv --colors=always

For Phar plugin tests set phar.readonly setting to Off (0) in php.ini config. Otherwise the tests will be skipped.

For database tests create an empty databases on ‘localhost’ with user/password for MySQL/PostgreSQL and set env
variables from phpunit.xml.dist config. For example:

#!/usr/bin/env bash

psql --username="test" --host="127.0.0.1" --echo-all --command="DROP DATABASE IF EXISTS \"php-censor-test\";"
psql --username="test" --host="127.0.0.1" --echo-all --command="CREATE DATABASE \"php-censor-test\";"

mysql --user="test" --password="test" --host="127.0.0.1" --verbose --execute="CREATE DATABASE IF NOT EXISTS \`php-censor-test\`;"

export SKIP_DB_TESTS=0;\
export POSTGRESQL_DBNAME=php-censor-test;\
export POSTGRESQL_USER=test;\
export POSTGRESQL_PASSWORD=test;\
export MYSQL_DBNAME=php-censor-test;\
export MYSQL_USER=test;\
export MYSQL_PASSWORD=test;\
vendor/bin/phpunit --configuration=phpunit.xml.dist --verbose

Documentation

Full PHP Censor documentation.

License

PHP Censor is open source software licensed under the BSD-2-Clause license.