CINXE.COM

Continuous integration - MediaWiki

<!DOCTYPE html> <html class="client-nojs vector-feature-language-in-header-disabled vector-feature-language-in-main-page-header-disabled vector-feature-sticky-header-disabled vector-feature-page-tools-pinned-disabled vector-feature-toc-pinned-clientpref-1 vector-feature-main-menu-pinned-disabled vector-feature-limited-width-clientpref-1 vector-feature-limited-width-content-enabled vector-feature-custom-font-size-clientpref-1 vector-feature-appearance-pinned-clientpref-1 vector-feature-night-mode-disabled skin-theme-clientpref-day vector-toc-available" lang="en" dir="ltr"> <head> <meta charset="UTF-8"> <title>Continuous integration - MediaWiki</title> <script>(function(){var className="client-js vector-feature-language-in-header-disabled vector-feature-language-in-main-page-header-disabled vector-feature-sticky-header-disabled vector-feature-page-tools-pinned-disabled vector-feature-toc-pinned-clientpref-1 vector-feature-main-menu-pinned-disabled vector-feature-limited-width-clientpref-1 vector-feature-limited-width-content-enabled vector-feature-custom-font-size-clientpref-1 vector-feature-appearance-pinned-clientpref-1 vector-feature-night-mode-disabled skin-theme-clientpref-day vector-toc-available";var cookie=document.cookie.match(/(?:^|; )mediawikiwikimwclientpreferences=([^;]+)/);if(cookie){cookie[1].split('%2C').forEach(function(pref){className=className.replace(new RegExp('(^| )'+pref.replace(/-clientpref-\w+$|[^\w-]+/g,'')+'-clientpref-\\w+( |$)'),'$1'+pref+'$2');});}document.documentElement.className=className;}());RLCONF={"wgBreakFrames":true,"wgSeparatorTransformTable":["",""],"wgDigitTransformTable":["",""], "wgDefaultDateFormat":"dmy","wgMonthNames":["","January","February","March","April","May","June","July","August","September","October","November","December"],"wgRequestId":"53f1ff93-7494-4122-9ac6-e28b6b979690","wgCanonicalNamespace":"","wgCanonicalSpecialPageName":false,"wgNamespaceNumber":0,"wgPageName":"Continuous_integration","wgTitle":"Continuous integration","wgCurRevisionId":6378855,"wgRevisionId":6378855,"wgArticleId":64608,"wgIsArticle":true,"wgIsRedirect":false,"wgAction":"view","wgUserName":null,"wgUserGroups":["*"],"wgCategories":["WMF Projects 2011q2","WMF Projects 2011q3","WMF Projects 2011q4","WMF Projects 2012q1","WMF Projects 2012q2","WMF Projects 2012q3","WMF Projects 2012q4","WMF Projects 2013q1","WMF Projects 2013q2","WMF Projects 2013q3","WMF Projects 2013q4","WMF Projects 2014q1","WMF Projects 2014q2","WMF Projects 2014q3","WMF Projects 2014q4","WMF Projects 2015q1","WMF Projects 2015q2","WMF Projects 2015q3","WMF Projects 2015q4","WMF Projects 2016q1", "WMF Projects 2016q2","WMF Projects 2016q3","WMF Projects 2016q4","WMF Projects 2017q1","WMF Projects 2017q2","WMF Projects 2017q3","WMF Projects 2017q4","WMF Projects 2018q1","WMF Projects 2018q2","WMF Projects 2018q3","WMF Projects 2018q4","WMF Projects 2019q1","WMF Projects 2019q2","WMF Projects 2019q3","WMF Projects 2019q4","WMF Projects 2020q1","WMF Projects 2020q2","WMF Projects 2020q3","WMF Projects 2020q4","WMF Projects 2021q1","WMF Projects 2021q2","WMF Projects 2021q3","WMF Projects 2021q4","WMF Projects 2022q1","WMF Projects 2022q2","WMF Projects 2022q3","WMF Projects 2022q4","WMF Projects 2023q1","WMF Projects 2023q2","WMF Projects 2023q3","WMF Projects 2023q4","WMF Projects 2024q1","WMF Projects 2024q2","WMF Projects 2024q3","WMF Projects 2024q4","WMF Projects","Continuous integration"],"wgPageViewLanguage":"en","wgPageContentLanguage":"en","wgPageContentModel":"wikitext","wgRelevantPageName":"Continuous_integration","wgRelevantArticleId":64608,"wgIsProbablyEditable":true, "wgRelevantPageIsProbablyEditable":true,"wgRestrictionEdit":[],"wgRestrictionMove":[],"wgNoticeProject":"mediawiki","wgCiteReferencePreviewsActive":true,"wgMediaViewerOnClick":true,"wgMediaViewerEnabledByDefault":true,"wgVisualEditor":{"pageLanguageCode":"en","pageLanguageDir":"ltr","pageVariantFallbacks":"en"},"wgMFDisplayWikibaseDescriptions":{"search":true,"watchlist":true,"tagline":false,"nearby":true},"wgWMESchemaEditAttemptStepOversample":false,"wgWMEPageLength":3000,"wgTranslatePageTranslation":"source","wgCentralAuthMobileDomain":false,"wgEditSubmitButtonLabelPublish":true,"wgDiscussionToolsFeaturesEnabled":{"replytool":true,"newtopictool":true,"sourcemodetoolbar":true,"topicsubscription":false,"autotopicsub":false,"visualenhancements":false,"visualenhancements_reply":false,"visualenhancements_pageframe":false},"wgDiscussionToolsFallbackEditMode":"visual","wgULSPosition":"personal","wgULSisCompactLinksEnabled":true,"wgVector2022LanguageInHeader":false, "wgULSisLanguageSelectorEmpty":false,"wgWikibaseItemId":"Q108370101","wgCheckUserClientHintsHeadersJsApi":["brands","architecture","bitness","fullVersionList","mobile","model","platform","platformVersion"]};RLSTATE={"ext.globalCssJs.user.styles":"ready","site.styles":"ready","user.styles":"ready","ext.globalCssJs.user":"ready","user":"ready","user.options":"loading","ext.translate.tag.languages":"ready","mediawiki.special":"ready","oojs-ui-core.styles":"ready","oojs-ui.styles.indicators":"ready","mediawiki.widgets.styles":"ready","oojs-ui-core.icons":"ready","mediawiki.htmlform.ooui.styles":"ready","ext.discussionTools.init.styles":"ready","skins.vector.search.codex.styles":"ready","skins.vector.styles":"ready","skins.vector.icons":"ready","ext.translate.edit.documentation.styles":"ready","ext.translate":"ready","ext.wikimediamessages.styles":"ready","ext.visualEditor.desktopArticleTarget.noscript":"ready","ext.uls.pt":"ready","wikibase.client.init":"ready","ext.wikimediaBadges": "ready"};RLPAGEMODULES=["site","mediawiki.page.ready","mediawiki.toc","skins.vector.js","ext.centralNotice.geoIP","ext.centralNotice.startUp","ext.translate.pagetranslation.uls","ext.urlShortener.toolbar","ext.centralauth.centralautologin","ext.visualEditor.desktopArticleTarget.init","ext.visualEditor.targetLoader","ext.echo.centralauth","ext.discussionTools.init","ext.eventLogging","ext.wikimediaEvents","ext.navigationTiming","ext.uls.compactlinks","ext.uls.interface","wikibase.client.vector-2022","ext.checkUser.clientHints","wikibase.sidebar.tracking"];</script> <script>(RLQ=window.RLQ||[]).push(function(){mw.loader.impl(function(){return["user.options@12s5i",function($,jQuery,require,module){mw.user.tokens.set({"patrolToken":"+\\","watchToken":"+\\","csrfToken":"+\\"}); }];});});</script> <link rel="stylesheet" href="/w/load.php?lang=en&amp;modules=ext.discussionTools.init.styles%7Cext.translate%2CwikimediaBadges%7Cext.translate.edit.documentation.styles%7Cext.translate.tag.languages%7Cext.uls.pt%7Cext.visualEditor.desktopArticleTarget.noscript%7Cext.wikimediamessages.styles%7Cmediawiki.htmlform.ooui.styles%7Cmediawiki.special%7Cmediawiki.widgets.styles%7Coojs-ui-core.icons%2Cstyles%7Coojs-ui.styles.indicators%7Cskins.vector.icons%2Cstyles%7Cskins.vector.search.codex.styles%7Cwikibase.client.init&amp;only=styles&amp;skin=vector-2022"> <script async="" src="/w/load.php?lang=en&amp;modules=startup&amp;only=scripts&amp;raw=1&amp;skin=vector-2022"></script> <meta name="ResourceLoaderDynamicStyles" content=""> <link rel="stylesheet" href="/w/load.php?lang=en&amp;modules=site.styles&amp;only=styles&amp;skin=vector-2022"> <meta name="generator" content="MediaWiki 1.44.0-wmf.4"> <meta name="referrer" content="origin"> <meta name="referrer" content="origin-when-cross-origin"> <meta name="robots" content="max-image-preview:standard"> <meta name="format-detection" content="telephone=no"> <meta name="viewport" content="width=1120"> <meta property="og:site_name" content="MediaWiki"> <meta property="og:title" content="Continuous integration - MediaWiki"> <meta property="og:type" content="website"> <link rel="alternate" media="only screen and (max-width: 640px)" href="//m.mediawiki.org/wiki/Continuous_integration"> <link rel="alternate" type="application/x-wiki" title="Edit" href="/w/index.php?title=Continuous_integration&amp;action=edit"> <link rel="apple-touch-icon" href="/static/apple-touch/mediawiki.png"> <link rel="icon" href="/static/favicon/mediawiki.ico"> <link rel="search" type="application/opensearchdescription+xml" href="/w/rest.php/v1/search" title="MediaWiki (en)"> <link rel="EditURI" type="application/rsd+xml" href="//www.mediawiki.org/w/api.php?action=rsd"> <link rel="canonical" href="https://www.mediawiki.org/wiki/Continuous_integration"> <link rel="license" href="https://creativecommons.org/licenses/by-sa/4.0/"> <link rel="alternate" type="application/atom+xml" title="MediaWiki Atom feed" href="/w/index.php?title=Special:RecentChanges&amp;feed=atom"> <link rel="dns-prefetch" href="//meta.wikimedia.org" /> <link rel="dns-prefetch" href="//login.wikimedia.org"> </head> <body class="ext-discussiontools-replytool-enabled ext-discussiontools-newtopictool-enabled ext-discussiontools-sourcemodetoolbar-enabled skin--responsive skin-vector skin-vector-search-vue mediawiki ltr sitedir-ltr mw-hide-empty-elt ns-0 ns-subject mw-editable page-Continuous_integration rootpage-Continuous_integration skin-vector-2022 action-view"><a class="mw-jump-link" href="#bodyContent">Jump to content</a> <div class="vector-header-container"> <header class="vector-header mw-header"> <div class="vector-header-start"> <nav class="vector-main-menu-landmark" aria-label="Site"> <div id="vector-main-menu-dropdown" class="vector-dropdown vector-main-menu-dropdown vector-button-flush-left vector-button-flush-right" > <input type="checkbox" id="vector-main-menu-dropdown-checkbox" role="button" aria-haspopup="true" data-event-name="ui.dropdown-vector-main-menu-dropdown" class="vector-dropdown-checkbox " aria-label="Main menu" > <label id="vector-main-menu-dropdown-label" for="vector-main-menu-dropdown-checkbox" class="vector-dropdown-label cdx-button cdx-button--fake-button cdx-button--fake-button--enabled cdx-button--weight-quiet cdx-button--icon-only " aria-hidden="true" ><span class="vector-icon mw-ui-icon-menu mw-ui-icon-wikimedia-menu"></span> <span class="vector-dropdown-label-text">Main menu</span> </label> <div class="vector-dropdown-content"> <div id="vector-main-menu-unpinned-container" class="vector-unpinned-container"> <div id="vector-main-menu" class="vector-main-menu vector-pinnable-element"> <div class="vector-pinnable-header vector-main-menu-pinnable-header vector-pinnable-header-unpinned" data-feature-name="main-menu-pinned" data-pinnable-element-id="vector-main-menu" data-pinned-container-id="vector-main-menu-pinned-container" data-unpinned-container-id="vector-main-menu-unpinned-container" > <div class="vector-pinnable-header-label">Main menu</div> <button class="vector-pinnable-header-toggle-button vector-pinnable-header-pin-button" data-event-name="pinnable-header.vector-main-menu.pin">move to sidebar</button> <button class="vector-pinnable-header-toggle-button vector-pinnable-header-unpin-button" data-event-name="pinnable-header.vector-main-menu.unpin">hide</button> </div> <div id="p-navigation" class="vector-menu mw-portlet mw-portlet-navigation" > <div class="vector-menu-heading"> Navigation </div> <div class="vector-menu-content"> <ul class="vector-menu-content-list"> <li id="n-mainpage-description" class="mw-list-item"><a href="/wiki/MediaWiki" title="Visit the main page [z]" accesskey="z"><span>Main page</span></a></li><li id="n-mw-download" class="mw-list-item"><a href="/wiki/Download"><span>Get MediaWiki</span></a></li><li id="n-mw-extensions" class="mw-list-item"><a href="/wiki/Special:MyLanguage/Category:Extensions"><span>Get extensions</span></a></li><li id="n-blog-text" class="mw-list-item"><a href="https://techblog.wikimedia.org/"><span>Tech blog</span></a></li><li id="n-mw-contribute" class="mw-list-item"><a href="/wiki/Special:MyLanguage/How_to_contribute"><span>Contribute</span></a></li> </ul> </div> </div> <div id="p-support" class="vector-menu mw-portlet mw-portlet-support" > <div class="vector-menu-heading"> Support </div> <div class="vector-menu-content"> <ul class="vector-menu-content-list"> <li id="n-help" class="mw-list-item"><a href="/wiki/Special:MyLanguage/Help:Contents" title="The place to find out"><span>User help</span></a></li><li id="n-mw-faq" class="mw-list-item"><a href="/wiki/Special:MyLanguage/Manual:FAQ"><span>FAQ</span></a></li><li id="n-mw-manual" class="mw-list-item"><a href="/wiki/Special:MyLanguage/Manual:Contents"><span>Technical manual</span></a></li><li id="n-mw-supportdesk" class="mw-list-item"><a href="/wiki/Project:Support_desk"><span>Support desk</span></a></li><li id="n-mw-communication" class="mw-list-item"><a href="/wiki/Special:MyLanguage/Communication"><span>Communication</span></a></li> </ul> </div> </div> <div id="p-development" class="vector-menu mw-portlet mw-portlet-development" > <div class="vector-menu-heading"> Development </div> <div class="vector-menu-content"> <ul class="vector-menu-content-list"> <li id="n-mw-developerportal" class="mw-list-item"><a href="https://developer.wikimedia.org/"><span>Developer portal</span></a></li><li id="n-svn-statistics" class="mw-list-item"><a href="/wiki/Development_statistics"><span>Code statistics</span></a></li> </ul> </div> </div> <div id="p-mediawiki.org" class="vector-menu mw-portlet mw-portlet-mediawiki_org" > <div class="vector-menu-heading"> mediawiki.org </div> <div class="vector-menu-content"> <ul class="vector-menu-content-list"> <li id="n-portal" class="mw-list-item"><a href="/wiki/Project:Help" title="About the project, what you can do, where to find things"><span>Community portal</span></a></li><li id="n-recentchanges" class="mw-list-item"><a href="/wiki/Special:RecentChanges" title="A list of recent changes in the wiki [r]" accesskey="r"><span>Recent changes</span></a></li><li id="n-mw-translate" class="mw-list-item"><a href="/wiki/Special:LanguageStats"><span>Translate content</span></a></li><li id="n-randompage" class="mw-list-item"><a href="/wiki/Special:Random" title="Load a random page [x]" accesskey="x"><span>Random page</span></a></li><li id="n-mw-discussion" class="mw-list-item"><a href="/wiki/Project:Village_Pump"><span>Village pump</span></a></li><li id="n-Sandboxlink-portlet-label" class="mw-list-item"><a href="/wiki/Project:Sandbox"><span>Sandbox</span></a></li> </ul> </div> </div> <div id="p-lang" class="vector-menu mw-portlet mw-portlet-lang" > <div class="vector-menu-heading"> In other languages </div> <div class="vector-menu-content"> <ul class="vector-menu-content-list"> </ul> <div class="after-portlet after-portlet-lang"><span class="wb-langlinks-add wb-langlinks-link"><a href="https://www.wikidata.org/wiki/Special:EntityPage/Q108370101#sitelinks-wikipedia" title="Add interlanguage links" class="wbc-editpage">Add links</a></span></div> </div> </div> </div> </div> </div> </div> </nav> <a href="/wiki/MediaWiki" class="mw-logo"> <img class="mw-logo-icon" src="/static/images/icons/mediawikiwiki.svg" alt="" aria-hidden="true" height="50" width="50"> <span class="mw-logo-container skin-invert"> <img class="mw-logo-wordmark" alt="MediaWiki" src="/static/images/mobile/copyright/mediawikiwiki-wordmark.svg" style="width: 7.5em; height: 1.125em;"> </span> </a> </div> <div class="vector-header-end"> <div id="p-search" role="search" class="vector-search-box-vue vector-search-box-collapses vector-search-box-show-thumbnail vector-search-box-auto-expand-width vector-search-box"> <a href="/wiki/Special:Search" class="cdx-button cdx-button--fake-button cdx-button--fake-button--enabled cdx-button--weight-quiet cdx-button--icon-only search-toggle" title="Search MediaWiki [f]" accesskey="f"><span class="vector-icon mw-ui-icon-search mw-ui-icon-wikimedia-search"></span> <span>Search</span> </a> <div class="vector-typeahead-search-container"> <div class="cdx-typeahead-search cdx-typeahead-search--show-thumbnail cdx-typeahead-search--auto-expand-width"> <form action="/w/index.php" id="searchform" class="cdx-search-input cdx-search-input--has-end-button"> <div id="simpleSearch" class="cdx-search-input__input-wrapper" data-search-loc="header-moved"> <div class="cdx-text-input cdx-text-input--has-start-icon"> <input class="cdx-text-input__input" type="search" name="search" placeholder="Search MediaWiki" aria-label="Search MediaWiki" autocapitalize="sentences" title="Search MediaWiki [f]" accesskey="f" id="searchInput" > <span class="cdx-text-input__icon cdx-text-input__start-icon"></span> </div> <input type="hidden" name="title" value="Special:Search"> </div> <button class="cdx-button cdx-search-input__end-button">Search</button> </form> </div> </div> </div> <nav class="vector-user-links vector-user-links-wide" aria-label="Personal tools"> <div class="vector-user-links-main"> <div id="p-vector-user-menu-preferences" class="vector-menu mw-portlet" > <div class="vector-menu-content"> <ul class="vector-menu-content-list"> <li id="ca-uls" class="mw-list-item active user-links-collapsible-item"><a data-mw="interface" href="#" class="uls-trigger cdx-button cdx-button--fake-button cdx-button--fake-button--enabled cdx-button--weight-quiet"><span class="vector-icon mw-ui-icon-wikimedia-language mw-ui-icon-wikimedia-wikimedia-language"></span> <span>English</span></a> </li> </ul> </div> </div> <div id="p-vector-user-menu-userpage" class="vector-menu mw-portlet emptyPortlet" > <div class="vector-menu-content"> <ul class="vector-menu-content-list"> </ul> </div> </div> <nav class="vector-appearance-landmark" aria-label="Appearance"> <div id="vector-appearance-dropdown" class="vector-dropdown " title="Change the appearance of the page&#039;s font size, width, and color" > <input type="checkbox" id="vector-appearance-dropdown-checkbox" role="button" aria-haspopup="true" data-event-name="ui.dropdown-vector-appearance-dropdown" class="vector-dropdown-checkbox " aria-label="Appearance" > <label id="vector-appearance-dropdown-label" for="vector-appearance-dropdown-checkbox" class="vector-dropdown-label cdx-button cdx-button--fake-button cdx-button--fake-button--enabled cdx-button--weight-quiet cdx-button--icon-only " aria-hidden="true" ><span class="vector-icon mw-ui-icon-appearance mw-ui-icon-wikimedia-appearance"></span> <span class="vector-dropdown-label-text">Appearance</span> </label> <div class="vector-dropdown-content"> <div id="vector-appearance-unpinned-container" class="vector-unpinned-container"> </div> </div> </div> </nav> <div id="p-vector-user-menu-notifications" class="vector-menu mw-portlet emptyPortlet" > <div class="vector-menu-content"> <ul class="vector-menu-content-list"> </ul> </div> </div> <div id="p-vector-user-menu-overflow" class="vector-menu mw-portlet" > <div class="vector-menu-content"> <ul class="vector-menu-content-list"> <li id="pt-sitesupport-2" class="user-links-collapsible-item mw-list-item user-links-collapsible-item"><a data-mw="interface" href="https://donate.wikimedia.org/?utm_source=donate&amp;utm_medium=sidebar&amp;utm_campaign=spontaneous&amp;uselang=en" class=""><span>Donate</span></a> </li> <li id="pt-createaccount-2" class="user-links-collapsible-item mw-list-item user-links-collapsible-item"><a data-mw="interface" href="/w/index.php?title=Special:CreateAccount&amp;returnto=Continuous+integration" title="You are encouraged to create an account and log in; however, it is not mandatory" class=""><span>Create account</span></a> </li> <li id="pt-login-2" class="user-links-collapsible-item mw-list-item user-links-collapsible-item"><a data-mw="interface" href="/w/index.php?title=Special:UserLogin&amp;returnto=Continuous+integration" title="You are encouraged to log in; however, it is not mandatory [o]" accesskey="o" class=""><span>Log in</span></a> </li> </ul> </div> </div> </div> <div id="vector-user-links-dropdown" class="vector-dropdown vector-user-menu vector-button-flush-right vector-user-menu-logged-out" title="More options" > <input type="checkbox" id="vector-user-links-dropdown-checkbox" role="button" aria-haspopup="true" data-event-name="ui.dropdown-vector-user-links-dropdown" class="vector-dropdown-checkbox " aria-label="Personal tools" > <label id="vector-user-links-dropdown-label" for="vector-user-links-dropdown-checkbox" class="vector-dropdown-label cdx-button cdx-button--fake-button cdx-button--fake-button--enabled cdx-button--weight-quiet cdx-button--icon-only " aria-hidden="true" ><span class="vector-icon mw-ui-icon-ellipsis mw-ui-icon-wikimedia-ellipsis"></span> <span class="vector-dropdown-label-text">Personal tools</span> </label> <div class="vector-dropdown-content"> <div id="p-personal" class="vector-menu mw-portlet mw-portlet-personal user-links-collapsible-item" title="User menu" > <div class="vector-menu-content"> <ul class="vector-menu-content-list"> <li id="pt-sitesupport" class="user-links-collapsible-item mw-list-item"><a href="https://donate.wikimedia.org/?utm_source=donate&amp;utm_medium=sidebar&amp;utm_campaign=spontaneous&amp;uselang=en"><span>Donate</span></a></li><li id="pt-createaccount" class="user-links-collapsible-item mw-list-item"><a href="/w/index.php?title=Special:CreateAccount&amp;returnto=Continuous+integration" title="You are encouraged to create an account and log in; however, it is not mandatory"><span class="vector-icon mw-ui-icon-userAdd mw-ui-icon-wikimedia-userAdd"></span> <span>Create account</span></a></li><li id="pt-login" class="user-links-collapsible-item mw-list-item"><a href="/w/index.php?title=Special:UserLogin&amp;returnto=Continuous+integration" title="You are encouraged to log in; however, it is not mandatory [o]" accesskey="o"><span class="vector-icon mw-ui-icon-logIn mw-ui-icon-wikimedia-logIn"></span> <span>Log in</span></a></li> </ul> </div> </div> <div id="p-user-menu-anon-editor" class="vector-menu mw-portlet mw-portlet-user-menu-anon-editor" > <div class="vector-menu-heading"> Pages for logged out editors <a href="/wiki/Help:Introduction" aria-label="Learn more about editing"><span>learn more</span></a> </div> <div class="vector-menu-content"> <ul class="vector-menu-content-list"> <li id="pt-anoncontribs" class="mw-list-item"><a href="/wiki/Special:MyContributions" title="A list of edits made from this IP address [y]" accesskey="y"><span>Contributions</span></a></li><li id="pt-anontalk" class="mw-list-item"><a href="/wiki/Special:MyTalk" title="Discussion about edits from this IP address [n]" accesskey="n"><span>Talk</span></a></li> </ul> </div> </div> </div> </div> </nav> </div> </header> </div> <div class="mw-page-container"> <div class="mw-page-container-inner"> <div class="vector-sitenotice-container"> <div id="siteNotice"><!-- CentralNotice --></div> </div> <div class="vector-column-start"> <div class="vector-main-menu-container"> <div id="mw-navigation"> <nav id="mw-panel" class="vector-main-menu-landmark" aria-label="Site"> <div id="vector-main-menu-pinned-container" class="vector-pinned-container"> </div> </nav> </div> </div> <div class="vector-sticky-pinned-container"> <nav id="mw-panel-toc" aria-label="Contents" data-event-name="ui.sidebar-toc" class="mw-table-of-contents-container vector-toc-landmark"> <div id="vector-toc-pinned-container" class="vector-pinned-container"> <div id="vector-toc" class="vector-toc vector-pinnable-element"> <div class="vector-pinnable-header vector-toc-pinnable-header vector-pinnable-header-pinned" data-feature-name="toc-pinned" data-pinnable-element-id="vector-toc" > <h2 class="vector-pinnable-header-label">Contents</h2> <button class="vector-pinnable-header-toggle-button vector-pinnable-header-pin-button" data-event-name="pinnable-header.vector-toc.pin">move to sidebar</button> <button class="vector-pinnable-header-toggle-button vector-pinnable-header-unpin-button" data-event-name="pinnable-header.vector-toc.unpin">hide</button> </div> <ul class="vector-toc-contents" id="mw-panel-toc-list"> <li id="toc-mw-content-text" class="vector-toc-list-item vector-toc-level-1"> <a href="#" class="vector-toc-link"> <div class="vector-toc-text">Beginning</div> </a> </li> <li id="toc-Documentation" class="vector-toc-list-item vector-toc-level-1 vector-toc-list-item-expanded"> <a class="vector-toc-link" href="#Documentation"> <div class="vector-toc-text"> <span class="vector-toc-numb">1</span> <span>Documentation</span> </div> </a> <ul id="toc-Documentation-sublist" class="vector-toc-list"> </ul> </li> <li id="toc-Coordination" class="vector-toc-list-item vector-toc-level-1 vector-toc-list-item-expanded"> <a class="vector-toc-link" href="#Coordination"> <div class="vector-toc-text"> <span class="vector-toc-numb">2</span> <span>Coordination</span> </div> </a> <ul id="toc-Coordination-sublist" class="vector-toc-list"> </ul> </li> <li id="toc-Rationale" class="vector-toc-list-item vector-toc-level-1 vector-toc-list-item-expanded"> <a class="vector-toc-link" href="#Rationale"> <div class="vector-toc-text"> <span class="vector-toc-numb">3</span> <span>Rationale</span> </div> </a> <ul id="toc-Rationale-sublist" class="vector-toc-list"> </ul> </li> <li id="toc-Documents" class="vector-toc-list-item vector-toc-level-1 vector-toc-list-item-expanded"> <a class="vector-toc-link" href="#Documents"> <div class="vector-toc-text"> <span class="vector-toc-numb">4</span> <span>Documents</span> </div> </a> <ul id="toc-Documents-sublist" class="vector-toc-list"> </ul> </li> <li id="toc-See_also" class="vector-toc-list-item vector-toc-level-1 vector-toc-list-item-expanded"> <a class="vector-toc-link" href="#See_also"> <div class="vector-toc-text"> <span class="vector-toc-numb">5</span> <span>See also</span> </div> </a> <ul id="toc-See_also-sublist" class="vector-toc-list"> </ul> </li> </ul> </div> </div> </nav> </div> </div> <div class="mw-content-container"> <main id="content" class="mw-body"> <header class="mw-body-header vector-page-titlebar"> <nav aria-label="Contents" class="vector-toc-landmark"> <div id="vector-page-titlebar-toc" class="vector-dropdown vector-page-titlebar-toc vector-button-flush-left" > <input type="checkbox" id="vector-page-titlebar-toc-checkbox" role="button" aria-haspopup="true" data-event-name="ui.dropdown-vector-page-titlebar-toc" class="vector-dropdown-checkbox " aria-label="Toggle the table of contents" > <label id="vector-page-titlebar-toc-label" for="vector-page-titlebar-toc-checkbox" class="vector-dropdown-label cdx-button cdx-button--fake-button cdx-button--fake-button--enabled cdx-button--weight-quiet cdx-button--icon-only " aria-hidden="true" ><span class="vector-icon mw-ui-icon-listBullet mw-ui-icon-wikimedia-listBullet"></span> <span class="vector-dropdown-label-text">Toggle the table of contents</span> </label> <div class="vector-dropdown-content"> <div id="vector-page-titlebar-toc-unpinned-container" class="vector-unpinned-container"> </div> </div> </div> </nav> <h1 id="firstHeading" class="firstHeading mw-first-heading"><span class="mw-page-title-main">Continuous integration</span></h1> <div class="mw-indicators"> </div> </header> <div class="vector-page-toolbar"> <div class="vector-page-toolbar-container"> <div id="left-navigation"> <nav aria-label="Namespaces"> <div id="p-associated-pages" class="vector-menu vector-menu-tabs mw-portlet mw-portlet-associated-pages" > <div class="vector-menu-content"> <ul class="vector-menu-content-list"> <li id="ca-nstab-main" class="selected vector-tab-noicon mw-list-item"><a href="/wiki/Continuous_integration" title="View the content page [c]" accesskey="c"><span>Page</span></a></li><li id="ca-talk" class="vector-tab-noicon mw-list-item"><a href="/wiki/Talk:Continuous_integration" rel="discussion" title="Discussion about the content page [t]" accesskey="t"><span>Discussion</span></a></li> </ul> </div> </div> <div id="vector-variants-dropdown" class="vector-dropdown emptyPortlet" > <input type="checkbox" id="vector-variants-dropdown-checkbox" role="button" aria-haspopup="true" data-event-name="ui.dropdown-vector-variants-dropdown" class="vector-dropdown-checkbox " aria-label="Change language variant" > <label id="vector-variants-dropdown-label" for="vector-variants-dropdown-checkbox" class="vector-dropdown-label cdx-button cdx-button--fake-button cdx-button--fake-button--enabled cdx-button--weight-quiet" aria-hidden="true" ><span class="vector-dropdown-label-text">English</span> </label> <div class="vector-dropdown-content"> <div id="p-variants" class="vector-menu mw-portlet mw-portlet-variants emptyPortlet" > <div class="vector-menu-content"> <ul class="vector-menu-content-list"> </ul> </div> </div> </div> </div> </nav> </div> <div id="right-navigation" class="vector-collapsible"> <nav aria-label="Views"> <div id="p-views" class="vector-menu vector-menu-tabs mw-portlet mw-portlet-views" > <div class="vector-menu-content"> <ul class="vector-menu-content-list"> <li id="ca-view" class="selected vector-tab-noicon mw-list-item"><a href="/wiki/Continuous_integration"><span>Read</span></a></li><li id="ca-edit" class="vector-tab-noicon mw-list-item"><a href="/w/index.php?title=Continuous_integration&amp;action=edit" title="Edit the source code of this page [e]" accesskey="e"><span>Edit</span></a></li><li id="ca-history" class="vector-tab-noicon mw-list-item"><a href="/w/index.php?title=Continuous_integration&amp;action=history" title="Past revisions of this page [h]" accesskey="h"><span>View history</span></a></li> </ul> </div> </div> </nav> <nav class="vector-page-tools-landmark" aria-label="Page tools"> <div id="vector-page-tools-dropdown" class="vector-dropdown vector-page-tools-dropdown" > <input type="checkbox" id="vector-page-tools-dropdown-checkbox" role="button" aria-haspopup="true" data-event-name="ui.dropdown-vector-page-tools-dropdown" class="vector-dropdown-checkbox " aria-label="Tools" > <label id="vector-page-tools-dropdown-label" for="vector-page-tools-dropdown-checkbox" class="vector-dropdown-label cdx-button cdx-button--fake-button cdx-button--fake-button--enabled cdx-button--weight-quiet" aria-hidden="true" ><span class="vector-dropdown-label-text">Tools</span> </label> <div class="vector-dropdown-content"> <div id="vector-page-tools-unpinned-container" class="vector-unpinned-container"> <div id="vector-page-tools" class="vector-page-tools vector-pinnable-element"> <div class="vector-pinnable-header vector-page-tools-pinnable-header vector-pinnable-header-unpinned" data-feature-name="page-tools-pinned" data-pinnable-element-id="vector-page-tools" data-pinned-container-id="vector-page-tools-pinned-container" data-unpinned-container-id="vector-page-tools-unpinned-container" > <div class="vector-pinnable-header-label">Tools</div> <button class="vector-pinnable-header-toggle-button vector-pinnable-header-pin-button" data-event-name="pinnable-header.vector-page-tools.pin">move to sidebar</button> <button class="vector-pinnable-header-toggle-button vector-pinnable-header-unpin-button" data-event-name="pinnable-header.vector-page-tools.unpin">hide</button> </div> <div id="p-cactions" class="vector-menu mw-portlet mw-portlet-cactions emptyPortlet vector-has-collapsible-items" title="More options" > <div class="vector-menu-heading"> Actions </div> <div class="vector-menu-content"> <ul class="vector-menu-content-list"> <li id="ca-more-view" class="selected vector-more-collapsible-item mw-list-item"><a href="/wiki/Continuous_integration"><span>Read</span></a></li><li id="ca-more-edit" class="vector-more-collapsible-item mw-list-item"><a href="/w/index.php?title=Continuous_integration&amp;action=edit" title="Edit the source code of this page [e]" accesskey="e"><span>Edit</span></a></li><li id="ca-more-history" class="vector-more-collapsible-item mw-list-item"><a href="/w/index.php?title=Continuous_integration&amp;action=history"><span>View history</span></a></li> </ul> </div> </div> <div id="p-tb" class="vector-menu mw-portlet mw-portlet-tb" > <div class="vector-menu-heading"> General </div> <div class="vector-menu-content"> <ul class="vector-menu-content-list"> <li id="t-whatlinkshere" class="mw-list-item"><a href="/wiki/Special:WhatLinksHere/Continuous_integration" title="A list of all wiki pages that link here [j]" accesskey="j"><span>What links here</span></a></li><li id="t-recentchangeslinked" class="mw-list-item"><a href="/wiki/Special:RecentChangesLinked/Continuous_integration" rel="nofollow" title="Recent changes in pages linked from this page [k]" accesskey="k"><span>Related changes</span></a></li><li id="t-upload" class="mw-list-item"><a href="//commons.wikimedia.org/wiki/Special:UploadWizard" title="Upload files [u]" accesskey="u"><span>Upload file</span></a></li><li id="t-specialpages" class="mw-list-item"><a href="/wiki/Special:SpecialPages" title="A list of all special pages [q]" accesskey="q"><span>Special pages</span></a></li><li id="t-permalink" class="mw-list-item"><a href="/w/index.php?title=Continuous_integration&amp;oldid=6378855" title="Permanent link to this revision of this page"><span>Permanent link</span></a></li><li id="t-info" class="mw-list-item"><a href="/w/index.php?title=Continuous_integration&amp;action=info" title="More information about this page"><span>Page information</span></a></li><li id="t-cite" class="mw-list-item"><a href="/w/index.php?title=Special:CiteThisPage&amp;page=Continuous_integration&amp;id=6378855&amp;wpFormIdentifier=titleform" title="Information on how to cite this page"><span>Cite this page</span></a></li><li id="t-urlshortener" class="mw-list-item"><a href="/w/index.php?title=Special:UrlShortener&amp;url=https%3A%2F%2Fwww.mediawiki.org%2Fwiki%2FContinuous_integration"><span>Get shortened URL</span></a></li><li id="t-urlshortener-qrcode" class="mw-list-item"><a href="/w/index.php?title=Special:QrCode&amp;url=https%3A%2F%2Fwww.mediawiki.org%2Fwiki%2FContinuous_integration"><span>Download QR code</span></a></li> </ul> </div> </div> <div id="p-coll-print_export" class="vector-menu mw-portlet mw-portlet-coll-print_export" > <div class="vector-menu-heading"> Print/export </div> <div class="vector-menu-content"> <ul class="vector-menu-content-list"> <li id="coll-create_a_book" class="mw-list-item"><a href="/w/index.php?title=Special:Book&amp;bookcmd=book_creator&amp;referer=Continuous+integration"><span>Create a book</span></a></li><li id="coll-download-as-rl" class="mw-list-item"><a href="/w/index.php?title=Special:DownloadAsPdf&amp;page=Continuous_integration&amp;action=show-download-screen"><span>Download as PDF</span></a></li><li id="t-print" class="mw-list-item"><a href="/w/index.php?title=Continuous_integration&amp;printable=yes" title="Printable version of this page [p]" accesskey="p"><span>Printable version</span></a></li> </ul> </div> </div> <div id="p-wikibase-otherprojects" class="vector-menu mw-portlet mw-portlet-wikibase-otherprojects" > <div class="vector-menu-heading"> In other projects </div> <div class="vector-menu-content"> <ul class="vector-menu-content-list"> <li id="t-wikibase" class="wb-otherproject-link wb-otherproject-wikibase-dataitem mw-list-item"><a href="https://www.wikidata.org/wiki/Special:EntityPage/Q108370101" title="Link to connected data repository item [g]" accesskey="g"><span>Wikidata item</span></a></li> </ul> </div> </div> </div> </div> </div> </div> </nav> </div> </div> </div> <div class="vector-column-end"> <div class="vector-sticky-pinned-container"> <nav class="vector-page-tools-landmark" aria-label="Page tools"> <div id="vector-page-tools-pinned-container" class="vector-pinned-container"> </div> </nav> <nav class="vector-appearance-landmark" aria-label="Appearance"> <div id="vector-appearance-pinned-container" class="vector-pinned-container"> <div id="vector-appearance" class="vector-appearance vector-pinnable-element"> <div class="vector-pinnable-header vector-appearance-pinnable-header vector-pinnable-header-pinned" data-feature-name="appearance-pinned" data-pinnable-element-id="vector-appearance" data-pinned-container-id="vector-appearance-pinned-container" data-unpinned-container-id="vector-appearance-unpinned-container" > <div class="vector-pinnable-header-label">Appearance</div> <button class="vector-pinnable-header-toggle-button vector-pinnable-header-pin-button" data-event-name="pinnable-header.vector-appearance.pin">move to sidebar</button> <button class="vector-pinnable-header-toggle-button vector-pinnable-header-unpin-button" data-event-name="pinnable-header.vector-appearance.unpin">hide</button> </div> </div> </div> </nav> </div> </div> <div id="bodyContent" class="vector-body" aria-labelledby="firstHeading" data-mw-ve-target-container> <div class="vector-body-before-content"> <div id="siteSub" class="noprint">From mediawiki.org</div> </div> <div id="contentSub"><div id="mw-content-subtitle"></div></div> <div id="mw-content-text" class="mw-body-content"><div class="mw-pt-translate-header noprint nomobile" dir="ltr" lang="en"><a href="/w/index.php?title=Special:Translate&amp;group=page-Continuous+integration&amp;action=page&amp;filter=&amp;action_source=translate_page" title="Special:Translate">Translate this page</a></div><div class="mw-content-ltr mw-parser-output" lang="en" dir="ltr"><div class="mw-pt-languages noprint navigation-not-searchable" lang="en" dir="ltr"><div class="mw-pt-languages-label">Languages:</div><ul class="mw-pt-languages-list"><li><a href="/wiki/Continuous_integration/id" class="mw-pt-progress mw-pt-progress--high" title="Continuous integration/id (89% translated)" lang="id" dir="ltr">Bahasa Indonesia</a></li> <li><a href="/wiki/Continuous_integration/de" class="mw-pt-progress mw-pt-progress--med" title="Continuous integration/de (32% translated)" lang="de" dir="ltr">Deutsch</a></li> <li><span class="mw-pt-languages-ui mw-pt-languages-selected mw-pt-progress mw-pt-progress--complete" lang="en" dir="ltr">English</span></li> <li><a href="/wiki/Continuous_integration/tr" class="mw-pt-progress mw-pt-progress--high" title="Continuous integration/tr (89% translated)" lang="tr" dir="ltr">Türkçe</a></li> <li><a href="/wiki/Continuous_integration/es" class="mw-pt-progress mw-pt-progress--med" title="Continuous integration/es (47% translated)" lang="es" dir="ltr">español</a></li> <li><a href="/wiki/Continuous_integration/fr" class="mw-pt-progress mw-pt-progress--complete" title="Intégration continue (100% translated)" lang="fr" dir="ltr">français</a></li> <li><a href="/wiki/Continuous_integration/hu" class="mw-pt-progress mw-pt-progress--high" title="Continuous integration/hu (89% translated)" lang="hu" dir="ltr">magyar</a></li> <li><a href="/wiki/Continuous_integration/pl" class="mw-pt-progress mw-pt-progress--med" title="Continuous integration/pl (32% translated)" lang="pl" dir="ltr">polski</a></li> <li><a href="/wiki/Continuous_integration/cs" class="mw-pt-progress mw-pt-progress--complete" title="Průběžná integrace (100% translated)" lang="cs" dir="ltr">čeština</a></li> <li><a href="/wiki/Continuous_integration/ru" class="mw-pt-progress mw-pt-progress--med" title="Continuous integration/ru (16% translated)" lang="ru" dir="ltr">русский</a></li> <li><a href="/wiki/Continuous_integration/ar" class="mw-pt-progress mw-pt-progress--complete" title="الإدماج المستمر (100% translated)" lang="ar" dir="rtl">العربية</a></li> <li><a href="/wiki/Continuous_integration/gu" class="mw-pt-progress mw-pt-progress--low" title="Continuous integration/gu (5% translated)" lang="gu" dir="ltr">ગુજરાતી</a></li> <li><a href="/wiki/Continuous_integration/zh" class="mw-pt-progress mw-pt-progress--med" title="Continuous integration/zh (47% translated)" lang="zh" dir="ltr">中文</a></li> <li><a href="/wiki/Continuous_integration/ja" class="mw-pt-progress mw-pt-progress--med" title="Continuous integration/ja (63% translated)" lang="ja" dir="ltr">日本語</a></li> <li><a href="/wiki/Continuous_integration/nan" class="mw-pt-progress mw-pt-progress--med" title="Continuous integration/nan (37% translated)" lang="nan" dir="ltr">閩南語 / Bân-lâm-gú</a></li></ul></div> <style data-mw-deduplicate="TemplateStyles:r6651102">.mw-parser-output .infobox{box-sizing:border-box;border:2px solid var(--border-color-base,#a2a9b1);width:280px;border-collapse:collapse;border-spacing:0;background-color:white;color:#333;clear:right;float:right;margin:0 0 0.5em 0.5em}.mw-parser-output .infobox-rtl{clear:left;float:left;margin:0 0.5em 0.5em 0}.mw-parser-output .infobox th{text-align:left;padding:0.2em 0.5em;vertical-align:top}.mw-parser-output .infobox-rtl th{text-align:right}@media(max-width:719px){body.mediawiki .mw-parser-output .infobox{float:none;clear:both;width:100%;margin:0 0 .5em 0}}.mw-parser-output .infobox td{border:none;padding:0.2em 0.5em;vertical-align:top}.mw-parser-output .infobox-header{background-color:#a2a9b1;color:#FFF;text-align:left}.mw-parser-output .infobox-header a{color:#FFF}.mw-parser-output .infobox-header td,.mw-parser-output .infobox-header th{padding:0.5em 0.5em}.mw-parser-output .infobox-header img{padding:0 0.2em 0 0.5em}@media screen{html.skin-theme-clientpref-night .mw-parser-output .infobox{background-color:inherit;color:inherit}}@media screen and (prefers-color-scheme:dark){html.skin-theme-clientpref-os .mw-parser-output .infobox{background-color:inherit;color:inherit}}</style><style data-mw-deduplicate="TemplateStyles:r6651116">.mw-parser-output .wmf-engineering-project-box{border:1px solid #eaecf0;padding:.2em;width:300px;background:#f8f9fa;color:#222}.mw-parser-output .wmf-engineering-project-box-catlink{font-size:smaller;margin:.2em;text-align:center}.mw-parser-output .wmf-engineering-project-box-title{font-size:1.2em;margin:.2em;background:#14866d;color:#fff;padding:.5em;text-align:center;font-weight:bold}.mw-parser-output .wmf-engineering-project-box-description{margin:.2em;padding:.2em;font-style:italic}.mw-parser-output .wmf-engineering-project-box-data{font-size:.9em;margin:.2em 0;width:100%}.mw-parser-output .wmf-engineering-project-box-data th{width:25%;font-weight:normal}.mw-parser-output .wmf-engineering-project-box-previous,.mw-parser-output .wmf-engineering-project-box-next{font-size:smaller;margin:.2em}.mw-parser-output .infobox-ltr .wmf-engineering-project-box-previous,.mw-parser-output .infobox-rtl .wmf-engineering-project-box-next{float:left}.mw-parser-output .infobox-ltr .wmf-engineering-project-box-next,.mw-parser-output .infobox-rtl .wmf-engineering-project-box-previous{float:right}@media screen{html.skin-theme-clientpref-night .mw-parser-output .wmf-engineering-project-box{background:transparent;color:inherit}}@media screen and (prefers-color-scheme:dark){html.skin-theme-clientpref-os .mw-parser-output .wmf-engineering-project-box{background:transparent;color:inherit}}</style> <table class="infobox infobox-ltr wmf-engineering-project-box plainlinks"><tbody><tr><td> <div class="nomobile wmf-engineering-project-box-catlink"><a href="/wiki/Special:MyLanguage/Category:WMF_Projects" title="Special:MyLanguage/Category:WMF Projects">Wikimedia Foundation projects</a><span style="display:none"><a href="/wiki/Category:WMF_Projects" title="Category:WMF Projects"> </a></span></div> <div class="wmf-engineering-project-box-title">Continuous integration</div> <div class="wmf-engineering-project-box-description">A testing platform to provide continuous quality control for MediaWiki</div> <table class="wmf-engineering-project-box-data"> <tbody><tr> <th scope="row">Group:</th> <td><a href="/wiki/Wikimedia_Release_Engineering_Team" title="Wikimedia Release Engineering Team">Release Engineering</a></td> </tr> <tr> <th scope="row">Start:</th> <td>2011-06</td> </tr> <tr> <th scope="row">Team members:</th> <td><a href="/wiki/User:Dzduvall" title="User:Dzduvall">Dan Duvall</a>, <a href="/wiki/User:TCipriani_(WMF)" title="User:TCipriani (WMF)">Tyler Cipriani</a>, <a href="/wiki/User:Krinkle" title="User:Krinkle">Timo Tijhof</a></td> </tr> <tr> <th scope="row">Lead:</th> <td><a href="/wiki/User:Hashar" title="User:Hashar">Antoine Musso</a></td> </tr> <tr class="mw-empty-elt"> </tr></tbody></table><div class="wmf-engineering-project-box-previous">← <a href="/wiki/Continuous_integration/Legacy_server" title="Continuous integration/Legacy server">Legacy server</a></div></td></tr></tbody></table> <p>The <a href="https://en.wikipedia.org/wiki/continuous_integration" class="extiw" title="w:continuous integration">continuous integration</a> infrastructure uses <a href="/wiki/Special:MyLanguage/Continuous_integration/Jenkins" title="Special:MyLanguage/Continuous integration/Jenkins">Jenkins</a> to control and execute builds. The main use is to run tests on patches submitted on Gerrit. </p><p>Related services are reachable from its dashboard at <b><a class="external text" href="https://integration.wikimedia.org">integration.wikimedia.org</a></b> </p> <meta property="mw:PageProp/toc"/> <div class="mw-heading mw-heading2 ext-discussiontools-init-section"><h2 id="Documentation" data-mw-thread-id="h-Documentation"><span data-mw-comment-start="" id="h-Documentation"></span>Documentation<span data-mw-comment-end="h-Documentation"></span></h2><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/w/index.php?title=Continuous_integration&amp;action=edit&amp;section=1" title="Edit section: Documentation"><span>edit</span></a><span class="mw-editsection-bracket">]</span></span><!--__DTELLIPSISBUTTON__{"threadItem":{"headingLevel":2,"name":"h-","type":"heading","level":0,"id":"h-Documentation","replies":[]}}--></div> <ul><li><a href="/wiki/Special:MyLanguage/Continuous_integration/Entry_points" title="Special:MyLanguage/Continuous integration/Entry points">Entry points</a><span style="display:none"><a href="/wiki/Continuous_integration/Entry_points" title="Continuous integration/Entry points"> </a></span> - Standardised tests for projects.</li> <li><a href="/wiki/Special:MyLanguage/Continuous_integration/Tutorials" title="Special:MyLanguage/Continuous integration/Tutorials">Tutorials</a><span style="display:none"><a href="/wiki/Continuous_integration/Tutorials" title="Continuous integration/Tutorials"> </a></span> - Learn how to create and enable Jenkins jobs.</li></ul> <div class="mw-heading mw-heading2 ext-discussiontools-init-section"><h2 id="Coordination" data-mw-thread-id="h-Coordination"><span data-mw-comment-start="" id="h-Coordination"></span>Coordination<span data-mw-comment-end="h-Coordination"></span></h2><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/w/index.php?title=Continuous_integration&amp;action=edit&amp;section=2" title="Edit section: Coordination"><span>edit</span></a><span class="mw-editsection-bracket">]</span></span><!--__DTELLIPSISBUTTON__{"threadItem":{"headingLevel":2,"name":"h-","type":"heading","level":0,"id":"h-Coordination","replies":[]}}--></div> <ul><li><style data-mw-deduplicate="TemplateStyles:r6651115">.mw-parser-output .irc-connect>a{color:green}@media screen{html.skin-theme-clientpref-night .mw-parser-output .irc-connect>a{color:#12c812}}@media screen and (prefers-color-scheme:dark){html.skin-theme-clientpref-os .mw-parser-output .irc-connect>a{color:#12c812}}</style><span class="plainlinks" style="font-family: monospace,Courier; white-space: pre-wrap !important; word-wrap: break-word; max-width: 1200px; overflow: auto;" title="#wikimedia-releng on Libera.Chat IRC"><a rel="nofollow" class="external text" href="ircs://irc.libera.chat:6697/wikimedia-releng">#wikimedia-releng</a></span> <sup class="plainlinks irc-connect"><a rel="nofollow" class="external text" href="https://web.libera.chat/?channel=#wikimedia-releng">connect</a></sup> and <link rel="mw-deduplicated-inline-style" href="mw-data:TemplateStyles:r6651115"><span class="plainlinks" style="font-family: monospace,Courier; white-space: pre-wrap !important; word-wrap: break-word; max-width: 1200px; overflow: auto;" title="#wikimedia-dev on Libera.Chat IRC"><a rel="nofollow" class="external text" href="ircs://irc.libera.chat:6697/wikimedia-dev">#wikimedia-dev</a></span> <sup class="plainlinks irc-connect"><a rel="nofollow" class="external text" href="https://web.libera.chat/?channel=#wikimedia-dev">connect</a></sup></li> <li><a rel="nofollow" class="external text" href="https://grafana.wmcloud.org/d/0g9N-7pVz/cloud-vps-project-board?orgId=1&amp;var-project=integration">Monitoring for Jenkins agents</a> (Grafana)</li> <li><a class="external text" href="https://phabricator.wikimedia.org/tag/ci-infra/">Infrastructure Workboard</a> (Phabricator)</li> <li><a class="external text" href="https://gerrit.wikimedia.org/r/#/admin/groups/10,members">Git "integration" user group</a> (Gerrit)</li></ul> <div class="mw-heading mw-heading2 ext-discussiontools-init-section"><h2 id="Rationale" data-mw-thread-id="h-Rationale"><span data-mw-comment-start="" id="h-Rationale"></span>Rationale<span data-mw-comment-end="h-Rationale"></span></h2><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/w/index.php?title=Continuous_integration&amp;action=edit&amp;section=3" title="Edit section: Rationale"><span>edit</span></a><span class="mw-editsection-bracket">]</span></span><!--__DTELLIPSISBUTTON__{"threadItem":{"headingLevel":2,"name":"h-","type":"heading","level":0,"id":"h-Rationale","replies":[]}}--></div> <p>In order to improve the development process, it was proposed to consolidate a platform to run automated tests systematically at pre-commit or post-commit time. </p><p>These tests aim to check that the master branch of our repositories in git remain in an (almost) constantly deployable state. This project also relates to the will to have more frequent code deployments, as continuous integration will give us more confidence in new code if it already passed the automated tests. </p> <div class="mw-heading mw-heading2 ext-discussiontools-init-section"><h2 id="Documents" data-mw-thread-id="h-Documents"><span data-mw-comment-start="" id="h-Documents"></span>Documents<span data-mw-comment-end="h-Documents"></span></h2><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/w/index.php?title=Continuous_integration&amp;action=edit&amp;section=4" title="Edit section: Documents"><span>edit</span></a><span class="mw-editsection-bracket">]</span></span><!--__DTELLIPSISBUTTON__{"threadItem":{"headingLevel":2,"name":"h-","type":"heading","level":0,"id":"h-Documents","replies":[]}}--></div> <div class="toccolours" style="margin: 0 3em;"> <div class="mw-prefixindex-body"><ul class="mw-prefixindex-list"><li><a href="/wiki/Continuous_integration/Allow_list" title="Continuous integration/Allow list">Allow list</a></li> <li><a href="/wiki/Continuous_integration/Architecture/Castor" title="Continuous integration/Architecture/Castor">Architecture/Castor</a></li> <li><a href="/wiki/Continuous_integration/Architecture/Isolation" title="Continuous integration/Architecture/Isolation">Architecture/Isolation</a></li> <li><a href="/wiki/Continuous_integration/Architecture/Troubleshooting" title="Continuous integration/Architecture/Troubleshooting">Architecture/Troubleshooting</a></li> <li><a href="/wiki/Continuous_integration/Browser_tests" title="Continuous integration/Browser tests">Browser tests</a></li> <li><a href="/wiki/Continuous_integration/Codehealth_Pipeline" title="Continuous integration/Codehealth Pipeline">Codehealth Pipeline</a></li> <li><a href="/wiki/Continuous_integration/Data_center_switch" title="Continuous integration/Data center switch">Data center switch</a></li> <li><a href="/wiki/Continuous_integration/Dev" title="Continuous integration/Dev">Dev</a></li> <li><a href="/wiki/Continuous_integration/Docker" title="Continuous integration/Docker">Docker</a></li> <li><a href="/wiki/Continuous_integration/Docker/Dockerfiles" title="Continuous integration/Docker/Dockerfiles">Docker/Dockerfiles</a></li> <li><a href="/wiki/Continuous_integration/Documentation_generation" title="Continuous integration/Documentation generation">Documentation generation</a></li> <li><a href="/wiki/Continuous_integration/Entry_points" title="Continuous integration/Entry points">Entry points</a></li> <li><a href="/wiki/Continuous_integration/Git_repositories" title="Continuous integration/Git repositories">Git repositories</a></li> <li><a href="/wiki/Continuous_integration/Jenkins" title="Continuous integration/Jenkins">Jenkins</a></li> <li><a href="/wiki/Continuous_integration/Jenkins_job_builder" title="Continuous integration/Jenkins job builder">Jenkins job builder</a></li> <li><a href="/wiki/Continuous_integration/Language_Versions_Policy" title="Continuous integration/Language Versions Policy">Language Versions Policy</a></li> <li><a href="/wiki/Continuous_integration/Legacy_server" title="Continuous integration/Legacy server">Legacy server</a></li> <li><a href="/wiki/Continuous_integration/Meetings" title="Continuous integration/Meetings">Meetings</a></li> <li><a href="/wiki/Continuous_integration/Overhaul" title="Continuous integration/Overhaul">Overhaul</a></li> <li><a href="/wiki/Continuous_integration/Ownership_of_Selenium_Jenkins_job" title="Continuous integration/Ownership of Selenium Jenkins job">Ownership of Selenium Jenkins job</a></li> <li><a href="/wiki/Continuous_integration/PHP_CodeSniffer" title="Continuous integration/PHP CodeSniffer">PHP CodeSniffer</a></li> <li><a href="/wiki/Continuous_integration/Parsoid" title="Continuous integration/Parsoid">Parsoid</a></li> <li><a href="/wiki/Continuous_integration/Phan" title="Continuous integration/Phan">Phan</a></li> <li><a href="/wiki/Continuous_integration/Phan/phan-taint-check-plugin" title="Continuous integration/Phan/phan-taint-check-plugin">Phan/phan-taint-check-plugin</a></li> <li><a href="/wiki/Continuous_integration/Phan/phan-taint-check-plugin/Security_issues_found" title="Continuous integration/Phan/phan-taint-check-plugin/Security issues found">Phan/phan-taint-check-plugin/Security issues found</a></li> <li><a href="/wiki/Continuous_integration/Qemu" title="Continuous integration/Qemu">Qemu</a></li> <li><a href="/wiki/Continuous_integration/Quibble" title="Continuous integration/Quibble">Quibble</a></li> <li><a href="/wiki/Continuous_integration/Quibble/ar" title="Continuous integration/Quibble/ar">Quibble/ar</a></li> <li><a href="/wiki/Continuous_integration/Quibble/de" title="Continuous integration/Quibble/de">Quibble/de</a></li> <li><a href="/wiki/Continuous_integration/Quibble/hu" title="Continuous integration/Quibble/hu">Quibble/hu</a></li> <li><a href="/wiki/Continuous_integration/Quibble/id" title="Continuous integration/Quibble/id">Quibble/id</a></li> <li><a href="/wiki/Continuous_integration/Quibble/nan" title="Continuous integration/Quibble/nan">Quibble/nan</a></li> <li><a href="/wiki/Continuous_integration/Quibble/zh" title="Continuous integration/Quibble/zh">Quibble/zh</a></li> <li><a href="/wiki/Continuous_integration/SonarQube_Scanner" title="Continuous integration/SonarQube Scanner">SonarQube Scanner</a></li> <li><a href="/wiki/Continuous_integration/Tutorials" title="Continuous integration/Tutorials">Tutorials</a></li> <li><a href="/wiki/Continuous_integration/Tutorials/Add_phan_to_a_MediaWiki_extension" title="Continuous integration/Tutorials/Add phan to a MediaWiki extension">Tutorials/Add phan to a MediaWiki extension</a></li> <li><a href="/wiki/Continuous_integration/Tutorials/Adding_a_MediaWiki_extension" title="Continuous integration/Tutorials/Adding a MediaWiki extension">Tutorials/Adding a MediaWiki extension</a></li> <li><a href="/wiki/Continuous_integration/Tutorials/Adding_a_new_release_pipeline_for_MediaWiki" title="Continuous integration/Tutorials/Adding a new release pipeline for MediaWiki">Tutorials/Adding a new release pipeline for MediaWiki</a></li> <li><a href="/wiki/Continuous_integration/Tutorials/Adding_basic_checks" title="Continuous integration/Tutorials/Adding basic checks">Tutorials/Adding basic checks</a></li> <li><a href="/wiki/Continuous_integration/Tutorials/Adding_your_extension_to_the_shared_gate_job" title="Continuous integration/Tutorials/Adding your extension to the shared gate job">Tutorials/Adding your extension to the shared gate job</a></li> <li><a href="/wiki/Continuous_integration/Tutorials/Debian_packaging" title="Continuous integration/Tutorials/Debian packaging">Tutorials/Debian packaging</a></li> <li><a href="/wiki/Continuous_integration/Tutorials/Debugging_PHPUnit_Parallel_Test_Failures" title="Continuous integration/Tutorials/Debugging PHPUnit Parallel Test Failures">Tutorials/Debugging PHPUnit Parallel Test Failures</a></li> <li><a href="/wiki/Continuous_integration/Tutorials/Generating_PHP_test_coverage_for_a_MediaWiki_extension" title="Continuous integration/Tutorials/Generating PHP test coverage for a MediaWiki extension">Tutorials/Generating PHP test coverage for a MediaWiki extension</a></li> <li><a href="/wiki/Continuous_integration/Tutorials/Test_your_Python" title="Continuous integration/Tutorials/Test your Python">Tutorials/Test your Python</a></li> <li><a href="/wiki/Continuous_integration/Tutorials/Testing_your_go" title="Continuous integration/Tutorials/Testing your go">Tutorials/Testing your go</a></li> <li><a href="/wiki/Continuous_integration/Tutorials/Trigger_a_job_manually" title="Continuous integration/Tutorials/Trigger a job manually">Tutorials/Trigger a job manually</a></li> <li><a href="/wiki/Continuous_integration/Understanding_build_failures" title="Continuous integration/Understanding build failures">Understanding build failures</a></li> <li><a href="/wiki/Continuous_integration/Virtual_Machine" title="Continuous integration/Virtual Machine">Virtual Machine</a></li> <li><a href="/wiki/Continuous_integration/Workflow" title="Continuous integration/Workflow">Workflow</a></li> <li><a href="/wiki/Continuous_integration/Workflow_2013" title="Continuous integration/Workflow 2013">Workflow 2013</a></li> <li><a href="/wiki/Continuous_integration/Workflow_2014" title="Continuous integration/Workflow 2014">Workflow 2014</a></li> <li><a href="/wiki/Continuous_integration/Zuul" title="Continuous integration/Zuul">Zuul</a></li> <li><a href="/wiki/Continuous_integration/Zuul/gearman_upgrade" title="Continuous integration/Zuul/gearman upgrade">Zuul/gearman upgrade</a></li> <li><a href="/wiki/Continuous_integration/status" title="Continuous integration/status">status</a></li> </ul></div> </div> <p><br/> </p> <div class="mw-heading mw-heading2 ext-discussiontools-init-section"><h2 id="See_also" data-mw-thread-id="h-See_also"><span data-mw-comment-start="" id="h-See_also"></span>See also<span data-mw-comment-end="h-See_also"></span></h2><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/w/index.php?title=Continuous_integration&amp;action=edit&amp;section=5" title="Edit section: See also"><span>edit</span></a><span class="mw-editsection-bracket">]</span></span><!--__DTELLIPSISBUTTON__{"threadItem":{"headingLevel":2,"name":"h-","type":"heading","level":0,"id":"h-See_also","replies":[]}}--></div> <ul><li><a href="https://wikitech.wikimedia.org/wiki/Nodepool" class="extiw" title="wikitech:Nodepool">Nodepool</a></li> <li><a href="/wiki/Special:MyLanguage/Manual:Unit_testing" title="Special:MyLanguage/Manual:Unit testing">Manual:Unit testing</a><span style="display:none"><a href="/wiki/Manual:Unit_testing" title="Manual:Unit testing"> </a></span></li> <li><a href="/wiki/Special:MyLanguage/Beta_cluster" title="Special:MyLanguage/Beta cluster">Beta cluster</a><span style="display:none"><a href="/wiki/Beta_cluster" class="mw-redirect" title="Beta cluster"> </a></span> - Automatically updated to latest master of MediaWiki core and extensions when commits are merged.</li></ul> <!-- NewPP limit report Parsed by mw‐web.codfw.main‐f69cdc8f6‐2hwd8 Cached time: 20241125013522 Cache expiry: 892 Reduced expiry: true Complications: [show‐toc] DiscussionTools time usage: 0.010 seconds CPU time usage: 0.204 seconds Real time usage: 0.312 seconds Preprocessor visited node count: 540/1000000 Post‐expand include size: 15609/2097152 bytes Template argument size: 1732/2097152 bytes Highest expansion depth: 14/100 Expensive parser function count: 5/500 Unstrip recursion depth: 0/20 Unstrip post‐expand size: 14324/5000000 bytes Lua time usage: 0.014/10.000 seconds Lua memory usage: 1049729/52428800 bytes Number of Wikibase entities loaded: 0/400 --> <!-- Transclusion expansion time report (%,ms,calls,template) 100.00% 140.068 1 -total 46.84% 65.603 1 Template:Wikimedia_engineering_project_information 28.66% 40.139 5 Template:Ll 25.47% 35.676 1 Special:PrefixIndex/Continuous_integration/ 16.49% 23.092 7 Template:Pagelang 12.08% 16.920 2 Template:Dir 11.92% 16.694 10 Template:Translatable 9.92% 13.888 2 Template:Irc 4.45% 6.235 1 Template:TNTN 3.86% 5.411 1 Translations:Manual:Unit_testing/Page_display_title/en --> <!-- Saved in parser cache with key mediawikiwiki:pcache:idhash:64608-0!canonical and timestamp 20241125013522 and revision id 6378855. Rendering was triggered because: page-view --> </div><!--esi <esi:include src="/esitest-fa8a495983347898/content" /> --><noscript><img src="https://login.wikimedia.org/wiki/Special:CentralAutoLogin/start?type=1x1" alt="" width="1" height="1" style="border: none; position: absolute;"></noscript> <div class="printfooter" data-nosnippet="">Retrieved from "<a dir="ltr" href="https://www.mediawiki.org/w/index.php?title=Continuous_integration&amp;oldid=6378855">https://www.mediawiki.org/w/index.php?title=Continuous_integration&amp;oldid=6378855</a>"</div></div> <div id="catlinks" class="catlinks" data-mw="interface"><div id="mw-normal-catlinks" class="mw-normal-catlinks"><a href="/wiki/Special:Categories" title="Special:Categories">Categories</a>: <ul><li><a href="/wiki/Category:WMF_Projects" title="Category:WMF Projects">WMF Projects</a></li><li><a href="/wiki/Category:Continuous_integration" title="Category:Continuous integration">Continuous integration</a></li></ul></div><div id="mw-hidden-catlinks" class="mw-hidden-catlinks mw-hidden-cats-hidden">Hidden categories: <ul><li><a href="/wiki/Category:WMF_Projects_2011q2" title="Category:WMF Projects 2011q2">WMF Projects 2011q2</a></li><li><a href="/wiki/Category:WMF_Projects_2011q3" title="Category:WMF Projects 2011q3">WMF Projects 2011q3</a></li><li><a href="/wiki/Category:WMF_Projects_2011q4" title="Category:WMF Projects 2011q4">WMF Projects 2011q4</a></li><li><a href="/wiki/Category:WMF_Projects_2012q1" title="Category:WMF Projects 2012q1">WMF Projects 2012q1</a></li><li><a href="/wiki/Category:WMF_Projects_2012q2" title="Category:WMF Projects 2012q2">WMF Projects 2012q2</a></li><li><a href="/wiki/Category:WMF_Projects_2012q3" title="Category:WMF Projects 2012q3">WMF Projects 2012q3</a></li><li><a href="/wiki/Category:WMF_Projects_2012q4" title="Category:WMF Projects 2012q4">WMF Projects 2012q4</a></li><li><a href="/wiki/Category:WMF_Projects_2013q1" title="Category:WMF Projects 2013q1">WMF Projects 2013q1</a></li><li><a href="/wiki/Category:WMF_Projects_2013q2" title="Category:WMF Projects 2013q2">WMF Projects 2013q2</a></li><li><a href="/wiki/Category:WMF_Projects_2013q3" title="Category:WMF Projects 2013q3">WMF Projects 2013q3</a></li><li><a href="/wiki/Category:WMF_Projects_2013q4" title="Category:WMF Projects 2013q4">WMF Projects 2013q4</a></li><li><a href="/wiki/Category:WMF_Projects_2014q1" title="Category:WMF Projects 2014q1">WMF Projects 2014q1</a></li><li><a href="/wiki/Category:WMF_Projects_2014q2" title="Category:WMF Projects 2014q2">WMF Projects 2014q2</a></li><li><a href="/wiki/Category:WMF_Projects_2014q3" title="Category:WMF Projects 2014q3">WMF Projects 2014q3</a></li><li><a href="/wiki/Category:WMF_Projects_2014q4" title="Category:WMF Projects 2014q4">WMF Projects 2014q4</a></li><li><a href="/wiki/Category:WMF_Projects_2015q1" title="Category:WMF Projects 2015q1">WMF Projects 2015q1</a></li><li><a href="/wiki/Category:WMF_Projects_2015q2" title="Category:WMF Projects 2015q2">WMF Projects 2015q2</a></li><li><a href="/wiki/Category:WMF_Projects_2015q3" title="Category:WMF Projects 2015q3">WMF Projects 2015q3</a></li><li><a href="/wiki/Category:WMF_Projects_2015q4" title="Category:WMF Projects 2015q4">WMF Projects 2015q4</a></li><li><a href="/wiki/Category:WMF_Projects_2016q1" title="Category:WMF Projects 2016q1">WMF Projects 2016q1</a></li><li><a href="/wiki/Category:WMF_Projects_2016q2" title="Category:WMF Projects 2016q2">WMF Projects 2016q2</a></li><li><a href="/wiki/Category:WMF_Projects_2016q3" title="Category:WMF Projects 2016q3">WMF Projects 2016q3</a></li><li><a href="/wiki/Category:WMF_Projects_2016q4" title="Category:WMF Projects 2016q4">WMF Projects 2016q4</a></li><li><a href="/wiki/Category:WMF_Projects_2017q1" title="Category:WMF Projects 2017q1">WMF Projects 2017q1</a></li><li><a href="/wiki/Category:WMF_Projects_2017q2" title="Category:WMF Projects 2017q2">WMF Projects 2017q2</a></li><li><a href="/wiki/Category:WMF_Projects_2017q3" title="Category:WMF Projects 2017q3">WMF Projects 2017q3</a></li><li><a href="/wiki/Category:WMF_Projects_2017q4" title="Category:WMF Projects 2017q4">WMF Projects 2017q4</a></li><li><a href="/wiki/Category:WMF_Projects_2018q1" title="Category:WMF Projects 2018q1">WMF Projects 2018q1</a></li><li><a href="/wiki/Category:WMF_Projects_2018q2" title="Category:WMF Projects 2018q2">WMF Projects 2018q2</a></li><li><a href="/wiki/Category:WMF_Projects_2018q3" title="Category:WMF Projects 2018q3">WMF Projects 2018q3</a></li><li><a href="/wiki/Category:WMF_Projects_2018q4" title="Category:WMF Projects 2018q4">WMF Projects 2018q4</a></li><li><a href="/wiki/Category:WMF_Projects_2019q1" title="Category:WMF Projects 2019q1">WMF Projects 2019q1</a></li><li><a href="/wiki/Category:WMF_Projects_2019q2" title="Category:WMF Projects 2019q2">WMF Projects 2019q2</a></li><li><a href="/wiki/Category:WMF_Projects_2019q3" title="Category:WMF Projects 2019q3">WMF Projects 2019q3</a></li><li><a href="/wiki/Category:WMF_Projects_2019q4" title="Category:WMF Projects 2019q4">WMF Projects 2019q4</a></li><li><a href="/wiki/Category:WMF_Projects_2020q1" title="Category:WMF Projects 2020q1">WMF Projects 2020q1</a></li><li><a href="/wiki/Category:WMF_Projects_2020q2" title="Category:WMF Projects 2020q2">WMF Projects 2020q2</a></li><li><a href="/wiki/Category:WMF_Projects_2020q3" title="Category:WMF Projects 2020q3">WMF Projects 2020q3</a></li><li><a href="/wiki/Category:WMF_Projects_2020q4" title="Category:WMF Projects 2020q4">WMF Projects 2020q4</a></li><li><a href="/wiki/Category:WMF_Projects_2021q1" title="Category:WMF Projects 2021q1">WMF Projects 2021q1</a></li><li><a href="/wiki/Category:WMF_Projects_2021q2" title="Category:WMF Projects 2021q2">WMF Projects 2021q2</a></li><li><a href="/wiki/Category:WMF_Projects_2021q3" title="Category:WMF Projects 2021q3">WMF Projects 2021q3</a></li><li><a href="/wiki/Category:WMF_Projects_2021q4" title="Category:WMF Projects 2021q4">WMF Projects 2021q4</a></li><li><a href="/wiki/Category:WMF_Projects_2022q1" title="Category:WMF Projects 2022q1">WMF Projects 2022q1</a></li><li><a href="/wiki/Category:WMF_Projects_2022q2" title="Category:WMF Projects 2022q2">WMF Projects 2022q2</a></li><li><a href="/wiki/Category:WMF_Projects_2022q3" title="Category:WMF Projects 2022q3">WMF Projects 2022q3</a></li><li><a href="/wiki/Category:WMF_Projects_2022q4" title="Category:WMF Projects 2022q4">WMF Projects 2022q4</a></li><li><a href="/wiki/Category:WMF_Projects_2023q1" title="Category:WMF Projects 2023q1">WMF Projects 2023q1</a></li><li><a href="/wiki/Category:WMF_Projects_2023q2" title="Category:WMF Projects 2023q2">WMF Projects 2023q2</a></li><li><a href="/wiki/Category:WMF_Projects_2023q3" title="Category:WMF Projects 2023q3">WMF Projects 2023q3</a></li><li><a href="/wiki/Category:WMF_Projects_2023q4" title="Category:WMF Projects 2023q4">WMF Projects 2023q4</a></li><li><a href="/wiki/Category:WMF_Projects_2024q1" title="Category:WMF Projects 2024q1">WMF Projects 2024q1</a></li><li><a href="/wiki/Category:WMF_Projects_2024q2" title="Category:WMF Projects 2024q2">WMF Projects 2024q2</a></li><li><a href="/wiki/Category:WMF_Projects_2024q3" title="Category:WMF Projects 2024q3">WMF Projects 2024q3</a></li><li><a href="/wiki/Category:WMF_Projects_2024q4" title="Category:WMF Projects 2024q4">WMF Projects 2024q4</a></li></ul></div></div> </div> </main> </div> <div class="mw-footer-container"> <footer id="footer" class="mw-footer" > <ul id="footer-info"> <li id="footer-info-lastmod"> This page was last edited on 21 February 2024, at 13:34.</li> <li id="footer-info-copyright">Text is available under the <a rel="nofollow" class="external text" href="https://creativecommons.org/licenses/by-sa/4.0/deed.en">Creative Commons Attribution-ShareAlike License</a>; additional terms may apply. Text in <a class="external text" href="https://www.mediawiki.org/wiki/Special:MyLanguage/Help:Contents">the Help: namespace</a> is available under the <a rel="nofollow" class="external text" href="https://creativecommons.org/publicdomain/zero/1.0/">Creative Commons CC0 License</a>. By using this site, you agree to the <a class="external text" href="https://foundation.wikimedia.org/wiki/Special:MyLanguage/Policy:Terms_of_Use">Terms of Use</a> and <a class="external text" href="https://foundation.wikimedia.org/wiki/Special:MyLanguage/Policy:Privacy_policy">Privacy Policy</a>.</li> </ul> <ul id="footer-places"> <li id="footer-places-privacy"><a href="https://foundation.wikimedia.org/wiki/Special:MyLanguage/Policy:Privacy_policy">Privacy policy</a></li> <li id="footer-places-about"><a href="/wiki/Project:About">About mediawiki.org</a></li> <li id="footer-places-disclaimers"><a href="/wiki/Project:General_disclaimer">Disclaimers</a></li> <li id="footer-places-wm-codeofconduct"><a href="https://www.mediawiki.org/wiki/Special:MyLanguage/Code_of_Conduct">Code of Conduct</a></li> <li id="footer-places-developers"><a href="https://developer.wikimedia.org">Developers</a></li> <li id="footer-places-statslink"><a href="https://stats.wikimedia.org/#/www.mediawiki.org">Statistics</a></li> <li id="footer-places-cookiestatement"><a href="https://foundation.wikimedia.org/wiki/Special:MyLanguage/Policy:Cookie_statement">Cookie statement</a></li> <li id="footer-places-mobileview"><a href="//m.mediawiki.org/w/index.php?title=Continuous_integration&amp;mobileaction=toggle_view_mobile" class="noprint stopMobileRedirectToggle">Mobile view</a></li> </ul> <ul id="footer-icons" class="noprint"> <li id="footer-copyrightico"><a href="https://wikimediafoundation.org/" class="cdx-button cdx-button--fake-button cdx-button--size-large cdx-button--fake-button--enabled"><img src="/static/images/footer/wikimedia-button.svg" width="84" height="29" alt="Wikimedia Foundation" loading="lazy"></a></li> <li id="footer-poweredbyico"><a href="https://www.mediawiki.org/" class="cdx-button cdx-button--fake-button cdx-button--size-large cdx-button--fake-button--enabled"><img src="/w/resources/assets/poweredby_mediawiki.svg" alt="Powered by MediaWiki" width="88" height="31" loading="lazy"></a></li> </ul> </footer> </div> </div> </div> <div class="vector-settings" id="p-dock-bottom"> <ul></ul> </div><script>(RLQ=window.RLQ||[]).push(function(){mw.config.set({"wgHostname":"mw-web.codfw.main-f69cdc8f6-2hwd8","wgBackendResponseTime":452,"wgDiscussionToolsPageThreads":[{"headingLevel":2,"name":"h-","type":"heading","level":0,"id":"h-Documentation","replies":[]},{"headingLevel":2,"name":"h-","type":"heading","level":0,"id":"h-Coordination","replies":[]},{"headingLevel":2,"name":"h-","type":"heading","level":0,"id":"h-Rationale","replies":[]},{"headingLevel":2,"name":"h-","type":"heading","level":0,"id":"h-Documents","replies":[]},{"headingLevel":2,"name":"h-","type":"heading","level":0,"id":"h-See_also","replies":[]}],"wgPageParseReport":{"discussiontools":{"limitreport-timeusage":"0.010"},"limitreport":{"cputime":"0.204","walltime":"0.312","ppvisitednodes":{"value":540,"limit":1000000},"postexpandincludesize":{"value":15609,"limit":2097152},"templateargumentsize":{"value":1732,"limit":2097152},"expansiondepth":{"value":14,"limit":100},"expensivefunctioncount":{"value":5,"limit":500},"unstrip-depth":{"value":0,"limit":20},"unstrip-size":{"value":14324,"limit":5000000},"entityaccesscount":{"value":0,"limit":400},"timingprofile":["100.00% 140.068 1 -total"," 46.84% 65.603 1 Template:Wikimedia_engineering_project_information"," 28.66% 40.139 5 Template:Ll"," 25.47% 35.676 1 Special:PrefixIndex/Continuous_integration/"," 16.49% 23.092 7 Template:Pagelang"," 12.08% 16.920 2 Template:Dir"," 11.92% 16.694 10 Template:Translatable"," 9.92% 13.888 2 Template:Irc"," 4.45% 6.235 1 Template:TNTN"," 3.86% 5.411 1 Translations:Manual:Unit_testing/Page_display_title/en"]},"scribunto":{"limitreport-timeusage":{"value":"0.014","limit":"10.000"},"limitreport-memusage":{"value":1049729,"limit":52428800}},"cachereport":{"origin":"mw-web.codfw.main-f69cdc8f6-2hwd8","timestamp":"20241125013522","ttl":892,"transientcontent":true}}});});</script> <script type="application/ld+json">{"@context":"https:\/\/schema.org","@type":"Article","name":"Continuous integration","url":"https:\/\/www.mediawiki.org\/wiki\/Continuous_integration","sameAs":"http:\/\/www.wikidata.org\/entity\/Q108370101","mainEntity":"http:\/\/www.wikidata.org\/entity\/Q108370101","author":{"@type":"Organization","name":"Contributors to Wikimedia projects"},"publisher":{"@type":"Organization","name":"Wikimedia Foundation, Inc.","logo":{"@type":"ImageObject","url":"https:\/\/www.wikimedia.org\/static\/images\/wmf-hor-googpub.png"}},"datePublished":"2011-07-25T10:00:10Z","dateModified":"2024-02-21T13:34:52Z","headline":"testing platform to provide continuous quality control for MediaWiki"}</script> </body> </html>

Pages: 1 2 3 4 5 6 7 8 9 10