PHP Censor is a open source self-hosted continuous integration server for PHP projects (PHPCI fork).
Twitter: @php_censor.
More screenshots.
- System requirements
- Features
- Installing
- Installing via Docker
- Updating
- Configuring project
- Migrations
- Tests
- Documentation
- License
-
Unix-like OS (Windows isn't supported);
-
PHP 5.6+ (with OpenSSL support and enabled functions:
exec()
,shell_exec()
andproc_open()
); -
Web-server (Nginx or Apache2);
-
Database (MySQL/MariaDB or PostgreSQL);
-
Beanstalkd queue (Optional);
-
Clone project from Github, Bitbucket, Gitlab, Git, Mercurial, SVN 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, PHPMessDetect, PHPTalLint and TechnicalDept;
-
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 on Email, XMPP, Slack, IRC, Flowdock, HipChat and Telegram;
-
Use your LDAP-server for authentication;
- Go to the directory in which you want to install PHP Censor, for example:
/var/www
:
cd /var/www
- Create project by Composer:
composer create-project php-censor/php-censor php-censor.local --keep-vcs
Or download latest archive from Github, unzip it and run
composer install
.
-
Create empty database for application (Mysql/MariaDB or Postgres);
-
Install Beanstalkd Queue (Optional, if you are going to use queue with Worker):
aptitude install beanstalkd # For deb-based
- Install PHP Censor itself:
cd ./php-censor.local
# Interactive installation
./bin/console php-censor:install
# Non-interactive installation
./bin/console php-censor:install --url='http://php-censor.local' --db-type=pgsql --db-host=localhost --db-name=php-censor --db-user=php-censor --db-password=php-censor --db-port=null --admin-name=admin --admin-password=admin --admin-email='[email protected]' --queue-use=1 --queue-host=localhost --queue-name=php-censor
# Non-interactive installation with prepared config.yml file
./bin/console php-censor:install --config-from-file=yes --admin-name=admin --admin-password=admin --admin-email='[email protected]'
-
Add a virtual host to your web server, pointing to the
public
directory within your new PHP Censor directory. You'll need to set up rewrite rules to point all non-existent requests to PHP Censor; -
Set up the PHP Censor Worker (Need configured Queue) or a cron-job to run PHP Censor builds;
If you want to install PHP Censor as Docker container, you can use php-censor/docker-php-censor project.
-
Go to your PHP Censor directory (to
/var/www/php-censor.local
for example):cd /var/www/php-censor.local
-
Pull the latest code from repository by Git (If you want latest
master
branch):git checkout master git pull -r
Or pull latest version:
git fetch git checkout <version>
-
Update the Composer dependencies:
composer install
-
Update the database scheme:
./bin/console php-censor-migrations:migrate
-
Restart Supervisord workers (If you use workers and Supervisord):
sudo supervisorctl status sudo supervisorctl restart <worker:worker_00> ... sudo supervisorctl restart <worker:worker_nn>
Or restart Systemd workers (If you use workers and Systemd):
sudo systemctl restart <[email protected]> ... sudo systemctl restart <[email protected]>
There are several ways to set up the project:
-
Add project without any project config (Runs "zero-config" plugins, including: Composer, TechnicalDept, PHPLoc, PHPCpd, PHPCodeSniffer, PHPMessDetect, 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
(phpci.yml
/.phpci.yml
for backward compatibility with PHPCI) 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"
test:
php_unit:
config: "phpunit.xml"
php_mess_detector:
allow_failures: true
php_code_sniffer:
standard: "PSR2"
php_cpd:
allow_failures: true
complete:
email:
default_mailto_address: [email protected]
More details about configuring project.
Run to apply latest migrations:
cd /path/to/php-censor
./bin/console php-censor-migrations:migrate
Run to create new migration:
cd /path/to/php-censor
./bin/console php-censor-migrations:create NewMigrationName
cd /path/to/php-censor
# For testing on MySQL DB
./vendor/bin/phpunit --configuration ./phpunit.mysql.xml
# For testing on PostgreSQL
./vendor/bin/phpunit --configuration ./phpunit.pgsql.xml
For Phar plugin tests set 'phar.readonly' setting to Off (0) in php.ini
config. Otherwise tests will be skipped.
For database B8Framework tests create empty 'b8_test' database on 'localhost' with user/password: root/<empty>'
for MySQL and with user/password: postgres/<empty>'
for PostgreSQL (You can change default test user, password and
database name in phpunit.mysql|pgsql.xml
config). If connection failed tests will be skipped.
Full PHP Censor documentation.
PHP Censor is open source software licensed under the BSD-2-Clause license.