PHPCI is a free and open source continuous integration tool specifically designed for PHP.

Overview

PHPCI

PHPCI is a free and open source (BSD License) continuous integration tool specifically designed for PHP. We've built it with simplicity in mind, so whilst it doesn't do everything Jenkins can do, it is a breeze to set up and use.

What it does:

  • Clones your project from Github, Bitbucket or a local path
  • Allows you to set up and tear down test databases.
  • Installs your project's Composer dependencies.
  • Runs through any combination of the supported plugins.
  • You can mark directories for the plugins to ignore.
  • You can mark certain plugins as being allowed to fail (but still run.)

What it doesn't do (yet):

  • Virtualised testing.
  • Multiple PHP-version tests.
  • Install PEAR or PECL extensions.
  • Deployments - We strongly recommend using Deployer

Getting Started:

We've got documentation on our website on installing PHPCI and adding support for PHPCI to your projects.

Contributing

Contributions from others would be very much appreciated! Please read our guide to contributing for more information on how to get involved.

Questions?

Your best place to go is the mailing list. If you're already a member of the mailing list, you can simply email [email protected].

Comments
  • WIP: Languages Support

    WIP: Languages Support

    Working on adding language support.

    To do:

    UI:

    • [x] Login
    • [x] Forgot Password
    • [x] Reset Password
    • [x] Dashboard
    • [x] Project
      • [x] Add
      • [x] Edit
      • [x] View
    • [x] Users
      • [x] Add
      • [x] Edit
      • [x] Edit Profile
      • [x] View
    • [x] Settings
    • [x] Builds
      • [x] List
      • [x] View
    • [x] Plugins

    Command Line Tools:

    • [x] Install
    • [x] Update
    • [x] Poll
    • [x] Create Admin
    • [x] Run Builds
    • [x] Builder
      • [x] Build Plugins

    Languages

    • [x] English
    • [x] German (Provided by @thormeier)
    • [x] Dutch (Provided by @matthiasmullie and @tvbeek)
    • [x] Russian (Provided by @corpsee, @xboston, @ViGo5190)
    • [x] French (Provided by @shulard)
    • [x] Danish (Provided by @NamelessCoder)
    • [x] Greek
    • [x] Polish
    • [ ] Arabic
    • [ ] Spanish (Looking for volunteers)
    • [x] Italian (Provided by @mavimo)
    • [ ] Ukrainian (Provided by @borales)
    • [ ] Brazilian Portuguese (Provided by @gustavoheinriq)
    • [ ] Chinese (Looking for volunteers)
    • [ ] Japanese (Looking for volunteers)
    enhancement:feature 
    opened by dancryer 33
  • PHPCI printing only

    PHPCI printing only "Class PHPCI\\Controller not found" error

    Oya,

    I've just installed PHPCI and found out it's not working. The installation process went without problems but website itself is a bit blank. In logs I've found an error: Fatal error: Class 'PHPCI\\Controller' not found in /vendor/block8/b8framework/b8/Application.php on line 93

    So, here's the Nginx config:

    server {
      server_name ci.example.com;
      root /var/www/example.com/ci/public;
      access_log off;
      error_log /var/www/example.com/ci/error.log;
      index index.php;
    
      location / {
        try_files $uri $uri/ /index.php$is_args$args;
      }
    
      location ~ (index)\.php$ {
        include fastcgi_params;
        fastcgi_pass unix:/opt/php-5.5.12/var/run/phpci.sock;
        fastcgi_param SCRIPT_FILENAME /public$fastcgi_script_name;
      }
    }
    

    And here's the PHP pool config:

    [ci.example.com]
    listen = /opt/php-5.5.12/var/run/phpci.sock
    listen.owner = www-data
    listen.group = www-data
    listen.mode = 0660
    user = www-data
    group = www-data
    pm = dynamic
    pm.max_children = 15
    pm.start_servers = 2
    pm.min_spare_servers = 2
    pm.max_spare_servers = 10
    chroot = /var/www/example.com/ci
    chdir = /
    

    My guess is that the problem might be somewhere in the fact that the application is locked in the chroot. I've dumped $_SERVER to see what is going in...

    [SCRIPT_FILENAME] => /public/index.php
    [SCRIPT_NAME] => /index.php
    [REQUEST_URI] => /session/login
    [DOCUMENT_URI] => /index.php
    

    And then checked the $fc:

    PHPCI\Application Object
    (
        [route:protected] => 
        [controller:protected] => 
        [request:protected] => b8\Http\Request Object
            (
                [params:protected] => Array
                    (
                    )
    
                [data:protected] => Array
                    (
                        [path] => n/login
                        [parts] => Array
                            (
                                [0] => n
                                [1] => login
                            )
    
                    )
    
            )
    ...
    

    And there is something... The path value is n/login instead of session/login.

    So, in case you get a spare minute or two, I'd be happy if you've checked what might be a cause and how to fix it.

    flag:requires-feedback bug:b8framework component:front-end bug:new 
    opened by danaketh 30
  • about the dashboard projects status

    about the dashboard projects status

    I think that it would be nice if the got the color based on the last build status I mean if the last build was a success it should be green , even if he had for example 3 builds failed out of 5 .

    the visuality here should be based on the last build not the whole project status.

    flag:requires-feedback component:front-end enhancement:cleanup 
    opened by zaherg 26
  • phpci does not work after installation

    phpci does not work after installation

    When trying to install phpci according to https://github.com/Block8/PHPCI/wiki/Installing-PHPCI and calling the Application from my browser I am redirected from https://...../phpci to https://...../phpci/session/login

    Also included the mod_rewrite lines within an .htaccess and put it into my apache configuration (+restart). Does not make any difference

    opened by barbos3000 24
  • Codeception improvements

    Codeception improvements

    A more full featured codeception plugin. Parses the XML return from codeception test results and uses some of them in the display. Stores all of them in the meta table.

    What it looks like

    flag:ready-to-merge 
    opened by cooperaj 23
  • Slack notifications always failed

    Slack notifications always failed

    Hi

    I'm using the Slack Notifier plugin and every time a build runs and completes, no matter what status, the message in my Slack channel is always:

    Status: Failed

    Does anyone know why this is?

    version:1.6-or-below 
    opened by craigwillis85 22
  • Feature/shell plugin

    Feature/shell plugin

    With this plugin, users are able to run shell commands. Here is an example of phpci.yml file

    https://raw.github.com/kinncj/moving-bazar/master/phpci.yml
    

    Is also exposed a %buildpath% variable

    %buildpath% is optional.
    %buildpath% is switched by the real build path on build execution.
    
    enhancement:feature flag:requires-feedback 
    opened by kinncj 21
  • login redirect loop

    login redirect loop

    Just cloned PHPCI and can't get it to work. The install went okay, and the DB has been created, but now I get redirect to /session/login which ends with a redirect loop

    it appears validateSession is redirecting to the login page because I am not logged in

        protected function validateSession()
        {
            if (!empty($_SESSION['user_id'])) {
                $user = b8\Store\Factory::getStore('User')->getByPrimaryKey($_SESSION['user_id']);
    
                if ($user) {
                    $_SESSION['user'] = $user;
                    return true;
                }
    
                unset($_SESSION['user_id']);
            }
    
            if ($this->request->isAjax()) {
                $this->response->setResponseCode(401);
                $this->response->setContent('');
            } else {
                $this->response = new RedirectResponse($this->response);
                $this->response->setHeader('Location', PHPCI_URL.'session/login');
            }
    
            return false;
        }
    

    Any ideas on what went wrong?

    Running php v5.4 on centos

    thanks :)

    bug:b8framework 
    opened by firstactivemedia 20
  • TapParser only supports TAP version 13.

    TapParser only supports TAP version 13.

    Seeing two errors when trying to build a laravel4 project, first, i don't think the composer plugin is working, and secondly, PHPUnit seems to not be working, and generating the TAP error below:

    Cloning into '/var/phpci/PHPCI/build/project1-build10'...
    Working copy created: /
    RUNNING PLUGIN: env
    PLUGIN STATUS: SUCCESS!
    RUNNING PLUGIN: composer
    PLUGIN STATUS: FAILED
    RUNNING PLUGIN: php_unit
    EXCEPTION: TapParser only supports TAP version 13
    PLUGIN STATUS: FAILED
    BUILD FAILURE
    Removing build.
    

    My phpci.yml:

    setup:
      env:
        TEST_DB_DB: "sss"
        TEST_DB_HOST: "127.0.0.1"
        TEST_DB_USER: "sss"
        TEST_DB_PWD: "sss"
    
      composer:
        action: "install"
    
    test:
      php_unit:
        config:
          - "phpunit.xml"
        directory:
              - "app/tests/"
    
    
    opened by danmatthews 19
  • PHPUnit plugin improvements

    PHPUnit plugin improvements

    Contribution Type: new plugin Link to Intent to Implement: #1262

    This pull request affects the following areas:

    • [x] Front-End
    • [x] Build Plugins

    In raising this pull request, I confirm the following (please check boxes):

    • [x] I have read and understood the contributing guidelines?
    • [x] I have checked that another pull request for this purpose does not exist.
    • [x] I have considered, and confirmed that this submission will be valuable to others.
    • [ ] I have created or updated the relevant documentation for this change on the PHPCI Wiki.
    • [x] Do the PHPCI tests pass?

    Detailed description of change:

    ~~A new plugin is introduced instead of updating the existing one because of all the changes required, plus it will ease the comparison between the two plugins.~~ UPDATE: Updates were merged into the original plugin.

    The new phpunit plugin is fully backwards compatible with the original one so it can potentially replace it. The plugin is broken into three testable components: an options parser, result parser and the plugin itself.

    Features:

    1. The args option in the configuration file now supports a named list of CLI arguments. Ex:

      php_unit:
      args:
          filter: "test"
          group:
              - "groupOne"
              - "groupTwo"
      
    2. The build log will now include the default phpunit output. image

    3. New JSON result parser to deal with outstanding issues of the TAP parser. Ref: #571 , #624

    4. Failures and errors are now also stored in the Errors tab of the front-end. image

    5. Failures and errors will include a collapsed stack trace in front-end Information tab. image

    opened by ptejada 18
  • PHPLint Task

    PHPLint Task

    Not sure if it would duplicate existing functionality, but having a lint task that will simply check the syntax of files might be nice:

    lint:
        directories:
            directoryA:
                - .php
                - .html
            directoryB:
                - *
        files:
            - lala.php
            - foo.html
    

    The task would search inside directories for files ending with the given extensions. Each file would then be executed with php -l <file>.

    I'm not happy with the structure of the definition, but like this it covers most features I would expect.

    enhancement:feature component:build-plugin 
    opened by tobiastom 18
  • Add some missing spanish translations

    Add some missing spanish translations

    Contribution Type: refactor Link to Intent to Implement: Link to Bug:

    This pull request affects the following areas:

    • [X] Front-End
    • [ ] Builder
    • [ ] Build Plugins

    In raising this pull request, I confirm the following (please check boxes):

    • [X] I have read and understood the contributing guidelines?
    • [X] I have checked that another pull request for this purpose does not exist.
    • [X] I have considered, and confirmed that this submission will be valuable to others.
    • [ ] I have created or updated the relevant documentation for this change on the PHPCI Wiki.
    • [X] Do the PHPCI tests pass?

    Detailed description of change:

    I've added all spanish missing translations and translated somes

    opened by cluster28 0
  • use supported package for slack

    use supported package for slack

    Contribution Type: cosmetic (up to date dependency)

    In raising this pull request, I confirm the following (please check boxes):

    • [x] I have read and understood the contributing guidelines?
    • [x] I have checked that another pull request for this purpose does not exist.
    • [x] Do the PHPCI tests pass?

    Detailed description of change: just use supported package for slack see https://github.com/maknz/slack/issues/94

    opened by alek13 0
  • fix regex for parsing gitlab access informations

    fix regex for parsing gitlab access informations

    Contribution Type: bug fix Link to Intent to Implement: none Link to Bug: https://github.com/dancryer/PHPCI/issues/1143

    This pull request affects the following areas:

    • [ ] Front-End
    • [x] Builder
    • [ ] Build Plugins

    In raising this pull request, I confirm the following (please check boxes):

    • [x] I have read and understood the contributing guidelines?
    • [x] I have checked that another pull request for this purpose does not exist.
    • [x] I have considered, and confirmed that this submission will be valuable to others.
    • [x] I have created or updated the relevant documentation for this change on the PHPCI Wiki.
    • [x] Do the PHPCI tests pass?

    Detailed description of change:

    • changed regex for correct parse ports and vendors starting with number .
    • added 2 tests for parsing gitlab ssh address.
    opened by gabrhel 0
  • Fix mercurial build by ssh connection

    Fix mercurial build by ssh connection

    Contribution Type: bug fix Link to Intent to Implement: - Link to Bug: -

    This pull request affects the following areas:

    • [ ] Front-End
    • [x] Builder
    • [ ] Build Plugins

    In raising this pull request, I confirm the following (please check boxes):

    • [x] I have read and understood the contributing guidelines?
    • [x] I have checked that another pull request for this purpose does not exist.
    • [x] I have considered, and confirmed that this submission will be valuable to others.
    • [x] I have created or updated the relevant documentation for this change on the PHPCI Wiki.
    • [x] Do the PHPCI tests pass?

    Detailed description of change:

    Fix clone by ssh method for mercurial build

    opened by mubarakzyanov 0
  • Hot to setup the deployer for automatic deployment, plugin documentation isn't helping, what the webhook url supposed to do, how it will trigger the deployer?

    Hot to setup the deployer for automatic deployment, plugin documentation isn't helping, what the webhook url supposed to do, how it will trigger the deployer?

    Before submitting your issue, please make sure that you've checked all of the checkboxes below.

    • [ ] You're running the latest release version of PHPCI.
    • [ ] Ensure that you're running at least PHP 5.3.6, you can check this by running php -v
    • [ ] You've run composer install --no-dev -o from the root of your installation.
    • [ ] You have set up either the PHPCI Worker, Daemon or Cron Job to run builds.

    To help us better understand your issue, please answer the following.

    Expected behaviour

    Please describe what you're expecting to see happen.

    Actual behaviour

    Please describe what you're actually seeing happen.

    Steps to reproduce

    If your issue requires any specific steps to reproduce, please outline them here.

    Environment info

    Operating System: PHP Version: MySQL Version:

    Logs or other output that would be helpful

    (If logs are large, please upload as attachment).

    opened by surajprgupta 1
  • the composer always return failed

    the composer always return failed

    Cloning into '/home/wwwroot/phpci/PHPCI/build/21_20e6a'...

    dc61336420091713043c86477e3d5c174549a78e Working copy created: / RUNNING PLUGIN: composer Composer could not find a composer.json file in /home/wwwroot/phpci/PHPCI/build/21_20e6a To initialize a project, please create a composer.json file as described in the https://getcomposer.org/ "Getting Started" section

    PLUGIN: FAILED Exception: Plugin failed: composer Removing Build.

    To help us better understand your issue, please answer the following.

    Expected behaviour

    Please describe what you're expecting to see happen.

    Actual behaviour

    Please describe what you're actually seeing happen.

    Steps to reproduce

    If your issue requires any specific steps to reproduce, please outline them here.

    Environment info

    Operating System: Debian 9 64bit PHP Version: 7.1.7 MySQL Version: 5.6.3 image I have set up the composer.json into repo

    Logs or other output that would be helpful

    (If logs are large, please upload as attachment).

    opened by chiefysu 0
