summaryrefslogtreecommitdiffstats
path: root/scripts
Commit message (Collapse)AuthorAgeFilesLines
* corebenchrunner: Fix a timeout bugAudun Sutterud7 days1-0/+2
| | | | | | | | Explicit termination is necessary after the cancellation of an asyncio.subprocess.Process.wait(). Change-Id: I205352008f492cdcd5a741d3ae83570ff5cb7d0d Reviewed-by: Daniel Smith <daniel.smith@qt.io>
* corebenchrunner: Improve error logicAudun Sutterud7 days3-38/+27
| | | | | | | Match-statements are error-prone. Use simple if-statements instead. Change-Id: Ib287ade80187585142b2aa7ab39ea5c7bf3605dd Reviewed-by: Daniel Smith <daniel.smith@qt.io>
* Modify pick behavior when the expected parent has not been picked yetDaniel Smith12 days2-61/+64
| | | | | | | | | | | | | Current behavior of picking to the first-found parent in a relation chain can sometimes cause issues with broken dependencies. This change modifies the behavior to always wait for the expected parent to be picked before picking the child. If the wait times out, the bot will fall back to the old behavior of walking the chain to find the nearest suitable parent. Fixes: QTQAINFRA-6167 Change-Id: I3074988b10e4efad7307770ef5ac218bb39d5066 Reviewed-by: Daniel Smith <daniel.smith@qt.io>
* Add API endpoint for calculating JIRA FixVersion for a gerrit changesDaniel Smith12 days2-20/+135
| | | | | | | | | | | | | This patch introduces /jiracloser/fixversion endpoint which calculates the JIRA FixVersion for a gerrit change. The The endpoint accepts only the unique gerrit change number in the "change" query parameter. Gerrit Change Ids are not supported. The endpoint responds with 200 status code and a JSON body of one or more JIRA fixVersions. Change-Id: Iddaf3b6bfb4527c1d384d77b5ee8ff8794fd0cb3 Reviewed-by: Daniel Smith <daniel.smith@qt.io> Reviewed-by: Audun Sutterud <audun.sutterud@qt.io>
* Fix detection of non-numeric branch names in waterfall logicDaniel Smith12 days2-6/+22
| | | | | | | | | | | | | Non-numeric branches cannot follow a logical order for cherry- picking. This patch fixes a bug where a crash would occur if the source branch was non-numeric, but the target branch was numeric/dev/master. The waterfall logic will now correctly return a flat list of targets when either source or target branches are non-compliant. Fixes: QTQAINFRA-6241 Change-Id: If228ed0a49e566873b9c2677ca3c675b698fc669 Reviewed-by: Daniel Smith <daniel.smith@qt.io>
* Fix call to print_failed_test() missing last argEdward Welbourne2024-04-191-1/+1
| | | | | | | | | | | Follows up on commit 3abeab87a0cbaaba4a6897dba4c7fcba241adc2a adding the new parameter to the second call to print_failed_test(), which has been broken - leading to TypeError when hit - since that commit. Pick-to: master Change-Id: Ic460b406bbea7a5fe8034c39d1d52ea8955c43e5 Reviewed-by: Friedemann Kleint <Friedemann.Kleint@qt.io> Reviewed-by: Fabian Kosmale <fabian.kosmale@qt.io>
* corebenchrunner: Use robust error logicAudun Sutterud2024-04-168-138/+111
| | | | | | | | | | | | Using match-statements to catch errors can be unsafe. If there are multiple error-types, a match-statement targeted at the wrong one can let errors fall through. A bug like this was fixed recently. This commit attempts to guard against cases like that by simplifying the error hierarchy, removing all types but one, and by using simpler if-statements instead of match-statements where this makes sense. Change-Id: I4b4307b9b94d98833cfb26ac86095f551e918470 Reviewed-by: Daniel Smith <daniel.smith@qt.io>
* corebenchrunner: Fix error logicAudun Sutterud2024-04-161-4/+4
| | | | | | | | A function returned the wrong error type, causing match-statements to fall through and errors to go uncaught. Change-Id: Ic71b69fca3916d61c3ed6def2cddefc350d511c7 Reviewed-by: Daniel Smith <daniel.smith@qt.io>
* PySide Deployment Test: Change executable suffixShyamnath Premnadh2024-04-091-2/+9
| | | | | | | | - from .bin to .app Pick-to: master Change-Id: I682618f5eceefd069709c62f32dd691ceeb3d3b2 Reviewed-by: Friedemann Kleint <Friedemann.Kleint@qt.io>
* testwheel.py: Adapt to changed example layout in 6.7Friedemann Kleint2024-04-091-1/+1
| | | | | | Pick-to: master Change-Id: I255d45985e91bb93e88e7affee926e58460ae77e Reviewed-by: Cristian Maureira-Fredes <cristian.maureira-fredes@qt.io>
* testwheel.py: Test a Qt Quick Controls exampleFriedemann Kleint2024-04-021-0/+2
| | | | | | | Pick-to: master Task-number: PYSIDE-2655 Change-Id: Id7bbd2159931b684e7c125399e5d623bbeb7855e Reviewed-by: Adrian Herrmann <adrian.herrmann@qt.io>
* Fix --amend and --replace for api-review-genEdward Welbourne2024-03-211-29/+70
| | | | | | | | | | We can use fixup! commits for the former; for the latter, we need to move the old branch aside, only deleting it when we're finished, so that we can look up each commit's prior Change-Id as we record it. Fixes: QTQAINFRA-5757 Change-Id: I3d674133b4c2e27357ca89f9b72ce2b15bb3ea9a Reviewed-by: Daniel Smith <daniel.smith@qt.io>
* Only clear away the api-review-* branch if it's newEdward Welbourne2024-03-211-1/+4
| | | | | | | | | | | On a follow-up to update a review, if the module had no changes since the prior review, api-review-gen would delete the existing review branch. Don't do that; only delete if the branch was newly made. Report a revised completion message in the case that omits this. Change-Id: I8a50a1cd37f77ccc9961a0575c47a706c0ce6cae Reviewed-by: Dimitrios Apostolou <jimis@qt.io> Reviewed-by: Daniel Smith <daniel.smith@qt.io>
* Prefer somewhat similar old lines to match a new oneEdward Welbourne2024-03-211-10/+27
| | | | | | | | | | | When resetboring has more than one (non-trivial) line in the old code that could be a match to a new line, prefer an exact match if present or one with the same indent otherwise. It's still crude, but slightly less so than just taking the first - and marginally reduces noise. Change-Id: I913fb51363cf81efea37ac0a24c698bfa3572200 Reviewed-by: Daniel Smith <daniel.smith@qt.io> Reviewed-by: Friedemann Kleint <Friedemann.Kleint@qt.io>
* Extend cherry-pick bot to support using submit in select reposDaniel Smith2024-03-208-13/+194
| | | | | | | | | | | | | | | | Some repos are in submit-only mode and do not use the CI. This patch adds support for using the submit command instead, based on configuration in the config.json or environment variables. This config is only made available per-repo, and cannot be used to make a specific branch submit-only. Using configuration over deductive or fallback logic is intended to be more explicit to reduce security concerns of unreviewed code being hard-submitted in unapproved repos. Task-number: QTQAINFRA-6157 Change-Id: If2d0e538369c470e0753d311e183ea736981b63c Reviewed-by: Daniel Smith <daniel.smith@qt.io>
* Fix detection of tqtc/lts- and lts- prefixed branches in jira closerDaniel Smith2024-03-201-4/+7
| | | | | | | | | | | | | Due to how the jira closer matches fix version based on raw version strings, it was incorrectly checking gerrit for the existence of tqtc/lts- and lts- prefixed branches as the raw branch without the prefix. This caused the bot to believe that the target branch was not yet created, and assign the wrong fix version to the jira issue. Fixes: QTQAINFRA-6064 Change-Id: If3879ba0a696eca613432ee01d633bb347accc99 Reviewed-by: Daniel Smith <daniel.smith@qt.io>
* Fix cache population for branch data in jira_closerDaniel Smith2024-03-201-1/+1
| | | | | | | | | | | | | | The jira closer bot performs a check on branching date to determine if a given change merged to a branch before a given branching date. This is done with MomentJS, and a check which validates that cached datetime is a Moment object fails due to improperly populating the local cache from database upon startup. This ultimately leads to the wrong version being chosen when a change is merged to a branch after the branching date. Fixes: QTQAINFRA-6064 Change-Id: I1ef32f3cae9ee5bc38c2b5b7f5b3a77adc4f668e Reviewed-by: Daniel Smith <daniel.smith@qt.io>
* Add a plugin to welcome new contributorsDaniel Smith2024-03-205-46/+335
| | | | | | | | | | | | | | This plugin will post a welcome message to new contributors when they submit their first patchset to The Qt Project, also adding a random selection of four users from a buddy group of reviewers that have volunteered to help new contributors. This patch also includes some minor fixups found in related code discovered during development of this plugin. Fixes: QTQAINFRA-5973 Change-Id: I1762a1047aa6c72e30b60c7ee5d277cee5750ade Reviewed-by: Daniel Smith <daniel.smith@qt.io>
* Ensure that feature branches are children of the same major branchesDaniel Smith2024-03-191-1/+1
| | | | | | | | | | | | | This change addresses a bug where if the immediate branch targets are on different major branches, the target for the higher major branch can be considered a child of an older major branch. This occurs when the one of the targets is a release branch for 6.x.x and the other is 5.x where the feature branch of 5.x is greater than that of the 6.x target. Fixes: QTQAINFRA-6200 Change-Id: Id061740c70bd6215ddb03aa74cf4133bcb074c76 Reviewed-by: Edward Welbourne <edward.welbourne@qt.io>
* Update the log parser to account for additional timeout messagesDaniel Smith2024-03-191-1/+5
| | | | | | | Fixes: QTQAINFRA-6187 Change-Id: I910e392cbeb8a681b1e717e1652b7584bc07529c Reviewed-by: Fabian Kosmale <fabian.kosmale@qt.io> Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@qt.io>
* corebenchrunner: Remove a test dependencyAudun Sutterud2024-03-181-5/+14
| | | | | | | | The test depends on the default configuration file. This causes issues when modifying the configuration file for testing purposes. Change-Id: I0017b810f1d735b86934714a8d946729557988ff Reviewed-by: Daniel Smith <daniel.smith@qt.io>
* corebenchrunner: Strip information from config.jsonAudun Sutterud2024-02-271-4/+4
| | | | | | | | | | | | | We should use the production instance of the Cherrypick-bot. We should not hardcode login credentials. These should always be selected. The various parameters in the Git URL should be configured through ~/.ssh/config, as specified in the README file. Change-Id: I8b4f37b3a8004c278ce063d416cef43ea006fbec Reviewed-by: Daniel Smith <daniel.smith@qt.io>
* Fix resetboring's failure to spot hspace-only changesEdward Welbourne2024-02-191-3/+11
| | | | | | | | | | | | | | | | The 6.7 review for QSql included a file where all that had changed was some s/Type& name/Type &name/ fixes. This arose because there was no other change to the lines in question and the initial scan of the new lines thus concluded nothing boring had changed, so there was no point recording the line for comparison to old lines. Retain at least one representation of each non-trivial line to match, so that we do catch cases where the only boring change is to spacing. Package the non-trivial line check (previously used when reversing strip) in a function since we're reusing it; and include backslash in its list of trivia, since that arises in trivial lines of a macro body. Change-Id: I10443bd1494932696f176f90b663035a772ca805 Reviewed-by: Cristian Maureira-Fredes <cristian.maureira-fredes@qt.io>
* Work round dulwich changing its IndexEntry internalsEdward Welbourne2024-02-191-2/+7
| | | | | | | | | | | | | | | The pseudo-constructor for replacement IndexEntry objects needed to get the right number of parameters, for which it needed to know how many that would be. Inconveniently, that meant accessing an internal data field that was named _fields; but from dulwich 0.21 IndexEntry is an @dataclass, so the relevant member is __dataclass_fields__ instead. Remain backwards-compatible for now, as Jani has the older version still. Task-number: QTBUG-119952 Change-Id: Ia4b0bc336442324e228713da0c597dcc383b843a Reviewed-by: Cristian Maureira-Fredes <cristian.maureira-fredes@qt.io> Reviewed-by: Ievgenii Meshcheriakov <ievgenii.meshcheriakov@qt.io>
* testwheel.py: Adapt the distribution checkFriedemann Kleint2024-02-061-2/+2
| | | | | | | | Wheels have underscores in 6.6.2. Pick-to: master Change-Id: Ib916326b6d098029b50358a858f505a5295c69cd Reviewed-by: Adrian Herrmann <adrian.herrmann@qt.io>
* Ignore commented-out qt_internal_add...module() usesEdward Welbourne2024-01-251-1/+1
| | | | | | | | | A comment in a CMakeLists.txt file would produce a bogus entry in the list of Qt modules that api-review-gen tried to scan the CMake files for. Change-Id: I0c22bf691ac6e7026f85502164b3e6f6b5c9f4bb Reviewed-by: Dimitrios Apostolou <jimis@qt.io>
* corebenchrunner: Rename the runnerAudun Sutterud2024-01-1523-3/+3
| | | | | | | | | The new name is already established, we use it for the database and other services. It is also easier to pronounce, and possibly also more memorable. Change-Id: I8545d252c8903e5b2130dec9d65dbc13fc9bfa83 Reviewed-by: Daniel Smith <Daniel.Smith@qt.io>
* Respect done statefulness of each agent when restoring jobs on startupDaniel Smith2024-01-152-17/+46
| | | | | | | | | | | | | | | This patch fixes an issue where if one agent assigned to a job completes the work, but another has not for any reason, the agent which has already completed the job will be assigned the work again. This was due to the recovery logic not respecting the done state of the agent, assigning work to all agents if any agent was not done. This issue is fixed by only assigning work to agents which are not done, and correctly marking job_done for the job if all agents are done or an agent which is not done becomes stale. Change-Id: I8c441cafd42941741a858cd78542ebe11c1075d7 Reviewed-by: Audun Sutterud <audun.sutterud@qt.io> Reviewed-by: Daniel Smith <Daniel.Smith@qt.io>
* Update logic to check for tqtc- based project namesDaniel Smith2024-01-152-3/+10
| | | | | | | | Also includes a bugfix for parent selection where the correct parent is selected in logic, but the wrong parent is used in practice. Change-Id: I44054a3120b129133cf61732f9149bd3921b21f5 Reviewed-by: Daniel Smith <Daniel.Smith@qt.io>
* Add support for Error type status updates from core benchmarks agentsDaniel Smith2024-01-151-6/+3
| | | | | | | | This change also removes development block comments, as the related code is necessary for production in the current use case. Change-Id: I87203ff563aeab866f4ca0044fca35c3524a84cf Reviewed-by: Daniel Smith <Daniel.Smith@qt.io>
* Fix issue when picking from tqtc to tqtc repo/branchDaniel Smith2024-01-151-0/+1
| | | | | | | | | Due to the logic of discovering the appropriate prefix for the tqtc repo/branch, the process would fork in some cases due to a missing return statement. Change-Id: I0f070958ae29e53a58b69dbabd2cd3dfea311a16 Reviewed-by: Daniel Smith <Daniel.Smith@qt.io>
* Prevent posting of duplicate comments on the same patchsetDaniel Smith2024-01-151-31/+64
| | | | | | Fixes: QTQAINFRA-5848 Change-Id: I9f90095b5a6d90e72ddcd8251dca555999676ad3 Reviewed-by: Daniel Smith <Daniel.Smith@qt.io>
* Update attention set behavior and un-WIPing changesDaniel Smith2024-01-153-9/+64
| | | | | | Fixes: QTQAINFRA-5797 Change-Id: I12415e774715c97d8e4a01e5836609e8db79a770 Reviewed-by: Daniel Smith <Daniel.Smith@qt.io>
* Ensure that the correct parent is chosen in relation chainsDaniel Smith2024-01-152-106/+174
| | | | | | | | | | | | | | | | | Fixup for da2b640d7e6c2157bb7af0bac7b37f66ca4a25fa When examining heridity for a change in a relation chain, the "parent" field of the newly merged change cannot be trusted due to gerrit breaking relation chains on merge. Instead, use the previously fetched relation chain data for the current-1 patchset to select a parent change ID, then query for the current revision of the parent. Also contains a fix for picking when the preferred parent is not ready. Fixes: QTQAINFRA-5796 Fixes: QTQAINFRA-5849 Change-Id: I2a0dc214ae3669e83ff525d21ae46505d2acad51 Reviewed-by: Daniel Smith <Daniel.Smith@qt.io>
* Retool database schema and fix success check of database queryDaniel Smith2024-01-151-25/+32
| | | | | Change-Id: I8eb1ae533a8d674e76dbc2f0696688abdc287362 Reviewed-by: Daniel Smith <Daniel.Smith@qt.io>
* Waterfall cherry-picks from newer to older branchesDaniel Smith2024-01-156-97/+916
| | | | | | | | | | | | | | | | | | | The current behavior of blasting all requested picks at once is causing some issues with apparent regressions in the event that a change is cherry-picked to both an older branch and a newer one, but the newer pick fails to merge. When a user upgrades versions, it then appears that there has been a regression. In order to reduce these types of incidents, the pick-to targets are checked for any gaps before determing the pick order. Any missing targets will be added to the Pick-to footer resulting from the first cherry-pick. The latest feature branch specified in or added to the footer will be picked first, and any remaining feature or release branches are tacked on to a new Pick-to: footer of the cherry-pick. Change-Id: I8176395fcd082e235280fc0f7da06cf95190bfcd Reviewed-by: Daniel Smith <Daniel.Smith@qt.io>
* Fix last reference to sync.profile filesEdward Welbourne2024-01-081-2/+2
| | | | | | | | Amends commit 663273520c425535f063c6b53d8f39c50f401db3 to also remove the references to sync.profile in all-api-modules. Change-Id: I87bf67cad9ac7ab96044e00c1a7529f9486e3865 Reviewed-by: Alexey Edelev <alexey.edelev@qt.io>
* testwheel.py: Adapt to the new examples wheelFriedemann Kleint2023-11-211-8/+12
| | | | | | | | | | The examples directory should now be back and be automatically detected. Still the PYSIDE_DESIGNER_PLUGINS variable needs to be set. Move it to a helper function. Pick-to: master Change-Id: Ibe525d1b62b689f254488df891ed5b149a182fec Reviewed-by: Shyamnath Premnadh <Shyamnath.Premnadh@qt.io>
* Create the QTest Benchmark RunnerAudun Sutterud2023-10-2723-0/+2296
| | | | | | | | | | A benchmark runner that runs the QTest benchmarks in the QtBase repository. It fetches Git revisions from a server, checks them out, runs the benchmarks, and uploads results to a database. See the README file for more information. Change-Id: I96078ba5297bff6c8b42a31e929f720a41684934 Reviewed-by: Daniel Smith <Daniel.Smith@qt.io>
* testwheel.py: Fix path to QtGraphs gallery exampleFriedemann Kleint2023-10-161-1/+1
| | | | | | | | | | Amends 282e570c485f92ba68a9ca2c534042c191a7c1ff. Pick-to: master Task-number: PYSIDE-2206 Change-Id: If8bf6a34fa9062908de19081e0239b042f58f399 Reviewed-by: Christian Tismer <tismer@stackless.com> Reviewed-by: Adrian Herrmann <adrian.herrmann@qt.io>
* testwheel.py: Add AsyncIO exampleFriedemann Kleint2023-10-131-0/+1
| | | | | | | Pick-to: master Change-Id: I856e5597deff26383830c8f28bb9fb8b7c01c645 Reviewed-by: Adrian Herrmann <adrian.herrmann@qt.io> Reviewed-by: Shyamnath Premnadh <Shyamnath.Premnadh@qt.io>
* Add a script which cleans the old build refsCasimir Saastamoinen2023-10-103-0/+319
| | | | | | | Task-number: COIN-685 Change-Id: I3594573def3836c6ca01608f45d997929da46c53 Reviewed-by: Jukka Jokiniva <jukka.jokiniva@qt.io> Reviewed-by: Daniel Smith <Daniel.Smith@qt.io>
* testwheel.py: Update examplesFriedemann Kleint2023-09-281-2/+5
| | | | | | | | | Use widgetsnanobrowser.py for 6.5 and QtGraphs gallery for 6.6. Pick-to: master Task-number: PYSIDE-2206 Change-Id: I8110d014f1a63646c38c09b13185d9eaba8effba Reviewed-by: Shyamnath Premnadh <Shyamnath.Premnadh@qt.io>
* Update and install required packagesDaniel Smith2023-09-142-6/+169
| | | | | Change-Id: I9e156219451aa976befd677451734a61201142cf Reviewed-by: Daniel Smith <Daniel.Smith@qt.io>
* Test for LTS targets if already operating in a tqtc/ projectDaniel Smith2023-08-181-65/+73
| | | | | | | | | | This patch fixes a bug where the cherry-pick bot would fail to find a valid LTS pick target if the originating change was merged in a tqtc repo. Fixes: QTQAINFRA-5773 Change-Id: I8f0d78de01f7d3ac4043d52747e21c036809e75d Reviewed-by: Daniel Smith <Daniel.Smith@qt.io>
* Allow multiple listeners for the same eventDaniel Smith2023-08-183-54/+79
| | | | | | | | | | | | | | | | | | | | | | The original design of the cherry-pick bot disallowed multiple listeners for the same event (e.g. staged_[changeId]) in order to avoid accidntal duplication of work. However, there are some situations where the same event should be subscribed to from multiple places. For example, if a comment about staging a parent should be posted after 48 hours, we need to listen for the staged_ event of the parent as a cancel event for the comment poster as well as the automatic staging mechanism for the child. This change allows multiple listeners for the same event, but adds a contextId to the event so that the listeners can be distinguished. Since listeners are removed from the JS Events cache by function, the callback function is now tied to the contextId rather than a simple anonymous function, allowing the correct listener to be removed when needed. Fixes: QTQAINFRA-5696 Change-Id: Ib49f9fa36e47fc2d131fff3cb358250c31912e53 Reviewed-by: Daniel Smith <Daniel.Smith@qt.io>
* Say hello to the new Core Benchmarks CoordinatorDaniel Smith2023-08-1810-1574/+3493
| | | | | | | | | | | | This plugin collects work from passed integrations and assigns benchmark runs to any connected agents. The system uses persistent socket connections to agents, so agents are able to report status updates for each test run in realtime. Task-number: QTQAINFRA-4806 Task-number: QTQAINFRA-5414 Change-Id: I0e19659613e53affe078e8329de5b1701ef9d57f Reviewed-by: Daniel Smith <Daniel.Smith@qt.io>
* Work around broken relation chains of merged changesDaniel Smith2023-08-182-3/+5
| | | | | | | | | | | | When the qt workflow plugin merges a change, it may break the original relation chain due to the order in which the changes are cherry-picked by the plugin. This patch adds a workaround of examining the current-1 patchset of the change to see the pre- merge relation chain. Fixes: QTQAINFRA-5695 Change-Id: I4cc2d204de5c814209b1d0c7ff9e66ed6c34f2e9 Reviewed-by: Daniel Smith <Daniel.Smith@qt.io>
* Add a plugin to choose fix versions and close Jira issuesDaniel Smith2023-08-185-0/+1395
| | | | | | | | | | | | | | | | | This plugin to the cherry-pick bot monitors for change-merged events and for changes which include the "Fixes: " or "Task-Number: " keyword. The plugin will tag the issue with the merged SHA in both cases. If the Fixes: keyword is used, the plugin will then attempt to determine a suitable fix version. It will also close the jira ticket if ticket has not been reopened by a user after the bot has previously closed it once. Fixes: QTQAINFRA-5145 Fixes: QTQAINFRA-5478 Change-Id: Icdba6dc421d4353b459539b5ff68274229979b87 Reviewed-by: Daniel Smith <Daniel.Smith@qt.io>
* Support acting on single Qt modules in api-review-genEdward Welbourne2023-07-101-6/+20
| | | | | | | | | | Previously it scanned all Qt modules of the git module; that remains the default. You can now use the --module (or -m) option to specify which Qt modules you want to scan, within the git module. Task-number: QTQAINFRA-4763 Change-Id: I79eda918cbd4274f75f866dfc3d50dafb504c573 Reviewed-by: Daniel Smith <Daniel.Smith@qt.io>