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
Last revisionBoth sides next revision
pear:qa:ci [2009/01/04 14:48] – Updated more clockwerxpear:qa:ci [2012/04/12 23:32] – [How do I make sure my tests work?] clockwerx
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.txt · Last modified: 2017/09/22 13:28 by 127.0.0.1