Releases(1.8.0)
  • 1.8.0(Jun 18, 2018)

    Lots of bug fixes and tweaks, including:

    • Removing unused and broken PHP Copy/Paste Detector Plugin
    • Email plugin localisation
    • Cron job debug mode
    • Improved Russian translations
    • Webhook controller fix when sent an invalid project ID
    • Adding Chinese language support
    • Improved Polish translations
    • Fixes for SVN webhook handling
    • Update for Deployer plugin
    • Switching source for PHP CS Fixer plugin
    • Fix proc_open deadlock
    • Handle Github private pull requests properly
    • Enable support for PHP short tags in lint plugin
    Source code(tar.gz)
    Source code(zip)
  • 1.7.1(Jun 23, 2016)

    This is a bugfix release, which fixes the following major issues with PHPCI v1.7:

    • Cannot create project on new installation due to missing default value on the "archived" database field.
    • Exception when creating new build when beanstalkd is misconfigured.

    Other changes:

    • PHPCI installer will now ask if you want to use beanstalkd to manage your build queue. If the user says no, installer will no longer ask for beanstalkd server information.
    Source code(tar.gz)
    Source code(zip)
  • 1.7.0-beta2(Nov 7, 2015)

  • 1.7.0-beta1(Oct 15, 2015)

    This is a big release! Here are just a few of the new things:

    • Added support for beanstalkd queues using the new ./console phpci:worker option
    • Upgraded to Admin LTE
    • Redesigned the build view
    • Added a consolidated way of storing and viewing build errors
    • You can now put projects into named groups (i.e. Client Sites, etc)

    Lots more goodies to enjoy, and plenty of bug fixes too.

    Source code(tar.gz)
    Source code(zip)
  • 1.6.0(Feb 23, 2015)

  • 1.5.2(Jan 22, 2015)

  • 1.5.1(Jan 13, 2015)

  • 1.5.0(Dec 23, 2014)

  • 1.4.0(Dec 3, 2014)

    Features

    New Admin UI based on Admin LTE Gulp JS Plugin Branch filtering on project view page Added support for Github JSON web hooks Added cutoff after which builds are marked as failed Added limit of one concurrent build per project when not using Daemon mode. Phar archive plugin Non-interactive installation mode Improved PHP Spec plugin

    Bug Fixes & Tweaks

    Fixed SMTP encryption for emails from PHPCI Fixed line number link in PHP Code Sniffer plugin Added %BRANCH% variable for plugin configs Fixed profile update Fixed parallel lint directory parameter Added commit message to builds imported via Poll command Fixed TAP Parser support for skipped tests IRC plugin now joins channel before sending message Fixed infinite recursion when using an array of directories with PHP Unit Updated PHP Copy/Paste Detector support to new version Removed PHPCI’s autoloader, now uses just composer autoloader. Support for committer email and commit message in Git web hook Readable JSON/Yaml output for config files Switched to Shields.io build status badges

    Source code(tar.gz)
    Source code(zip)
  • 1.1.0(May 8, 2014)

    Changes since 1.0.1:

    • Git checkouts over SSH now use an SSH wrapper to avoid the known_hosts checking problems in earlier versions.
    • Updated design
    • Custom reports for PHP Mess Detector, PHP Code Sniffer and PHP Unit
    • Set a maximum number of errors to allow from PHP Mess Detector and PHP Code Sniffer, rather than a simple pass/fail.
    • Lots of bug fixes.
    Source code(tar.gz)
    Source code(zip)
  • 1.0.0-beta2(Oct 11, 2013)

  • 1.0.0-beta1(Jul 25, 2013)

