diff --git a/jjb/mediawiki.yaml b/jjb/mediawiki.yaml index 6bb79aa9..a762d3df 100644 --- a/jjb/mediawiki.yaml +++ b/jjb/mediawiki.yaml @@ -1,519 +1,519 @@ # This file holds the configuration for all MediaWiki core related jobs # regardless of them being lint, merge check, unit test or regression testing. # Note that mediawiki/core branches may have a lot of submodules, we thus # use a specific git macro to prevents Jenkins from updating all the # submodules we do not care about. See bug 42455. - job-template: name: 'mediawiki-core-jslint' node: hasSlaveScripts && UbuntuPrecise defaults: use-zuul concurrent: true logrotate: daysToKeep: 15 scm: - git-mwcore triggers: - zuul builders: - jshint - jsonlint - job-template: name: 'mediawiki-core-qunit' node: contintLabsSlave && UbuntuPrecise concurrent: true logrotate: daysToKeep: 15 triggers: - zuul builders: - zuul-cloner: projects: > mediawiki/core mediawiki/vendor - mw-install-sqlite - mw-apply-settings - qunit publishers: - qunit-cleanup - mw-teardown - archive-log-dir - job-template: # Based on 'mediawiki-core-qunit' but: # * qunit -> qunit-karma (to run npm-install and karma) # * UbuntuPrecise -> UbuntuTrusty (for new local browsers and nodejs version) name: 'mediawiki-core-qunit-karma' node: contintLabsSlave && UbuntuTrusty concurrent: true logrotate: daysToKeep: 15 triggers: - zuul builders: - zuul-cloner: projects: > mediawiki/core mediawiki/vendor - mw-install-sqlite - mw-apply-settings - qunit-karma publishers: - qunit-cleanup - mw-teardown - archive-log-dir - job-template: name: 'mediawiki-core-jsduck' defaults: use-zuul concurrent: true logrotate: daysToKeep: 15 scm: - git-mwcore triggers: - zuul builders: - shell: | $WORKSPACE/maintenance/mwjsduck-gen --version "$ZUUL_BRANCH" - job: name: 'mediawiki-core-jsduck-publish' node: gallium defaults: use-zuul concurrent: false logrotate: daysToKeep: 15 scm: - git-mwcore triggers: - zuul builders: - shell: | $WORKSPACE/maintenance/mwjsduck-gen --version "$ZUUL_BRANCH" # Substitute symlink with complete copy since we only publish # the docs/js directory. Have to remove the symlink manually # as otherwise the rsync operation is a no-op (T86864). rm $WORKSPACE/docs/js/modules rsync --recursive --delete-after --force $WORKSPACE/resources/ $WORKSPACE/docs/js/modules/ - documentation-sync-subdir: src: '$WORKSPACE/docs/js' project: 'mediawiki-core' version: '$ZUUL_BRANCH' subdir: 'js/' - job: name: 'mediawiki-core-doxygen-publish' node: contintLabsSlave && UbuntuTrusty concurrent: false triggers: - zuul builders: - mw-setup - assert-env-doc_subpath - zuul-cloner: projects: > mediawiki/core mediawiki/vendor - shell: | rm -fR build/doc mkdir -p build/doc TARGET_BASEDIR="$WORKSPACE/build/doc" /srv/deployment/integration/slave-scripts/tools/mwcore-docgen.sh - doc-publish: docsrc: 'build/doc' docdest: 'mediawiki-core/$DOC_SUBPATH/php' publishers: - mw-teardown - job-template: name: '{name}-whitespaces' node: hasSlaveScripts && UbuntuPrecise defaults: use-remote-zuul concurrent: true logrotate: daysToKeep: 15 scm: - git-mwcore triggers: - zuul builder: - lint-whitespaces - job-template: name: 'mediawiki-gate' node: contintLabsSlave concurrent: true logrotate: - daysToKeep: 90 + daysToKeep: 7 builders: - shell: | #!/bin/bash -e echo "Noop job, meant to gate jobs properly" # Use hhvm or zend - job-template: name: 'mediawiki-phpunit-{phpflavor}' # Select runnable node based on the phpflavor (hhvm or zend) # # We want to reuse the same job template for both PHP flavor: # - HHVM flavor runs on Trusty CI labs slaves which have HHVM # - Zend flavor runs on productionSlaves with Precise which ships Zend PHP 5.3 # # Doing a '&& phpflavor-{phpflavor}' is the trick to vary the label # definition based on the job name. # # If you want to verify the slaves, head to the job configuration page, # search for 'Restrict where this project can be run', below the input box # is a text: Slaves in [label]: X . Clicking [label] will list nodes # matching the expression. node: '(productionSlaves && UbuntuPrecise && phpflavor-zend && phpflavor-{phpflavor}) || (contintLabsSlave && UbuntuTrusty && phpflavor-hhvm && phpflavor-{phpflavor})' concurrent: true triggers: - zuul builders: - assert-phpflavor: phpflavor: '{phpflavor}' - hhvm-clear-hhbc - zuul-cloner: projects: > mediawiki/core mediawiki/vendor - mw-install-sqlite - mw-apply-settings - shell: "/srv/deployment/integration/slave-scripts/bin/mw-run-phpunit.sh" publishers: - phpunit-junit-2 - archive-log-dir - mw-teardown # Same as above, except uses composer instead of mediawiki/vendor. # Currently experimental, will eventually be used for `master`, and # wmf/ branches will use mediawiki/vendor. See T90303. - job-template: name: 'mediawiki-phpunit-{phpflavor}-composer' node: 'contintLabsSlave && (UbuntuPrecise && phpflavor-zend && phpflavor-{phpflavor}) || (UbuntuTrusty && phpflavor-hhvm && phpflavor-{phpflavor})' concurrent: true triggers: - zuul builders: - assert-phpflavor: phpflavor: '{phpflavor}' - hhvm-clear-hhbc - zuul-cloner: projects: > mediawiki/core - composer-update - mw-install-sqlite - mw-apply-settings - shell: "/srv/deployment/integration/slave-scripts/bin/mw-run-phpunit.sh" publishers: - phpunit-junit-2 - archive-log-dir - mw-teardown - job-template: name: 'mediawiki-extensions-{phpflavor}' # See 'mediawiki-phpunit-{phpflavor}' node: '(productionSlaves && UbuntuPrecise && phpflavor-zend && phpflavor-{phpflavor}) || (contintLabsSlave && UbuntuTrusty && phpflavor-hhvm && phpflavor-{phpflavor})' concurrent: true logrotate: daysToKeep: 15 triggers: - zuul builders: - assert-phpflavor: phpflavor: '{phpflavor}' - hhvm-clear-hhbc - shell: | rm -f deps.txt touch deps.txt # TODO Can be made nicer when the extension_load.txt file starts # supporting empty new lines. https://gerrit.wikimedia.org/r/183884 echo "mediawiki/extensions/AbuseFilter mediawiki/extensions/Babel mediawiki/extensions/CheckUser mediawiki/extensions/cldr mediawiki/extensions/ConfirmEdit mediawiki/extensions/Echo mediawiki/extensions/EventLogging mediawiki/extensions/Flow mediawiki/extensions/Gather mediawiki/extensions/JsonConfig mediawiki/extensions/Mantle mediawiki/extensions/MobileApp mediawiki/extensions/MobileFrontend mediawiki/extensions/SpamBlacklist mediawiki/extensions/Thanks mediawiki/extensions/UniversalLanguageSelector mediawiki/extensions/VisualEditor mediawiki/extensions/WikiGrok mediawiki/extensions/ZeroBanner mediawiki/extensions/ZeroPortal" > deps.txt - shell: | # When triggered from the experimental pipeline, add the project to # the list of dependencies. Used to inject an extension which is not # yet part of the list above. if [ "$ZUUL_PIPELINE" == 'experimental' ] && ! grep -q "$ZUUL_PROJECT" deps.txt; then echo "$ZUUL_PROJECT" >> deps.txt fi # Ensure consitent loading sort -o deps.txt deps.txt - zuul-cloner: projects: > mediawiki/core mediawiki/vendor $(cat deps.txt) - shell: | cd src/extensions/VisualEditor git submodule foreach git clean -xdff -q git submodule update --init git submodule status - mw-install-sqlite - shell: "cp deps.txt src/extensions_load.txt" - mw-apply-settings - mw-run-update-script - mw-run-phpunit-allexts #- shell: "/srv/deployment/integration/slave-scripts/bin/mw-run-phpunit.sh" publishers: - junit: results: 'log/junit*.xml' - archive-log-dir - mw-teardown # Test out our PHPUnit against various MediaWiki branches # # Essentially a copy paste of mediawiki-phpunit-{phpflavor} # FIXME: support HHVM - job-template: name: 'integration-phpunit-mediawiki-{mwbranch}' node: contintLabsSlave && UbuntuPrecise # Zend PHP 5.3.x concurrent: true triggers: - zuul builders: - zuul-cloner: projects: > --branch {mwbranch} mediawiki/core mediawiki/vendor integration/phpunit - mw-install-sqlite - mw-apply-settings - shell: | export PHPUNIT_DIR="$WORKSPACE/src/integration/phpunit/vendor/phpunit/phpunit" /srv/deployment/integration/slave-scripts/bin/mw-run-phpunit.sh publishers: - phpunit-junit-2 - archive-log-dir - mw-teardown - job-template: name: mediawiki-core-regression-hhvm-{branch} node: contintLabsSlave && UbuntuTrusty triggers: - zuul builders: - zuul-cloner: projects: > mediawiki/core mediawiki/vendor - mw-install-sqlite - mw-apply-settings - shell: "/srv/deployment/integration/slave-scripts/bin/mw-run-phpunit-hhvm.sh" publishers: - phpunit-junit-2 - archive-log-dir - mw-teardown wrappers: # Failsafe to avoid blocking builds in production since this is still very # experimental. # TODO remove wrappers and use the default whenever hhvm is ready. - timeout: timeout: 8 fail: true - timestamps - ansicolor logrotate: daysToKeep: 90 - job-template: name: 'mediawiki-core-release' concurrent: true triggers: - zuul-post # Fetch latest version of the release script scm: - git: url: '/srv/ssd/gerrit/mediawiki/tools/release' wipe-workspace: true builders: - shell: | VERSION=`echo "$ZUUL_REF"|sed 's%^refs/tags/%%'` echo "From tag $ZUUL_REF, extracted version $VERSION" python make-release/make-release.py \ --yes \ --git-root https://gerrit.wikimedia.org/r/p/mediawiki \ --conf 'make-release/make-release.yaml' \ --dont-sign \ "$VERSION" mkdir -p "$WORKSPACE"/log php /srv/deployment/integration/phpunit/vendor/bin/phpunit \ --configuration make-release/phpunit.xml \ --log-junit log/junit-phpunit.xml \ make-release/testReleaseTarball.php "$VERSION" publishers: - phpunit-junit - archive: artifacts: 'build/*.gz' - project: name: mediawiki-core phpflavor: - hhvm - zend jobs: - 'mediawiki-core-jslint' - 'mediawiki-core-qunit' - 'mediawiki-core-qunit-karma' - 'mediawiki-core-jsduck' - '{name}-npm' - 'mediawiki-core-jsduck-publish' - 'mediawiki-core-doxygen-publish' - '{name}-whitespaces' - '{name}-phpcs' - '{name}-phpcs-HEAD' - '{name}-phplint' - mediawiki-gate - '{name}-phpcs-HEAD' - mediawiki-core-release - '{name}-bundle-{bundlecommand}': bundlecommand: - rubocop - '{name}-ruby1.9.3lint' - 'mediawiki-phpunit-{phpflavor}' - 'mediawiki-phpunit-{phpflavor}-composer' - 'mediawiki-extensions-{phpflavor}' # For regression testing: - job-template: name: 'mediawiki-core-regression-{branch}' node: hasSlaveScripts && UbuntuPrecise triggers: - zuul builders: - zuul-cloner: projects: > mediawiki/core mediawiki/vendor - mw-install-sqlite - mw-apply-settings - shell: "/srv/deployment/integration/slave-scripts/bin/mw-run-phpunit.sh" publishers: - phpunit-junit-2 - archive-log-dir - mw-teardown logrotate: daysToKeep: 90 - job: name: 'mediawiki-core-code-coverage' node: gallium # Set env variables needed by zuul-cloner since job is not triggered by # Zuul but is timed using Jenkins own scheduler. parameters: - string: name: 'ZUUL_BRANCH' default: 'master' - string: name: 'ZUUL_REF' default: 'master' - string: name: 'ZUUL_CHANGE' default: 'timed_build' - string: name: 'ZUUL_PATCHSET' default: 'timed_build' - string: name: 'ZUUL_PIPELINE' default: 'timed_build' - string: name: 'ZUUL_PROJECT' default: 'mediawiki/core' - string: name: 'ZUUL_URL' default: 'https://gerrit.wikimedia.org/r/p' builders: - zuul-cloner: projects: > mediawiki/core mediawiki/vendor - mw-install-sqlite - mw-apply-settings # FIXME should use the mw-run-phpunit.sh wrapper - shell: | . "/srv/deployment/integration/slave-scripts/bin/mw-set-env.sh" mkdir -p log rm -f log/clover.xml log/clover.bz2 # Since clover file are huge, compress them before archiving # We need to keep the original though for the cloverphp plugin function compress_clover_log() { if [ -s "log/clover.xml" ]; then echo "Compressing log/clover.xml with bz2..." bzip2 --verbose --best --keep log/clover.xml echo "Compression completed." fi } trap compress_clover_log EXIT nice -n 19 php $MW_INSTALL_PATH/tests/phpunit/phpunit.php \ --with-phpunitdir /srv/deployment/integration/phpunit/vendor/phpunit/phpunit \ --exclude-group Dump,Broken,ParserFuzz,Stub \ --coverage-clover log/clover.xml \ --coverage-html /srv/org/wikimedia/integration/cover/mediawiki-core/master/php \ || : # PHP segfault (bug 43972) so ignore any error with '|| :' or the # Jenkins plugin will never generate the coverage report for us # https://issues.jenkins-ci.org/browse/JENKINS-21046 echo "Code coverage report is available at:" echo "https://integration.wikimedia.org/cover/mediawiki-core/master/php" publishers: - archive: artifacts: 'log/clover.xml.bz2' - cloverphp: xml-location: 'log/clover.xml' - mw-teardown triggers: - timed: '0 3,15 * * *' wrappers: - ansicolor - timestamps - project: name: mediawiki-core-regression branch: - master - REL1_19 - REL1_20 - REL1_21 - REL1_22 - REL1_23 - REL1_24 # Find a way to support WMF branches jobs: - 'mediawiki-core-regression-hhvm-{branch}' - 'mediawiki-core-regression-{branch}'