Git Product home page Git Product logo

matamouros / cintient Goto Github PK

View Code? Open in Web Editor NEW
47.0 6.0 6.0 8.39 MB

Cintient is a Continuous Integration web application written in PHP. It was written to be simple to setup and straightforward to use and aims to bring CI practices to most small to medium projects that just don't justify the setup of a more complex CI solution.

License: GNU General Public License v3.0

PHP 93.61% CSS 1.13% JavaScript 5.17% Shell 0.09%

cintient's Introduction

Cintient - Continuous Integration made simple.

Cintient is a Continuous Integration self-hosted web application written in PHP. It was written to be simple to setup and straightforward to use

  • with special attention to UI - in order to bring CI practices to most small to medium projects that just don't justify the setup of a more complex CI solution.

Screenshot #1

Dashboard

Screenshot #2

History

Screenshot #3

Builder

What it does

Cintient works by keeping track of all commits going into a source code repository. Every time a change in the source code of a project is detected, something called an "integration builder" is automatically run. This integration builder can be completely configured to do whatever the user wants - ranging from simple code syntax checks, to more complex software quality analysis. The results are collected and shown in a variety of charts that you can use to inspect your projects. With such automation you can have every single commit be thoroughly checked for syntax errors, be unit tested, inspected for violations to your adopted coding standard, etc., all without requiring human intervention. Whenever any of these checks fail, the build fails, and Cintient promptly push-notifies users of such. Below are some of Cintient's features:

  • easy one-time setup of the application (1 minute)
  • visual edition for builder tasks, i.e., no messing around with Ant XML sources for configuring builds
  • Web-based push notifications (currently supports the now deprecated Notifo.com, but it's easily extendable to others)
  • PHP syntax checking tasks
  • PHPUnit integration for unit testing
  • PHPDepend for quality metrics
  • PHPCodeSniffer for coding standards enforcement
  • Code coverage support (PHP Xdebug extension required)
  • Perl syntax check (just so you know you can add support to pretty much every language you want)

Disclaimer

Cintient is still beta. Please understand that not everything is yet perfect. You should keep in mind the following:

  • I develop mainly in Mac OS X and Linux, using Safari and ocasionally Firefox. Other OS/browser flavours are still pretty much untested. Please help out if you can.
  • Setting up a project in Cintient is way simpler than in any other CI server I know of. But it still requires some minimum effort on your part to properly configure it. Don't give up, and let me know if you're having problems with anything.

Requirements

  • Apache HTTPD with mod_rewrite (for the automatic installation). Supports Lighttpd with minimum manual setup.
  • PHP 5.3.3 or later
  • PHP with sqlite3 version 3.3.0 or later
  • [Optional] Xdebug (for PHP code coverage support)

Installing

Check the requirements above. You need them in order to perform an easy install. Go through the following steps:

  1. Your Apache web server's configuration must allow you to specify per directory .htaccess files and mod_rewrite directives within them. For this you need to have at least "AllowOverride FileInfo". Also, enable "Options FollowSymLinks" and "DirectoryIndex index.php". If you've changed these just now, don't forget to restart your Apache server. If you are using Lighttpd instead, don't do anything now and follow the instructions.
  2. Open up a browser window, navigate to the directory where you unpacked Cintient. You should see the installer coming up.
  3. Follow the instructions. It should only take you a minute to finish. If you are not using Lighttpd, you're done. Have fun.
  4. If you are using Lighttpd, don't refresh the page after the install runs, just yet. Before that, make sure that you place the contents of the .cintient-lighttpd.conf file in your web server's configuration and restart it. Then, and only then, you can refresh the browser at the end of the install run. You're done now. Have fun.

Contributing

Willing to contribute? Awesome! Fork the project in GitHub and send some pull requests our way.

Credits

Authored by:

Past contributors:

  • rasismeiro
  • voxmachina
  • miguellmanso

Project page: http://github.com/matamouros/cintient

cintient's People

Contributors

matamouros avatar rasismeiro avatar voxmachina avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar

cintient's Issues

Clone Feature

It would be really cool if we could clone the project.

Post build web hook

Ping or post to a user defined URL when a build is finalized. Should be able to set this up from Edit Project, new tab called Post Build or in the Notifications tab.

SVN Checkout error

When I try to build my project using SVN, the system generates an error.
I specified the correct login and password in the configuration repository and the problem still persists.

Build Error:

[2012-01-06 15:50:39] [info] [4f07346f94074] Project::build: Couldn't checkout sources. [PROJECTID=1]
[2012-01-06 15:50:39] [error] [4f07346f94074] ScmConnector_Svn::checkout: Could not check out remote repository. [COMMAND="svn co --non-interactive http://svn.deltaconstrucao.com.br/source/sgdweb/trunk/ /home/jpfaria/public_html/cintient/data/projects/4f073413eb5243.03937605/wc/"] [RET=1] [OUTPUT=""]

Storing action details submits wrong checkbox value

Behavior

When editing for example the details for PhpCodeSniffer there is a checkbox "failOnError" which is transferred with the same data every time if checked or not.

Expected behavior

The [value] should be empty to be read correctly by the PHP script when the box is not checked.

Code copied from Chrome Inspector

Checkbox checked:
    failOnError[type]:checkbox
    failOnError[value]:on

Checkbox unchecked:
    failOnError[type]:checkbox
    failOnError[value]:on

System

  • Chrome 17.0.942.0 dev
  • App version: 98df2b2
  • OS: Mac OS 10.7

Deploy Feature

It is crucial that the system could deploy by:

  • FTP
  • SCP
  • Copy a directory within the repository to another directory (SVN Copy)

namespace issue

When using namespaced classes (when writing tests) it crashes javascript which is generated for 'charts'.

PhpLint task only outputs last line into the builder log

Running php -l on a file can output something as:

php -l /www/.cintient/projects/4e83a6117c3276.23613628/sources/src/core/AjaxManager.php
Failed loading /usr/local/php-5.3.4/lib/php/extensions/no-debug-non-zts-20090626/xdebug.so: dlopen(/usr/local/php-5.3.4/lib/php/extensions/no-debug-non-zts-20090626/xdebug.so, 9): no suitable image found. Did find:
/usr/local/php-5.3.4/lib/php/extensions/no-debug-non-zts-20090626/xdebug.so: mach-o, but wrong architecture

Parse error: syntax error, unexpected ')' in /www/.cintient/projects/4e83a6117c3276.23613628/sources/src/core/AjaxManager.php on line 598
Errors parsing /www/.cintient/projects/4e83a6117c3276.23613628/sources/src/core/AjaxManager.php

Though on the "Raw output" section, only the last line is outputed...

LDAP Auth Feature

It is crucial that the system could authenticate against an LDAP server.

Completed datetime in builds

Builds should have a finish datetime, and the build history should only allow visiting of previously completed builds.

sqlite supported ?

hi,

my host has php support for

pdo_sqlite
PDO Driver for SQLite 3.x enabled
PECL Module version (bundled) 1.0.1 $Id: pdo_sqlite.c 293036 2010-01-03 09:23:27Z sebastian $
SQLite Library 3.3.7

will this work ?

Unit tests chart and code coverage failed

Even passing the test graph and the result of the PHPUnit code coverage is not generated.

Result:

Status:OK
Build:#23
Commit:72
Finished:29 minutes, 22 seconds ago
Duration:1 second

Administration Log:

[2012-01-13 14:54:43] [error] [4f1061d38cace] Build_SpecialTask_PhpUnit::getViewData: Junit file not found. [PID=1] [BUILD=23] [FILE=/mnt/storage/data/cintient/projects/4f0f43a23d8641.06941503/reports/23/log-junit.xml]
[2012-01-13 14:52:29] [info] [4f103359c2f95] runBuildWorker: Project not built. [PID=1]
[2012-01-13 14:52:29] [info] [4f103359c2f95] Project::build: No modifications detected. [PROJECTID=1]
[2012-01-13 14:52:29] [info] [4f103359c2f95] Framework_Process::run: Executing 'svn info --username joao.paulo --password XXXX --non-interactive http://svn.deltaconstrucao.com.br/source/sgdweb/trunk /mnt/storage/data/cintient/projects/4f0f43a23d8641.06941503/wc/'
[2012-01-13 14:52:29] [info] [4f103359c2f95] runBuildWorker: Starting project build. [PID=1]

Raw Output:

[14:33:25] [target] Executing target build_i3OF4f0f43a23d0b2...
[14:33:25] [phpunit] Starting unit tests...
[14:33:25] [phpunit] All tests ok.
[14:33:25] [target] Target build_i3OF4f0f43a23d0b2 executed.

Unit tests:

The unit tests chart could not be generated. Please check the raw output of the build for problems, e.g., a PHP Fatal error.

Code coverage:

Due to a build error, the unit tests chart could not be generated. Please check the raw output of the build for problems, such as a PHP Fatal error.

PS. I set only the PHPUnit on build.

Clicking a new project in the dashboard doesn't cancel pending response

Clicking on a new project in the project list of the dashboard does not cancel a pending response for another previously clicked project. If several projects are thus clicked on very quickly, the last clicked (and visually active) project might not correspond to the actual info that is being shown in the panes.

Aborting a previous on-going request as soon as a new project is clicked, should suffice to fix this.

Builds on Windows machine

Do you intend on allowing builds on a windows machine?

I'm just getting the message "Background builds are temporarily disabled in Windows." at the moment.

Thanks

Build web hook

Provide a URL that (preferably) does not require authentication and when pinged, triggers a build process. This is very useful for people who use bitbucket or github

Certain $GLOBALS['project'] dependent URLs break when it's not present

[Reported by Miguel Manso]

Problem:
Certain URLs that depend on $GLOBALS['project'] might get broken when that global var is missing, i.e., when a URL is copied/pasted on an empty session.

Reproducing steps

  1. Logout
  2. Go to url http:///project/history

Result (probably not necessary)
[Thu Nov 10 17:49:00 2011] [error] [client 192.168.0.52] PHP Fatal error: Call to a member function getTitle() on a non-object in /tmp/00c620118d61376f8f9777a32e0ca99bd4a021b8.file.history.tpl.php on line 37, referer: http://cintient.dev.fms/project/history/?
[Thu Nov 10 17:49:00 2011] [error] [client 192.168.0.52] PHP Stack trace:, referer: http://cintient.dev.fms/project/history/?
[Thu Nov 10 17:49:00 2011] [error] [client 192.168.0.52] PHP 1. {main}() /opt/www/vhosts/cintient/src/handlers/webHandler.php:0, referer: http://cintient.dev.fms/project/history/?
[Thu Nov 10 17:49:00 2011] [error] [client 192.168.0.52] PHP 2. Smarty->display() /opt/www/vhosts/cintient/src/handlers/webHandler.php:174, referer: http://cintient.dev.fms/project/history/?
[Thu Nov 10 17:49:00 2011] [error] [client 192.168.0.52] PHP 3. Smarty->fetch() /opt/www/vhosts/cintient/lib/Smarty-3.0rc4/Smarty.class.php:370, referer: http://cintient.dev.fms/project/history/?
[Thu Nov 10 17:49:00 2011] [error] [client 192.168.0.52] PHP 4. Smarty_Internal_Template->getRenderedTemplate() /opt/www/vhosts/cintient/lib/Smarty-3.0rc4/Smarty.class.php:328, referer: http://cintient.dev.fms/project/history/?
[Thu Nov 10 17:49:00 2011] [error] [client 192.168.0.52] PHP 5. Smarty_Internal_Template->renderTemplate() /opt/www/vhosts/cintient/lib/Smarty-3.0rc4/sysplugins/smarty_internal_template.php:568, referer: http://cintient.dev.fms/project/history/?
[Thu Nov 10 17:49:00 2011] [error] [client 192.168.0.52] PHP 6. include() /opt/www/vhosts/cintient/lib/Smarty-3.0rc4/sysplugins/smarty_internal_template.php:436, referer: http://cintient.dev.fms/project/history/?

Post build fun missing

Add a way to run scripts or commands after successful or failed builds. Similar to Project > Edit Project > Build (tab) > Exec

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.