Owner
Dan Cryer
Technical Operations Director at Gear4music. Fully fledged geek.
Dan Cryer
PHP Censor is an open source self-hosted continuous integration server for PHP projects.

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

PHP Censor 658 Oct 30, 2022
Free continuous integration platform for GitHub projects.

✋ Do not open new issues here! ✋ Travis CI Travis CI is a hosted continuous integration and deployment system. You can now test and deploy open source

Travis CI 8.3k Nov 17, 2022
Your Continuous Testing Server

Sismo: Your Continuous Testing Server Sismo is a Continuous Testing Server written in PHP. Unlike more "advanced" Continuous Integration Servers (like

null 645 Nov 22, 2022
GitHub action to setup PHP with required extensions, php.ini configuration, code-coverage support and various tools like composer...

Setup PHP in GitHub Actions Setup PHP with required extensions, php.ini configuration, code-coverage support and various tools like composer in GitHub

Shivam Mathur 2.3k Dec 3, 2022
Shippable SaaS customers can report issues and feature requests in this repository

Shippable Support This repository tracks bugs and feature requests for Shippable's Docker based continuous delivery and devops platform. Click here to

Shippable 100 Oct 11, 2022
PHPCI is a free and open source continuous integration tool specifically designed for PHP.

PHPCI PHPCI is a free and open source (BSD License) continuous integration tool specifically designed for PHP. We've built it with simplicity in mind,

Dan Cryer 2.4k Apr 21, 2021
PHP Censor is an open source self-hosted continuous integration server for PHP projects.

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

PHP Censor 658 Oct 30, 2022
Free continuous integration platform for GitHub projects.

✋ Do not open new issues here! ✋ Travis CI Travis CI is a hosted continuous integration and deployment system. You can now test and deploy open source

Travis CI 8.3k Nov 17, 2022
MageCI - [ABADONED] Magento Continuous Integration Tools

Magento Continuous Integration Tools A set of tools to help set up a proper environment for testing magento Installation Installation is very easy tho

EcomDev B.V. 77 Dec 13, 2021
Akaunting is a free, open source and online accounting software designed for small businesses and freelancers

Akaunting is a free, open source and online accounting software designed for small businesses and freelancers

jahidul alam mishuk 1 Jan 9, 2022
Lakasir is a free, open source and online Point Of Sale Software designed for small shop or retail

Lakasir is a free, open source and online Point Of Sale Software designed for small shop or retail. It is built with modern technologies such as Laravel, VueJS, Bootstrap 4, RESTful API etc.

Lakasir 227 Nov 21, 2022
YesilCMS is based on BlizzCMS and specifically adapted for VMaNGOS Core and includes new features and many bug fixes.

YesilCMS · YesilCMS is based on BlizzCMS and specifically adapted for VMaNGOS Core and includes new features and many bug fixes. Features In addition

yesilmen 9 Oct 31, 2022
Supercharge your app or SDK with a testing library specifically for Guzzle

Full Documentation at guzzler.dev Supercharge your app or SDK with a testing library specifically for Guzzle. Guzzler covers the process of setting up

null 275 Oct 30, 2022
The Pterodactyl based panel - specifically for hosts.

hPanel Beta hPanel is a fork of Jexactyl (which is a fork of Pterodactyl) for hosting companies with a cleaner UI, less bugs & more features. Document

hPanel 17 Nov 19, 2022
It is an open-source and free project, which is faced with the drawing lovers, providing a free and simple Gallery service

It is an open-source and free project, which is faced with the drawing lovers, providing a free and simple Gallery service

WeepingDogel 3 Nov 29, 2022
Mark Rogoyski 2.1k Dec 7, 2022
An issue tracking tool based on hyperf+reactjs for small and medium-sized enterprises, open-source and free, similar to Jira.

介绍 本项目以 actionview 为蓝本,使用 Hyperf 框架进行重写。 本项目为 Hyperf 框架的 DEMO 项目 原 ActionView 介绍 English | 中文 一个类Jira的问题需求跟踪工具,前端基于reactjs+redux、后端基于php laravel-frame

Gemini-D 14 Nov 15, 2022
An issue tracking tool based on laravel+reactjs for small and medium-sized enterprises, open-source and free, similar to Jira.

ActionView English | 中文 An issue tracking tool based on php laravel-framework in back-end and reactjs+redux in front-end, it's similar to Jira. You co

null 1.7k Nov 24, 2022
Deployer is a free and open source deployment tool.

Deployer Deployer is a PHP Application deployment system powered by Laravel 6.0, written & maintained by Stephen Ball. Check out the releases, license

Stephen Ball 883 Nov 30, 2022
Your Continuous Testing Server

Sismo: Your Continuous Testing Server Sismo is a Continuous Testing Server written in PHP. Unlike more "advanced" Continuous Integration Servers (like

null 645 Nov 22, 2022