pear:qa:ci
Differences
This shows you the differences between two versions of the page.
Both sides previous revisionPrevious revisionNext revision | Previous revision | ||
pear:qa:ci [2011/11/22 23:21] – pear core moved from svn.php.net to github a while ago danielc | pear:qa:ci [2017/09/22 13:28] (current) – external edit 127.0.0.1 | ||
---|---|---|---|
Line 5: | Line 5: | ||
http:// | http:// | ||
* [[http:// | * [[http:// | ||
- | * [[http:// | ||
* [[http:// | * [[http:// | ||
+ | * [[http:// | ||
* [[https:// | * [[https:// | ||
Line 12: | Line 12: | ||
===== Jenkins ===== | ===== Jenkins ===== | ||
- | Jenkins is a continuous integration platform. Currently, all packages in both PEAR and PEAR2 are built by it. | + | Jenkins is a continuous integration platform. Currently, all packages in both PEAR and PEAR2 were scanned for the presence of a ' |
+ | |||
+ | ==== 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' | ||
+ | * Add either manual build steps or invoke an ant build.xml target. Manual steps should include executing | ||
+ | * phpunit --coverage-html build/ | ||
+ | * php ~/ | ||
+ | * Add in Post-build Actions for ' | ||
==== How do I make sure my tests work? ==== | ==== How do I make sure my tests work? ==== | ||
- | In general, we encourage the use of an AllTests.php - we target PHPUnit 3.4 at this time. | + | 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: | + | Your package directory layout should allow you to successfully run your test suite as below (assuming svn): |
<code bash> | <code bash> | ||
$ cd Foo_Bar/ | $ cd Foo_Bar/ | ||
- | $ php tests/AllTests.php | + | $ phpunit -c phpunit.xml |
</ | </ | ||
- | ... or as per the phpunit command above. | ||
- | |||
- | http:// | ||
==== My directory layout doesn' | ==== My directory layout doesn' | ||
Line 41: | Line 52: | ||
# Run tests to confirm no fatal errors, using one of | # Run tests to confirm no fatal errors, using one of | ||
- | $ php tests/ | ||
$ pear run-tests -r tests/ | $ pear run-tests -r tests/ | ||
$ phpunit tests/ | $ phpunit tests/ | ||
Line 56: | Line 66: | ||
- Making use of PHPUnit' | - Making use of PHPUnit' | ||
- Checking your environment and skipping the test if it cannot run | - 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' | ||
+ | > > http:// | ||
+ | > > | ||
+ | > > 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. | ||
+ | > MYSQL_TEST_* environment variables, which are used for PHP's tests. | ||
+ | > 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. | ||
+ | > | ||
+ | > SQLite3 tests should use ": | ||
+ | > | ||
+ | > Thanks, | ||
+ | > | ||
+ | > --Dan | ||
+ | |||
+ | ==== Build tools ==== | ||
+ | In general, ant is the preferred way of managing a build after a certain level of complexity. See http:// | ||
+ | |||
+ | Noteably, we prefer phpdoc/ | ||
+ | |||
+ | 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:// | ||
+ | $ git clone git:// | ||
+ | $ phpunit --include-path lib/ | ||
+ | </ | ||
+ | |||
+ | 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:// | ||
==== Todo ==== | ==== Todo ==== | ||
Line 87: | 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 | ||
- | |||
- |
pear/qa/ci.1322004076.txt.gz · Last modified: 2017/09/22 13:28 (external edit)