summaryrefslogtreecommitdiff
Commit message (Collapse)AuthorAgeFilesLines
* Merge "docs: update console streaming docs"6.3.0Zuul2022-09-033-28/+89
|\
| * docs: update console streaming docsIan Wienand2022-09-013-28/+89
| | | | | | | | | | | | | | | | Update the developer Ansible docs to give some more details on how the zuul_console daemon streaming happens. In a couple of places where it is mentioned, rework things and point them at this explaination. Change-Id: I5bfb61323bf3219168d4d014cbb9703eed230e71
* | Merge "Do not use _display outside the main thread in zuul_stream"Zuul2022-09-012-18/+20
|\ \
| * | Do not use _display outside the main thread in zuul_streamJames E. Blair2022-08-312-18/+20
| |/ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | With the defaulh "linear" strategy (and likely others), Ansible will send the on_task_start callback, and then fork a worker process to execute that task. Since we spawn a thread in the on_task_start callback, we can end up emitting a log message in this method while Ansible is forking. If a forked process inherits a Python file object (i.e., stdout) that is locked by a thread that doesn't exist in the fork (i.e., this one), it can deadlock when trying to flush the file object. To minimize the chances of that happening, we should avoid using _display outside the main thread. The Python logging module is supposed to use internal locks which are automatically aqcuired and released across a fork. Assuming this is (still) true and functioning correctly, we should be okay to issue our Python logging module calls at any time. If there is a fault in this system, however, it could have a potential to cause a similar problem. If we can convince the Ansible maintainers to lock _display across forks, we may be able to revert this change in the future. Change-Id: Ifc6b835c151539e6209284728ccad467bef8be6f
* | Merge "Add config-error reporter and report config errors to DB"Zuul2022-08-319-10/+129
|\ \ | |/ |/|
| * Add config-error reporter and report config errors to DBJames E. Blair2022-08-229-10/+129
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This adds a config-error pipeline reporter configuration option and now also reports config errors and merge conflicts to the database as buildset failures. The driving use case is that if periodic pipelines encounter config errors (such as being unable to freeze a job graph), they might send email if configured to send email on merge conflicts, but otherwise their results are not reported to the database. To make this more visible, first we need Zuul pipelines to report buildset ends to the database in more cases -- currently we typically only report a buildset end if there are jobs (and so a buildset start), or in some other special cases. This change adds config errors and merge conflicts to the set of cases where we report a buildset end. Because of some shortcuts previously taken, that would end up reporting a merge conflict message to the database instead of the actual error message. To resolve this, we add a new config-error reporter action and adjust the config error reporter handling path to use it instead of the merge-conflicts action. Tests of this as well as the merge-conflicts code path are added. Finally, a small debug aid is added to the GerritReporter so that we can easily see in the logs which reporter action was used. Change-Id: I805c26a88675bf15ae9d0d6c8999b178185e4f1f
* | Merge "Add detail to "depends on a change that failed to merge""Zuul2022-08-306-65/+136
|\ \
| * | Add detail to "depends on a change that failed to merge"James E. Blair2022-08-116-65/+136
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | The report message "This change depends on a change that failed to merge" (and a similar change for circular dependency bundles) is famously vague. To help users identify the actual problem, include URLs for which change(s) caused the problem so that users may more easily resolve the issue. Change-Id: Id8b9f8cf2c108703e9209e30bdc9a3933f074652
* | | Merge "Make the day-of-week difference from cron a warning"Zuul2022-08-301-2/+5
|\ \ \
| * | | Make the day-of-week difference from cron a warningTony Breeds2022-08-261-2/+5
| | | | | | | | | | | | | | | | | | | | | | | | Increase the visibility of the warning. Change-Id: I9e21c546e98020e5f6d0ada15bce420dc7e82117
* | | | Merge "web: fix package task results in console"Zuul2022-08-301-0/+13
|\ \ \ \ | |/ / / |/| | |
| * | | web: fix package task results in consoleIan Wienand2022-08-261-0/+13
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | As noted inline, the package: task seems unique in sending back an array of strings. This completely messes up the output currently, splitting up every letter of the result into a separate item. This quick hack just reformats the list of strings into something that comes out correctly. Change-Id: I8a7e8172f784fc69aa0abb2e6787c63c33d3f802
* | | | Update the timer docs regarding weekday syntaxTony Breeds2022-08-261-3/+11
|/ / / | | | | | | | | | | | | | | | | | | | | | | | | | | | The current timer docs say that the configuration is cron-like, which s true but apscheduler differs from cron in that '5' in the Day of the week slot is actually Sunday, rather than the expectation from cron. Add a few more words to make that more obvious Change-Id: Ib81a54f1e2d59ed6e4eb95681172c5ea14c106fc
* | | Merge "Set remote URL after config was updated"Zuul2022-08-241-5/+5
|\ \ \
| * | | Set remote URL after config was updatedSimon Westphahl2022-08-181-5/+5
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | To avoid issues with outdated Github access tokens in the Git config we only update the remote URL on the repo object after the config update was successful. This also adds a missing repo lock when building the repo state. Change-Id: I8e1b5b26f03cb75727d2b2e3c9310214a3eac447
* | | | Merge "zuul-stream: validate on per node basis"Zuul2022-08-242-20/+13
|\ \ \ \
| * | | | zuul-stream: validate on per node basisIan Wienand2022-08-182-20/+13
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This is a small refactor to check the output of each node separately. This should have no effect, but makes it easier to add more testing in a follow-on change. Change-Id: Ic5d490c54da968b23fed068253f5be0249ea953a
* | | | | Merge "Fix links for jobs with special characters"Zuul2022-08-234-1/+10
|\ \ \ \ \
| * | | | | Fix links for jobs with special charactersAlbin Vass2022-08-234-1/+10
| | | | | | | | | | | | | | | | | | | | | | | | Change-Id: I12e8a056a2e5cd1bb18c1f24ecd7db55405f0a8c
* | | | | | Run docker-compose up test setup script with envSimon Westphahl2022-08-231-1/+5
| |_|_|_|/ |/| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | When not using a ROOTCMD when running the test-setup-docker.sh the script will fail with the following error message: ++ id -u + USER_ID=1000 docker-compose up -d ./test-setup-docker.sh: line 50: USER_ID=1000: command not found Due to Bash's simple command expansion[0] variable assignments will be interpreted as the command when no ROOTCMD is given. To work around this we use default ROOTCMD to the `env` command. [0]: https://www.gnu.org/savannah-checkouts/gnu/bash/manual/bash.html#Simple-Command-Expansion Change-Id: Id696069a4eec2b2c2513ac449098b0ef73dc3906
* | | | | Merge "setup: Replace dash-separated config"Zuul2022-08-221-4/+4
|\ \ \ \ \ | |/ / / / |/| | | |
| * | | | setup: Replace dash-separated configStephen Finucane2022-08-191-4/+4
| |/ / / | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Resolve the following warnings: UserWarning: Usage of dash-separated 'description-file' will not be supported in future versions. Please use the underscore name 'description_file' instead Change-Id: Ibd13b66a1283714c2ceaecdfc0e1de7a5338df5f Signed-off-by: Stephen Finucane <stephenfin@redhat.com>
* | | | Merge "Reduce redundant Gerrit queries"Zuul2022-08-194-7/+83
|\ \ \ \ | |/ / / |/| | |
| * | | Reduce redundant Gerrit queriesJames E. Blair2022-08-194-7/+83
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Sometimes Gerrit events may arrive in batches (for example, an automated process modifies several related changes nearly simultaneously). Because of our inbuilt delay (10 seconds by default), it's possible that in these cases, many or all of the updates represented by these events will have settled on the Gerrit server before we even start processing the first event. In these cases, we don't need to query the same changes multiple times. Take for example a stack of 10 changes. Someone approves all 10 simultaneously. That would produce (at least) 10 events for Zuul to process. Each event would cause Zuul to query all 10 changes in the series (since they are related). That's 100 change queries (and each change query requires 2 or 3 HTTP queries). But if we know that all the event arrived before our first set of change queries, we can reduce that set of 100 queries to 10 by suppressing any queries after the first. This change generates a logical timestamp (ltime) immediately before querying Gerrit for a change, and stores that ltime in the change cache. Whenever an event arrives for processing with an ltime later than the query ltime, we assume the change is already up to date with that event and do not perform another query. Change-Id: Ib1b9245cc84ab3f5a0624697f4e3fc73bc8e03bd
* | | | Merge "Update unit test container setup and instructions"Zuul2022-08-173-34/+30
|\ \ \ \
| * | | | Update unit test container setup and instructionsJeremy Stanley2022-08-053-34/+30
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Update the TESTING.rst file to reflect that just installing and starting zookeeperd is no longer sufficient now that we require TLS and auth for the connection, as well as running database servers. Suggest the container-based setup script instead. Also improve that script to allow it to be invoked as a normal user, with root command escalation tool choice (e.g. "sudo") supplied through a ROOTCMD environment variable, so that things created inside the git worktree like the CA don't end up root-owned. Related, the tox-docker plugin previously suggested in the document is no longer a viable option for the same reasons, so clean up the plumbing for it in tox.ini as well. Change-Id: Iac32799425a5bd4b1bdbf56f34a2310241ac4499
* | | | | Merge "Add zuul change queue"Zuul2022-08-171-0/+4
|\ \ \ \ \
| * | | | | Add zuul change queueJames E. Blair2022-08-161-0/+4
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | So that we can add zuul-client to it. Change-Id: Ia99d135fc6016895fe5f85ea93efeccc88f85a80
* | | | | | Merge "Web: fix tabs on project page"Zuul2022-08-174-144/+139
|\ \ \ \ \ \
| * | | | | | Web: fix tabs on project pageJames E. Blair2022-08-044-144/+139
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This corrects the tab titles on the project page which currently typically just say "master", "master", "master", ... because they all display the default branch of the project stanza. Instead, use the branch of the source context for the project stanza, or, if the project stanza is not from the current project, then use the name of its project. This causes them to appear like: "openstack/project-config", "master", "stable/diablo", ... Also, update the entire Project page component hierarchy to use hooks instead of classes. Update the styling on the H2 element so that we can have the refresh icon share the same vertical space (so that we don't have large amounts of wasted vertical space at the top of each page. Change-Id: I863e0eb4a7f20ee6363e596e61cc49b2cbc22953
* | | | | | | Merge "Web: disable scroll wheel zoom in job graph"Zuul2022-08-171-0/+4
|\ \ \ \ \ \ \ | |/ / / / / /
| * | | | | | Web: disable scroll wheel zoom in job graphJames E. Blair2022-08-041-0/+4
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | When scrolling the project page with a job graph rendered, users using scroll wheels (or similar input devices) may be surprised that once their pointer moves over the job graph, it begin zooming instead of the page scrolling. Disable zooming the job graph with the mouse wheel so that the behavior remains consistent. Zooming is still possible with click/shift-click. Change-Id: Ic3884f1317cb7799e4e387aa51c81c080e028d10
* | | | | | | Merge "zuul-stream : don't write out logfile for tasks in loops"Zuul2022-08-174-14/+44
|\ \ \ \ \ \ \
| * | | | | | | zuul-stream : don't write out logfile for tasks in loopsIan Wienand2022-07-234-14/+44
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | In zuul_stream.py:v2_playbook_on_task_start() it checks for "task.loop" and exits if the task is part of a loop. However the library/command.py override still writes out the console log despite it never being read. To avoid leaving this file around, mark a sentinel uuid in the action plugin if the command is part of a loop. In that case, for simplicity we just write to /dev/null -- that way no other assumptions in the library/command.py have to change; it just doesn't leave a file on disk. This is currently difficult to test as the infrastructure zuul_console leaves /tmp/console-* files and we do not know what comes from that, or testing. After this and the related change I823156dc2bcae91bd6d9770bd1520aa55ad875b4 are deployed to the infrastructure executors, we can make a simple and complete test for the future by just ensuring no /tmp/console-* files are left behind afer testing. I have tested this locally and do not see files from loops, which I was before this change. Change-Id: I4f4660c3c0b0f170561c14940cc159dc43eadc79
* | | | | | | | Merge "Use internal links in job graph display"Zuul2022-08-161-5/+15
|\ \ \ \ \ \ \ \ | | |/ / / / / / | |/| | | | | |
| * | | | | | | Use internal links in job graph displayJames E. Blair2022-08-021-5/+15
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Since we're using the graphviz library to render an svg, we can't just pass in a react router Link object for the node links we create for jobs. But we can manipulate the DOM after the SVG is produced and add onClick handlers that do the same thing. This avoids refreshing the page/app when clicking on links in the graph. Change-Id: Ie173e3d2e31efd47dbe4a44fda8b743250729339
* | | | | | | | Merge "Add freeze job to web UI"Zuul2022-08-1610-7/+634
|\ \ \ \ \ \ \ \ | |/ / / / / / /
| * | | | | | | Add freeze job to web UIJames E. Blair2022-08-0210-7/+634
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This adds a freeze-job page to the web UI. It can be navigated to by clicking a job in a job graph. Change-Id: Ibd07449314a9454295bc97f8d654347f09dc504c
* | | | | | | | Merge "Add job graph support to web UI"Zuul2022-08-1611-7/+571
|\ \ \ \ \ \ \ \ | |/ / / / / / /
| * | | | | | | Add job graph support to web UIJames E. Blair2022-08-0211-7/+571
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This adds the ability to display the frozen job graph for a project. It adds a toolbar to the Project page that allows a user to enter a pipeline and branch. Hit the button and it will use the API to freeze the job graph and then display it with graphviz (there is a webassembly build of the graphviz libray). Change-Id: Ieb5899a63a4c85eb5d445fa69dd1e85ddc11575d
* | | | | | | | Merge "Add test for zuul-client freeze-job"Zuul2022-08-161-0/+28
|\ \ \ \ \ \ \ \ | |/ / / / / / /
| * | | | | | | Add test for zuul-client freeze-jobJames E. Blair2022-08-021-0/+28
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Depends-On: https://review.opendev.org/850110 Change-Id: Ifb3cdd27a3114cf0c0538eebefcb9b6fae948fee
* | | | | | | | Merge "Add tests for zuul-client job-graph"Zuul2022-08-161-0/+61
|\ \ \ \ \ \ \ \ | |/ / / / / / /
| * | | | | | | Add tests for zuul-client job-graphJames E. Blair2022-08-021-0/+61
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Depends-On: https://review.opendev.org/850108 Change-Id: Ieb58888d06c910ad6529594999c09bd4feecd48d
* | | | | | | | Merge "Update keycloak demo, documentation for keycloak 18"Zuul2022-08-165-2204/+1927
|\ \ \ \ \ \ \ \ | |_|_|/ / / / / |/| | | | | | |
| * | | | | | | Update keycloak demo, documentation for keycloak 18Matthieu Huin2022-07-225-2204/+1927
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Make the compose demo work for keycloak's latest major version at this time. Document unsupported key signing algorithm type, and how to disable it in keycloak. Change-Id: I102c0fe7abd25b8a98e9c19e6f9ce1f2e7f3f502
* | | | | | | | Merge "Fix zoned executor metric when unzoned is allowed"Zuul2022-08-153-2/+18
|\ \ \ \ \ \ \ \ | |_|_|_|_|_|/ / |/| | | | | | |
| * | | | | | | Fix zoned executor metric when unzoned is allowedSimon Westphahl2022-08-113-2/+18
| | |_|_|_|_|/ | |/| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | An executor can have a zone configured and at the same time allow unzoned jobs. In this case the executor was not counted for the zoned executor metric (online/accepting). Change-Id: Ib39947e3403d828b595cf2479e64789e049e63cc
* | | | | | | Merge "zuul_console: do not use f-strings"Zuul2022-08-151-1/+2
|\ \ \ \ \ \ \
| * | | | | | | zuul_console: do not use f-stringsIan Wienand2022-08-151-1/+2
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | In Ief366c092e05fb88351782f6d9cd280bfae96237 I missed that this runs in the context of the remote node; meaning that it must support all the Python versions that might run there. f-strings are not 3.5 compatible. I'm thinking about how to lint this better (a syntax check run?) Change-Id: Ia4133b061800791196cd631f2e6836cb77347664