pear:qa:ci

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revisionPrevious revision
Next revision
Previous revision
pear:qa:ci [2010/01/08 21:11] – external edit 127.0.0.1pear:qa:ci [2017/09/22 13:28] (current) – external edit 127.0.0.1
Line 3: Line 3:
  
 ===== PHPCS and General QA tools ===== ===== PHPCS and General QA tools =====
-[[cweiske|Christian]] hosts continuous integration results +http://test.pear.php.net/ hosts continuous integration tools 
-  *  http://pear.cweiske.de+  * [[http://test.pear.php.net/|Pearweb test installation]] 
-  *  http://pear.cweiske.de/unittests-cvs/overview.htm +  * [[http://test.pear.php.net:8080/|Jenkins]] 
-  *  http://pear.cweiske.de/overview.htm+  * [[http://test.pear.php.net/unit-test-results/|(old) Test results overview]] 
 +  * [[https://github.com/pear/pear-svn-git|Migrate to github script]] 
 + 
 +The helper scripts live at https://github.com/pear/phpuc/ 
 + 
 +===== Jenkins ===== 
 +Jenkins is a continuous integration platform. Currently, all packages in both PEAR and PEAR2 were scanned for the presence of a 'tests' folder, and corresponding jenkins jobs were created. 
 + 
 +==== Access === 
 +Jenkins is configured to authenticate against the github organisations of pear / pear2. You simply need to be associated with one of the organisations to modify builds. 
 + 
 +==== Adding a new job/build ==== 
 +  * Create job 
 +  * Enter package name 
 +  * Enter link to github 
 +  * Enter the read-only git url into source management 
 +  * Select 'build on push from github' as a trigger 
 +  * Add either manual build steps or invoke an ant build.xml target. Manual steps should include executing  
 +    * phpunit --coverage-html build/coverage/ --coverage-clover build/logs/clover.xml --log-junit build/logs/junit.xml tests/ 
 +    * php ~/pyrus.phar package 
 +  * Add in Post-build Actions for 'Publish junit test result report' 
 + 
 +==== How do I make sure my tests work? ==== 
 +In general, we encourage the use of an appropriate phpunit.xml - we target PHPUnit 3.6 at this time. 
 + 
 +Your package directory layout should allow you to successfully run your test suite as below (assuming svn): 
 +<code bash> 
 +$ cd Foo_Bar/trunk 
 +$ phpunit -c phpunit.xml tests/ 
 +</code> 
 + 
 + 
 +==== My directory layout doesn't work === 
 +A common pattern with older packages is to have a directory structure which is unlike the installed package layout. IE: ''Foo_Bar/trunk/Bar.php''. Most authors make use of the ''baseinstalldir'' attribute in the package.xml, or only run tests after installation 
 + 
 +To fix this: 
 +<code bash> 
 +$ svn mkdir Foo 
 +$ svn mv Bar.php Foo/ 
 +# Edit package.xml, change baseinstalldir to / 
 +$ vim package.xml 
 + 
 +# Rebuild package using PEAR_PackageFileManager_CLI 
 +$ pfm 
 + 
 +# Run tests to confirm no fatal errors, using one of 
 +$ pear run-tests -r tests/ 
 +$ phpunit tests/ 
 + 
 +# Commit 
 +$ svn commit -m "Updated directory layout" 
 +</code> 
 + 
 +==== Pyrus won't build my package 1.0 ==== 
 +See [[pear:packages:migration]] 
 + 
 +==== My unit tests need a (database/server/setup/configuration) ==== 
 +Two strategies exist for this: 
 + - Making use of PHPUnit's mocking capabilities or utilising something like HTTP_Request2's Mock Adapter 
 + - Checking your environment and skipping the test if it cannot run  
 + 
 +There is also a test mysql instance available. 
 + 
 +> Hi Daniel: 
 +>  
 +> On Wed, Nov 16, 2011 at 08:34:04AM +1030, Daniel O'Connor wrote: 
 +> > http://test.pear.php.net:8080/job/DB_DataObject/4/console 
 +> > 
 +> > This and a few others obviously need a database to be tested properly. 
 +> > Certainly that machine has mysql on it; or sqlite is probably available - 
 +> > what would be needed to load up an appropriate schema/tear it down after 
 +> > the tests? 
 +>  
 +> I agree and mentioned this on pear-qa a while ago.  Take a look at what 
 +> I committed to DB tests yesterday.  It takes advantage of the 
 +> MYSQL_TEST_* environment variables, which are used for PHP's tests.  We 
 +> should create a test user and database and set those environment 
 +> variables in the cron job, or whatever. 
 +>  
 +> A similar setup should be made for PostgreSQL in PEAR and PHP's unit 
 +> tests.  Right now, PHP's tests don't use such environment variables. 
 +>  
 +> SQLite3 tests should use ":memory:" as the database. 
 +>  
 +> Thanks, 
 +>  
 +> --Dan 
 + 
 +==== Build tools ==== 
 +In general, ant is the preferred way of managing a build after a certain level of complexity. See http://jenkins-php.org/ for more detail. 
 + 
 +Noteably, we prefer phpdoc/docblox over phpdox. 
 + 
 +Some packages use phing 
 + 
 +==== Dependencies ==== 
 +There are two available techniques for managing dependencies without installing system wide libraries.  
 + 
 +The first is relatively straight forward - simply pulling the library from source and pushing it into a lib directory. 
 +<code bash> 
 +$ git clone git://path/to/package.git lib/package 
 +$ git clone git://path/to/package2.git lib/package2 
 +$ phpunit --include-path lib/package:lib/package2 ... 
 +</code> 
 + 
 +This can be either configured in the jenkins build or (preferred) in the relevant build.xml and phpunit.xml files. 
 + 
 + 
 +The second is to utilise [[http://getcomposer.org|composer.phar]] in combination with a relevant phpunit.xml 
 + 
 +==== Todo ==== 
 +  - Put more packages into jenkins 
 +  - Investigate a notification task to package maintainers? 
 +  - Investigate allowing bootstrapped build.xml files back in (Pyrus) 
 +  - Upgrade PHP on test.pear.php.net 
 +  - Install xdebug for proper code coverage
  
 ===== How to test a new PEAR release ===== ===== How to test a new PEAR release =====
 Before releasing a new version of PEAR, we need to make sure it runs on as many systems as possible. It's pretty easy: Before releasing a new version of PEAR, we need to make sure it runs on as many systems as possible. It's pretty easy:
  
-  - Install the new PEAR (1.7.0RC2 currently)+  - Install the new PEAR
   - Make sure you have the XML_RPC package   - Make sure you have the XML_RPC package
-  - Checkout pear-core from CVS to get the tests+  - Checkout pear-core from the repository to get the tests
   - Run the tests   - Run the tests
  
Line 19: Line 134:
 pear upgrade -f PEAR pear upgrade -f PEAR
 pear upgrade XML_RPC pear upgrade XML_RPC
-cvs -d :pserver:cvsread@cvs.php.net:/repository checkout pear-core+git clone git://github.com/pear/pear-core.git
 cd pear-core/tests && pear run-tests -r cd pear-core/tests && pear run-tests -r
 </code> </code>
Line 31: Line 146:
   * For some tests the executable php-cgi is needed. In some Linux distributions this is contained in a separate package, but on for instance Gentoo Linux this has to be enabled using the cgi USE flag.   * For some tests the executable php-cgi is needed. In some Linux distributions this is contained in a separate package, but on for instance Gentoo Linux this has to be enabled using the cgi USE flag.
   * If running on linux, do not run the tests as root   * If running on linux, do not run the tests as root
- 
- 
-===== Unit tests ===== 
-There are nightly unit test results published at [[http://lauken.com/doconnor/]], you can find out more about integrating [[http://cvs.php.net/viewvc.cgi/pear/AllTests.php|by reading the documentation]]. 
- 
pear/qa/ci.1262985105.txt.gz · Last modified: 2017/09/22 13:28 (external edit)