CHANGES
=======

14.0.0
------

* Fix web component documentation
* Pin setuptools<82 in nox docs target
* Add assertions about no\_log and registered results
* Fix src\_dir variables
* Add tenant\_web\_root to MQTT payload
* Add build.execute\_time to SQL database and REST API
* Add include-projects and exclude-projects
* Add upload retry to web ui
* Add an API endpoint for upload retries
* Ensure tenants are up to date before cleaning blob store
* Correct line mapping
* Fix hmac warnings in tests
* Fix github JWT generation
* Add zuul driver NIZ documentation
* Remove launcher automatic image build
* Optimize branch cache updates on new branches
* Add job type to job page
* Update change status page to new item panel
* Correct github review state docs
* Add reporter jobs
* Check TPCs when checking if tenant is up to date
* Use "build nodes" consistently in documentation
* Remove duplicate words
* Switch quickstart to zuul-launcher
* Remove orphan tags from docs
* Update driver index doc page
* Fix image upload endpoint metric
* Add log for forwarding event
* Fix test\_aws\_node\_lifecycle\_fleet
* Add authz rules and semaphore validation to tenant-conf-check
* Add PUBLIC\_URL to vite config
* Fix build output on light background
* Update re-ansi
* Add some more zuul-web url testing
* Fix js web app base URL
* Fix web static include
* Improve test\_ref\_updated\_reconfig
* Only update dependencies for open Gerrit changes
* Log event id when updating project branches
* Use Vite, upgrade React and others
* Satisfy updated eslint
* Fix init job test races
* Remove launcher hostname config
* Avoid deleting in-use AWS launch templates
* Add web RBAC spec
* Update build artifacts to PF4 TreeView
* Update build logs to PF4 TreeView
* Switch jobs page to PF4 TreeView
* Fix launcher tests after urllib3 upgrade
* Re-elect James Blair as project lead

13.1.1
------

* Add missing release note
* Update registry credentials

13.1.0
------

* Fix path handling in StaticHandler
* AWS Driver: Disable instance auto recovery
* Store QueueItem UUID in database and extend REST API filters
* Add launcher zuul.conf docs
* Address all instances of "nodepool" in docs
* Add include-provider-config option
* Move single-tenant test launcher config
* Add narrative documentation about NIZ
* Add provider driver intro docs
* Add NIZ provider attribute documentation
* Add pre/post playbooks context to inventory
* AWS: make snapshot/image import/copy more resumable
* Fix test\_override\_init\_job
* Don't retry change query on max. recursion error
* Fix promotion of changes behind and add test coverage
* Add documentation skeleton for static driver
* Implement init jobs
* Add Azure driver
* Fix some documented nox invocation examples
* Checkout playbook branch for roles running on tag
* Add spec for branch-assigned queues
* Allow running individual Zuul remote tests
* Fix missing streaming logs from loop include\_tasks
* Yarn: disable scripts
* Improve gerrit replication tests
* Update niz admin api endpoints
* Fix gerrit event delay for single event
* Add spec for reporter jobs
* Add system events viewer to web ui
* Add system-events web endpoint
* Update openapi rest docs
* Prune system event database entries
* Record reconfiguration events to database
* Add system event table to DB
* Vendor openstacksdk delete\_unattached\_floating\_ips
* Increase fake openstack fidelity
* Filter projects for depending changes query
* Add a spec for initializer jobs
* Pin moto test dependency to <5.1.17
* GitHub: Add "queued" check status
* Add replication\_delay to Gerrit driver
* Launcher; use waitForSync as a fallback for older ZK
* Make ZuulTreeCache.waitForSync more robust
* Add min\_request\_version to assignUnassignedNode method
* Ensure requests referred to in assignments are up to date
* Add openshift support to k8s driver
* Add k8s driver
* Revert "Make Gerrit Connection Replication Aware"
* Switch to using assertEqual() in tests
* Add support for zk watch zxids
* Enable IPv6 endpoint when IMDS support is enabled
* Delete unlocked used nodes
* Fix OIDC secret config errors in zuul-web
* Wake up launcher main event loop every 60s
* Allow disabling ZKObject loading error logs
* Retain slot attribute when updating subnodes
* Don't log request token in log streamer
* Increase unit test timeout
* Pin graphql-core in tests to < 3.2.7
* Launcher: honor provider when selecting ready nodes
* Launcher: align listResources and listInstances
* Switch quickstart to docker compose v2
* Fix race in quickstart test
* Fix image upload state by endpoint metric
* Force provider subnode class registration
* Fix image creation race
* Fix missing update in node reassignment
* Fix BadVersionError in static tests
* Re-enable upgrade job
* Pin google-api-core dependency to <2.28.0
* Replace slash when normalizing metrics in launcher
* Fix job-output.json fallback content
* Launcher: fix passing username and other attrs
* Prevent error in stats to stop pipeline processing
* Add metrics for image upload duration and state
* Annotate image upload logs with iba/upload uuid

13.0.1
------

* Fix ansible command plugin when using no\_log
* Update no\_log in win\_command and friends
* Reset the success flag before each run playbook
* Implement support for min-retention-time
* Add label aliases for static nodes
* Fix image upload validation race conditions
* Add support for 'branch' in GitLab pipeline configuration
* Add image export/import commands
* Add tenant ssh keys
* Add static driver
* Fix test\_launcher\_image\_expire\_failed\_upload
* Further fix to node assignment upgrade
* SQLReporter: Log error of artifact name too long
* Fix providernode assignment upgrade
* Record missing info in job-output.json
* Update gerrit change\_url format
* Launcher: clean tempdir at start
* [minor] Correct GitLab driver doc
* Use global S3 endpoint to get bucket location
* Fix TestMinReadyTenantVariant
* Clean up tox remnants
* Pin PostgreSQL in Docker test setup to v17
* Update launcher schema print tool
* Use a subnode for request assignment
* Assign unassigned building nodes to requests
* Launcher: handle reused node failure
* Launcher: add max-age
* Always associate nodes with providers
* Handle launch failures with subnodes
* web: Upgrade re-ansi dependency to latest 0.7.4
* Speed up git cherry-pick operations on large changes
* Allow section inheritance between projects
* Disallow cheroot 11.0.0
* Fix provider "flavors" check
* Correct provider default inheritance
* Fix snapshot state machine failover
* Do not set is\_template for regex project stanzas
* Add debug logging for openstack network lookups
* Suppress "endpoint other quota" log message
* Launcher: fix endpoint\_score
* Allow base sections with no connection
* Don't delete uploads w/o active endpoint
* Launcher: don't use the main node with slots
* Add reuse label option to launcher
* Add subnode support to launcher
* Allow max-ready-age definition in label defaults
* Pull base python images from quay.io/opendevorg
* Continue request/node processing on exception
* Set event state of nodeless requests to completed
* Fix provider quota calculation
* Add image validation admin method
* Use yarn list instead of yarn install --verbose
* Drop -d option for yarn install
* Add --frozen-lockfile to yarn install invocations
* Run yarn install with --verbose
* Add "final" attribute to image/flavor/label objects

13.0.0
------

* Fix provider node tag formatting
* Fix provider selection for image validation
* Allow dynamic addition of images, labels, and flavors
* Correctly initialize launcher connection filter
* Fix scheduler openstack memory leak
* Protect against event queue overrun
* Add snapshot-expiration setting
* Implement AWS snapshot import
* Add executor support for snapshots
* Replace zuul.node variable with zuul\_node
* Allow test override of launcher node ip
* Add snapshot-timeout label attribute
* Implement snapshot support in launcher
* Add ProviderNodeSnapshot class
* AWS: add kms-key-id for label
* Delay timer election until scheduler primed
* Remove model backwards compat
* Update implicit default in sphinx config
* Shutdown log stream socket instead of close
* Add AsList to openstack driver
* AWS: Remove security-group-id
* AWS: Add security-group-ids parameter
* Add AsList to AWS driver
* Stub provider documentation
* Move label tags to common\_label
* Move zuul image tags definition to base provider
* Remove backwards compatibility for some provider settings
* Launcher: handle resuming accepting a request
* Launcher: fix loop error in ready node processing
* Remove some launcher log messages
* Adapt Postgres migration test for CVE-2025-8714
* Fix connection filter lookups in updateTenantProviders
* Only log quota messages when acted upon
* Replace getQuotaUsed with cache
* Launcher: retry loading providers on failure
* Launcher: improve missing artifact log message
* Ensure node request event is sent after crash
* Always send nodes provisioned event before unlock
* Fix race with node provisioning
* Sort nodes by request time
* Include requested nodes in quota percentage calculation
* Launcher: add more debug messages to quota percentage calc
* Launcher: avoid duplicate delete jobs
* Add request\_id to nodes REST endpoint
* Launcher: improve overfull allocation with incomplete quota info
* Run build-js directly from PBR setup hook
* Re-enable nox-upgrade job
* Fix reference to internal pbr function
* Update ZooKeeper autopurge recommendation
* Avoid relative priority updates on completed requests
* Add image, flavor, label defaults section
* Fix race in web stats
* github-reference-pipeline: Fix error in state:
* AWS: implement image copy
* Allow control of upload methods
* Add uploadplanner
* Fix test\_nonexistent\_lock and test\_efficient\_removal
* Fix test\_gerrit\_cherry\_pick\_web\_with\_update\_queue
* Further fix test\_launcher\_image\_expire\_failed\_upload
* Limit upload retries to 3 attempts
* Correct example connection names in requirements docs
* web: Fix filtering on PipelineDetails page
* Implement reject filter in GitLab driver
* Fix test\_launcher\_image\_expire\_failed\_upload
* Fix test\_max\_ready\_age
* Add unit tests (and fixes) for selectProviders
* Iterate static dict values in estimateDataSize
* Openstack: don't log tracebacks for quota exceptions
* Launcher: handle delete state machine errors
* Add additional debugging to provider selection
* Launcher: ignore failed nodes for request locality
* Web: handle null provider name on nodes
* Reduce endpoint quota limit queries
* Replace Ansible 8 with 11
* Fix test race in launcher test\_jobs\_executed
* Improve handling of unassigned ready nodes
* Remove python 2.7 stream testing
* Implement zuul-launcher connection filter
* Fix race in test\_nodeset\_request\_cleanup and test\_quota\_failure
* Update drivers to use QuotaCache
* Plumb zk\_client through to endpoints
* Add QuotaCache class
* Launcher: fix error when retrying multinode request
* Make unique image uploads provider independent
* FIx test\_aws\_multi\_image
* Disable leaked nodeset request cleanup in some tests
* Add additional node tag attributes
* Speed up launcher tests and fix races
* Launcher: implement preferred provider
* Launcher: skip non-pending uploads
* Require multinode requests served from same provider
* Avoid duplicate launcher upload jobs
* Handle another form of openstack quota error message
* Export spans for provider node create/delete phase
* Drop nodescan worker from node when complete
* Delete nodeset request lock path
* Add provider node lifetime span
* Add nodeset request processing launcher span
* End nodeset request span
* Add use-nodepool tenant option
* Replace rather than restart failed uploads
* Verify downloaded image checksum
* Consider requested nodes when accepting requests
* Don't count paused provider time against launch-timeout
* Add new cyan color for building nodes
* Improve openstack quota error handling
* Speed up fileschanges operation with large changes
* Implement launch-timeout
* Fix double assignment of ready nodes
* Fix pre-timeout calculation
* Further fixes to multi-tenant provider locality
* Keep orphaned image uploads
* Always add image-build-name to vars when set
* Fix buildset page for dequeued buildsets
* Add information to image pages
* Add information to nodes and requests web pages
* Add node icons to nodeset requests page
* Minor launcher log improvements
* Fix provider locality on failure
* Fix unmanaged quota detection
* Add monitoring server to zuul-launcher
* Support Prometheus to listen on IPv6 addresses
* Disable custom win\_ modules when console disabled
* Fix windows streaming with FQCN
* Fix win\_shell with stdin
* Store quota on initial node creation
* Let selectProviders dictate use of ready nodes
* Gitlab avoid MR desc to None preventing MR to be handled
* Add nodeset\_requests state gauge
* Add per-provider resource usage stats to launcher
* Expose launcher locks thorugh the web api
* Add state machine test to base cloud test and openstack
* Launcher: fix restoring openstack create state machine
* Launcher: fix restoring openstack delete state machine
* Launcher: don't update upload timestamp
* Launcher: improve upload logs
* Launcher: log when upload complete
* Filter niz nodes by tenant in rest api
* Launcher: remove tenant check in getProviderForNode
* Include provider in ProviderNode repr
* Launcher: handle API errors in request assignment
* Add zuul-client tests for nodes and requests
* Wake launcher when component registry changes
* Refresh launcher objects after locking
* Declare base images as standalone/overridable stages
* Update upload before releasing lock
* Add NIZ autohold support
* Use nodeset alternatives for unreachable hosts

12.1.0
------

* Cleanup noop nodeset requests
* Cleanup leaked nodeset requests
* Add "debug" flag to triggers
* Do not update gerrit change cache with old data
* Launcher: consider provider capacity before assigning nodes
* Fix wrong \`secret name\` in 'sub' claim of OIDC token
* Launcher: defer requests with insufficient quota
* Allow clean launcher shutdown w/o exceptions
* Add options to manage nodes/requests
* Add more context to niz quota log messages
* Include more info in nodes/requests lists
* Fix zero division error in launcher quota
* zuul-web: Fix Last-Modified headers
* Include image build name in zuul vars
* Allow boolean claim rules
* Use formatted timestamp for nodeset state\_time in API
* Add nodeset requests to web UI
* Add nodeset-requests web endpoint
* Add test for image upload cleanup
* Make message on buildset result page expandable
* Add image/upload state to web endpoint
* Don't ask to delete an image without an external id
* Allow deleting old failed image uploads
* Fix missing review dismissal due to same timestamp
* Fix AtributeError when canceling merge requests
* Fix typos in documentation
* Fix image build event race and add more image api tests
* AWS: only import from same s3 region
* Add zuul-client pause test
* Add option to pause tenant event processing
* Niz: fix inheriting image attributes
* Allow enqueing multiple items for different images
* Fix race in OIDC cache init
* Fix quickstart example/test for Gerrit 3.12
* Fix gerrit replication\_timeout docs
* Remove completed/inactive specs
* Improve zuul\_console\_disabled testing
* Ensure job projects are only considered once
* Use non-validated images for image validation jobs
* Report cherrypy stats/metrics at least every 60 seconds
* mqttreporter: attach gerrit topic to the MQTT mesasge
* Add stdout/err to streaming log if console disabled
* Include required image formats in zuul vars
* Allow enqueing duplicate changes if they are for different images
* Add newrev to timer-triggered items
* Use rendezvous elections for scheduler event processing
* Update documentation for Zuul as OIDC ID Provider
* Implement command for deleting OIDC signing keys
* Prepare oidc token for playbook execution in executor
* Support downloading images from s3
* Add AWS direct image import
* Add RendezvousElection
* Fix 'is\_locked' flag for items in ZKObject cache
* Fix config errors on always-dynamic branches
* Allow for overriding python\_path in the testsuite
* Ignore lock errors when resetting image uploads
* Don't include URL params in image filename
* Handle s3 signed urls in launcher
* Implement zuul-web OIDC endpoints
* Delete nodeset requests for canceled jobs
* Fix multi-provider cleanup
* QueueItem: Assign event id when logging events
* Fix issue with config override validators
* web: Pass auth header to log endpoint if serving from the same origin
* Make '--tenant' optional in create-auth-token command
* Manage OIDC signing key rotation
* Use ZuulTreeCache for OIDC signing keys
* Improve job result colors on status page
* Document process sensor metrics
* Implement keystore functions for OIDC RS256
* Add periodic stats to launcher
* Adjust niz private\_ipv4 behavior to match Nodepool
* Use private or public ip in nox-remote job
* Ignore file matches on changes to include-vars and playbooks
* Allow a list of subnet IDs for AWS label

12.0.0
------

* Fix exception handling in Gerrit event connector
* Gerrit: retry fetching refs and HEAD
* Fix issue with parse context w/o scheduler
* Implement pre-timeout for pre-run playbooks
* Downgrade to nodejs 22 tooling
* Omit succssful jobs on very long gerrit reports
* Remove deprecated status\_url config and format
* Launcher: add image import-timeout
* Avoid 500 on /project with no project configs
* Add niz cleanup
* Add support for configuring executor zones
* Quickstart: add more explanatory text about attachment
* Make tutorial bootstrapping paragraph more clear
* Add general and config cache cleanup tests
* Wake launcher when node is (un-)locked
* Fix use of unparsed branch cache in config cleanup
* zuul-web: fix traceback in "job" endpoint if a job doesn't exist
* Fix default ok traceback for change list refresh
* Allow boto3 session to configure itself
* Make Gerrit Connection Replication Aware
* Slow processing of failed nodescan connections
* Capitalize AWS image filter key/value arguments
* Add runtime graphs to web
* Store resources of pod type nodes in host inventory
* Improve job variant descriptions
* Fix job display in web ui
* Annotate "reporting start|enqueue|dequeue" log messages with event UUID
* Use contextlib.nullcontext across the board
* Always clear wake event of TPE event connectors
* Fix change cache test races more
* Make test\_zuul\_query\_ltime more deterministic
* Fix race in test\_ref\_updated\_reconfig
* Remove unecessary code from manager.\_postConfig
* Reuse configuration objects
* Add ConfigObjectCache
* Store object errors separately
* Add error list to error accumulator
* Refactor unprotected branch tests
* Remove tenant from configloader parse context
* Move allowed triggers/reporter checks to layout
* Move formatStatusJSON to manager
* Remove tenant attribute from pipeline
* Remove layout.pipelines
* Remove the manager attribute from pipelines
* Move queue-related methods to PipelineState
* Move some manager attributes to pipeline
* Move some pipeline attributes to manager
* Remove trusted flag from source context
* Determine job branch matchers when freezing
* Set playbook trusted flag when freezing
* Resolve role references when freezing
* Move base job check to layout
* Move post\_review setting to job freezing
* Move ignore\_allowed\_projects to job freeze
* Check allowed-projects in layout
* Resolve include-vars projects in layout
* Resolve required-projects in layout
* Check for job timeouts in layout
* Check for nodeset label perms in layout
* Stop copying ProjectConfig objects when adding to layout
* Remove tenant references from project parsing
* Use eatmydata with zookeeper in tests
* Fix change cache test races
* Add REPL to zuul-launcher
* Log reasons for missing image builds
* Add Windows live log streaming
* Switch nox job default back to Jammy
* Add "raw" module output to job-output.txt
* zuul\_stream: add FQCN for windows command and shell
* Make test\_nodepool\_relative\_priority more deterministic
* Stop executor api instances in unittests
* Fix race in queue tests
* Fix flaky test\_cache\_use
* Add queue name to MQTT payload
* Fix finger gateway testing
* Ignore job requests not found for lost requests
* Fix sql query timeout
* web: Upgrade nodejs to latest v23
* Avoid reconfig for quick create/delete of branches
* web: Use a select filter for pipelines and queues on status page
* Add logging of kubectl process group id to executor
* Move zuul-nox-py311-multi-scheduler to the experimental pipeline
* Try to use mariadb in unittest again
* Make MySQL test fixture more robust
* Add a process limit governor to the executor
* Use mysql query hint regardless of project
* Support mariadb statement timeouts
* Fix promote event handling for github changes
* Run a deduplicated job if it matches any change
* Fix pause event verification test race
* Fix null dereference in gitlab
* Retry moto describe\_instance exceptions
* Only consider live items on dequeue event
* Add launcher relative priority tests
* Implement launcher relative priority handling
* Allow creating (sharded) ZKObjects w/o makepath
* Launcher: implement resource-limits
* OpenStack: remove key-name comments
* OpenStack: remove some unimplemented functionality
* OpenStack: move schema attributes to match aws
* Openstack: add AZ support
* AWS: Remove block device mapping from template
* Revert "Pin boto and friends"
* AWS: add image-format option
* AWS: add iam-instance-profile support
* AWS: Add userdata support
* AWS: Add ipv6 support
* AWS: Add subnet-id
* AWS: Add imdsv2 support
* AWS: add security-group-id support
* Remove unused provider methods
* Add AZ support to AWS driver
* Add fleet support to aws driver
* Add a postConfig hook to endpoints
* Add AWS spot support
* Enable node request fallback with zuul-launcher
* Process gerrit change-merged events before ref-updated
* Add a test for Gerrit merge event order
* Use latest patchset with Gerrit cherry-pick
* Only fulfill build cancel/resume when actionable
* Don't re-create job request on cancel/resume
* Fix race in launcher quota failure test
* Setup swap in nox jobs
* Support custom claim and print meta info in zuul-admin create-auth-token
* Allow ConnectionClosedError in unit test tracebacks
* autohold REST API: add ref filter validation
* Fix unmanaged quota check
* Fix some quota log messages

11.3.0
------

* Fix providers api endpoint when no images
* Re-enable upgrade job
* Pin confluent-kafka
* Add test for locked branch filtering on validation
* Respect replication delay in event pre-processing
* Retry lock cleanup
* Add provider selection tests
* Delete node records as soon as practical
* Fix cached quota calculation
* Only notify pipelines once about semaphore release
* Process semaphore release as tenant events
* Store failed provider node data on request
* Revert "Pin googleapis-common-protos"
* Pin grpcio to 1.69.0
* Add commentable\_files variable to GerritChange
* gerritdriver: Fail early on gerrit 404 results
* Remove session listener when stopping tree cache
* Improve nodescan worker cleanup
* Fix race in test\_fail\_fast\_no\_cancel\_completed
* Add quota support to zuul-launcher
* sqlreporter: ensure build end data is stored even if log URL is too long
* Fix unit test fd leak
* Filter excluded project branches after fetching
* Add a synchronous TreeCache option
* Add treecache unit test
* Make connection event iteration more efficient
* Pass event id when getting topic dependencies
* Launcher: delete image files in case of error
* Undo pin of openstacksdk before 0.99
* Copy query cache from winning network
* Change network future collision resolution
* Use change networks in gerrit driver queries
* Make Gerrit event pre-processor multi-threaded
* Fix busy loop in zuul console
* Refactor to a common tpe event connector
* Fix connection check in skipped stream callback
* Remove deep copying of config
* Fix missing console messages on short tasks
* Switch quickstart Dockerfiles to opendevmirror
* Launcher: move key-name in test fixtures
* Launcher: improve nodescan testing
* Fix nested provider validation with hyphens
* Launcher: fix image decompression
* Launcher: log selected provider
* Fix node listing web API
* Use annotated logger with nodescan requests
* Remove some launcher debug log messages
* Pin googleapis-common-protos
* Fix error with empty nodeset request
* Remove root exists check in TreeCache startup
* Make executor sensor messages more useful
* Disable cache event log
* Reduce ZK lock contention in executor
* Use a TreeCache for job request queues
* Make test\_playbook nicer
* Fix issue with sparse-checkout of include-vars
* Pin boto and friends
* Launcher: continue processing nodes during nodescan
* Integrate nodescan worker into launcher
* Retry nodescan connections during the key phase
* Add ability to mark individual job attributes as final
* web: Give root element whole viewport height
* web: Add an option to sort pipelines
* Pin boto3 Ansible requirement
* Fix bulk repo state restore
* Add debug log when fetching Gerrit branches
* Incorporate tenants stats in Toolbar section
* Import nodescan framework from Nodepool
* UI: Include queue.branch in expansionKey for queues on status page
* Ignore config hash when comparing frozen jobs
* Don't cancel completed build requests
* Fix attribute name of StreamFollower
* Parallelize workspace repo restoration
* Use empty sparse checkouts in mergers
* Further reduce workspace checkouts
* Clarify retry(-limit) build status docs
* Add an option to skip workspace checkouts
* Limit command stdout/stderr to 1GiB
* Make job-list on status page more compact
* Reduce empty space on status page
* Don't invalidate zk context on stop event
* web: Fix null reference exception for cancelled builds
* Fix auth redirect problem when root url is accessed
* Fix whitelabel authz
* Add niz nodes to rest api nodes list endpoint
* Add labels and flavors to web
* Add a web UI button to build an image
* Add REST API method to trigger image build
* Allow deleting images through web UI
* Add web API image delete endpoints
* Add image/upload delete lifecycle
* Use opendevmirror for container images
* Force hard transitive dependencies to run
* Fix issue with job forcing a dependency to run
* Avoid lost events when aborting event processing
* Reduce parallelization in tests
* Remove config object freezing
* Use noble for quickstart
* Pin podman-compose to 1.2.0
* Add buttons to delete image upload
* Add images web ui
* Add provider image web ui
* Fix dict mutation in web info endpoint
* Add images web endpoint
* Add provider list web API endpoint
* Act on image build artifact unlock instead of image uploads
* Configure notify settings when reporting to gerrit
* Re-elect James Blair as project lead
* UI: Fix border radius for job-progress-bar backdrop
* Add information to start of job log
* Use FilterIcon for filter dropdown on QueueItem
* Fix test\_supercedent\_github\_circular\_deps\_closed race
* Update quickstart for latest gerrit
* Remove implicit smart reconfig during startup
* Delete LockableZKObject lock paths

11.2.0
------

* Revert "Delete blob store lock paths on unlock"
* Fix doc build errors
* Batch fake build database additions
* Batch fake build zookeeper additions
* Allow dependent jobs to force dependencies to run
* Add zstd decompression to launcher
* zuul-web UI: Fix initial show all pipelines state
* Remove unnecessary exports from status expansion actions
* Speed download of image artifacts in launcher
* Use local cache sync instead of remote
* Delete blob store lock paths on unlock
* Cleanup unused blob store lock paths
* Switch logo color in docs pages to dark blue
* Clear status expansion memory on "expand all" toggle
* Store queue expansion in redux on status page
* Store job expansion in redux on status page
* Deprecate Ansible 8
* Add a note about Zuul not handling Gerrit chagne number collisions
* Launcher: fix deleting servers
* Fix endpoint races
* Fix openstack region handling
* Re-add volume attributes to aws driver
* zuul-web: Simplify tenant list
* Increase merge retries and delays in between
* Only expire nodes when no pending layout update
* Store state time for provider nodes
* Implement re-use of ready nodes w/o request
* Implement 'max-ready-age' handling
* Add support for 'min-ready' provider nodes
* Allow waiting for tree cache ltime sync point
* Simplify stream test\_command
* Use colorblind-friendly color schema for Zuul UI
* Update Matrix IRC docs
* Check zkobject size before writing
* Fix race with topic changes
* More strictly enforce section inheritance
* Abstract common cloud driver tests
* Update node from instance
* Add test of topic dependencies with an abandoned change
* Add "expand all" to the status pipeline overview page
* Implement driver-specific default connection types
* Openstack: don't try to delete a node with no external id
* Improve error handling on deleted nodes
* Restore openstack api call timer
* Add most remaining openstack config options
* Add test for instance creation failure
* Launcher: raise\_for\_status on download
* Update include-vars to use the ref checkout on ref jobs
* Reorder filters on status page
* Improve launcher upload logging
* Provide config error information for dependency cycles
* Fix image registry initializers
* Use openstack endpoint for image format
* Fix required provider fields
* Copy provider-related config objects to dynamic layouts
* Return an UnknownConnection error from provider
* Minor updates to the README
* Don't join streaming threads when skipped before connect
* Add openstack driver
* node model: adapt to node\_properties
* Fix units for ansible max line length
* Fix handling large command output with split streams
* Add include-vars job attribute
* Handle kubectl port-foward terminations
* Fix console log stream delay on idempotent command
* Finish removing test\_image\_permissions
* Fix race in test\_state\_machines\_\*
* Fix race in blobstore put
* Remove image permissions check on config loading
* Fix leaked pipes and sockets
* Avoid launcher busy-looping due to constant wake
* Add missing AWS image configuration options
* Inherit some attributes from provider configs
* Retry node launches on failure
* Store multiple provider node launch attempts
* Test AWS ebs-direct image upload
* Add testing for AWS image import method
* Add aws snapshot image upload test
* Add some image upload debugging
* Adjust some AWS tests
* Use uploaded image id when launching nodes
* Fix area covered by dependencies cluster in graphviz graph
* Add spec for OIDC Workload Identity Federation
* Replace blockdiag graphs with graphviz graphs
* Handle create state-machine errors as node failure
* Complete preliminary provider node lifecycle
* Implement validation reporter
* Respect fail-fast setting for node failures
* Support github required conversation resolution
* Add pagination to Github graphql canmerge query
* Support docker-compose v2 in test setup script
* Fix display of retried job attempts
* Update more ZooKeeperClient timeouts in tests
* Set ZUUL\_REMOTE\_IP to private ipv4 nox-remote job
* Fix override control release note
* Add image upload framework
* Add image upload records
* Add image-build-name job attribute
* Increase zk connection timeout in tests
* Use a consistent zk timeout in tests
* Fix errors in branch visualization when filters are applied
* Use change label in filter dropdown on QueueItem
* Don't let long project names break the ProgressStepper layout
* Update queue item progress bar to PF4
* Store "Show all pipelines" state in localStorage
* Use InfoIcon for non-live items
* New animation for starting jobs
* Add filtering action to QueueItem
* Show failure reason via tooltip on progress stepper icon
* Show window size and queue length per queue on new status page
* Hide skipped jobs on new status page by default
* Show job waiting status in tooltip
* Overwrite job result label colors to match the old status page design
* Use queue.name to differentiate between different queue visualizations
* Show user-created pipeline description in Tooltip
* Hide red cross icon next to progress bar for pre-fail jobs
* Add a switch to expand all jobs in PipelineDetails
* Port "Fix web dequeue of periodic items" to new status UI
* Expand queue items to the full width of column
* Make QueueItem cards in ChangeQueue more concise
* Add ability to expand pipeline contents in overview
* Add filtering support for pipeline status views
* Implement auto-reload on new status page
* Implement tile scrubbing in status overview
* Show last reconfiguration time on status page
* Hide empty pipelines and queues on status page
* Show queue lengths and fetching state on status page
* Implement admin actions (promote, dequeue) in new QueueItem component
* Visualize branches in ChangeQueues
* Implement PipelineDetails view
* Remove external\_id from provider classes
* Serialize state machine state to Zookeeper
* Implement QueueItemPopover
* Make helper functions available to other components

11.1.0
------

* Make ZK component more robust against ZK errors
* Implement new status page
* fix(kafka): fix config key of gerritkafka
* Handle zuul\_return format errors
* Remove unused arguments in merger
* Add override control
* Add configure-projects
* Exclude empty change queues from status JSON
* Fix regex syntax warning in docs/conf.py
* Remove docs python version pin
* Unconditionally check for tracebacks in logs
* Add some race conditions to okay\_tracebacks
* Update base job playbooks in quickstart
* Harmonize containing branch matcher for tags
* Deprecate and cleanup use of status-url
* Drop use of sudo podman-compose from quickstart tutorials
* Remove unneeded depends\_on from Zuul quickstart containers
* Combine reserved variable name lists in  check\_varnames
* Update doc regarding merge mode
* Unify provider validation and deserialization schemas
* Drive statemachine in launcher
* Split awsprovider.py
* Add abstract statemachine adapter methods to provider
* Move some attributes from label to flavor
* Remove extra nesting in test\_launcher
* Remove nodepool part of single-tenant fixture
* Log the reason we fail a nodeset request
* Move/add all public Adapter methods to aws provider
* Replace use of adapter with endpoint in EBS uploader
* Replace adapter with endpoint in AWS state machines
* Pass provider\_name to \_tag methods
* Move uploadImage to Provider class
* Move getQuotaLimits to the Provider class
* Add listResources/deleteResource from endpoint to provider
* Add some of the aws driver and statemachine framework
* Add a timeout for gerrit ssh commands
* Don't log tracebacks on pipeline change list refresh
* Be explicit about git.Repo lifecycle
* Remove unused process\_worker args
* Add a test for starting zuul-web after a branch is created
* Handle outdated cache in node ready check
* Fix mock aws teardown in awskinesis tests
* Handle exceptions when forcibly canceling builds
* Don't log tracebacks on streaming errors
* Fix encoding of null attributes in tracing
* Improve tracing test isolation
* Don't start the scheduler when validating tenants
* Don't log tracebacks on variable name errors
* Initialize component registry in merger
* Reconcile merger and executor retry methods
* Add test for blobstore cleanup fix
* Fix wrong blob cleanup for items w/o job graph
* Add upgrade handling for new zkobject sharding
* Get files via merger for >=2048 pushed commits
* Fix traceback in test\_nodepool\_pipeline\_priority
* Fix traceback in test\_merger\_repack\_large\_change
* Set ltime in test\_pending\_merge\_in\_reconfig
* Don't log tracebacks when failing to create cron triggers
* Refactor JobConfigurationError
* Don't log tracebacks on job dependency errors
* Don't log tracebacks on broken stream pipes
* Avoid logging tracebacks on inheritance freeze errors
* Avoid logging tracebacks on some job freeze errors
* Don't log tracebacks on missing jobs in freeze
* Update pagure fake get\_project\_webhook\_token
* Fix test\_crd\_gate\_unknown
* Avoid DB exceptions on certain build cleanups
* Mark line map exceptions as okay
* Mark exception okay in test\_cache\_new\_branch
* Mark some intentional errors as okay
* Mark mqtt test exception as okay
* Don't log tracebacks on malformed JSON error
* Handle some TemplateNotFoundErrors
* Add ability to fail tests if tracebacks appear in logs
* Add max-changes-per-pipeline tenant limit
* Fix web dequeue of periodic items
* Log error details during tenant validation
* Publish zuul-launcher image
* Implement nodeset request handling
* Add launcher client/server implementation
* Only update launcher providers on layout updates

11.0.1
------

* Switch the Provider to a sharded ZK object
* Always store zstat for sharded zkobjects
* Refactor ZKObject to harmonize plain and sharded
* Remove straight\_join in favor of index hints
* Fix retries on unreachable cleanup playbooks
* Do not retry when cleanup returns unreachable
* Log warning when tagged commit isn't on any branch
* Create nodeset info in Nodepool API
* Add AWS provider node class
* Store image build result in ZK
* Add image build triggers
* Update providers on launcher
* Refactor connection configuration
* Add some developer docs for some nodepool-in-zuul zk objects
* Serialize Provider objects to ZK
* Add \*\*kw processing to zkobject subclass fromZK
* Support provider node subclasses in launcher API
* Add ZKObject-based launcher API
* Properly sort imports in model.py
* Add basic zuul-launcher client/server skeleton
* Restrict section inheritance to a single project
* FIx test\_live\_reconfiguration\_trigger\_sequence
* Fix race in test\_submitted\_together\_storm\_fast
* Don't use straight join for build times
* Avoid straight\_join when using provides
* Fix multi-tenant gerrit pre-filters
* Fix race in test\_config\_update
* Use a circular buffer for ansible syntax errors
* Collect jaeger container logs in quickstart job
* Add missing arguments to log\_streamline

11.0.0
------

* Reverse backwards-compat cleanup playbook insertion order
* Deprecate cleanup-run
* Pin jaeger tracing to 1.58.1
* Update foreign project fix to get source by hostname
* Use straight joins in mysql for build/buildset queries
* Fix rendering events on old buildsets
* Fix getting foreign projects during re-enqueue
* Use jaeger all-in-one v1 image
* Fix buildset dependent changes compat handling
* Minor improvements to pipeline manager
* Don't pre fail jobs if they will retry
* Add lock expiration delays to quick-start
* Add exclude\_results to web UI buildset filtering
* Add exclude\_results to buildsets api

10.2.0
------

* Fix repo state branches for branch/ref items
* Revise Nodepool in Zuul spec
* Fix spurious secret duplication error
* Run py312 jobs on Ubuntu Noble
* Avoid exception when no buildset files
* Add provider Endpoint class
* Add provider objects
* Add section config object
* Add stub AWS driver
* Add label object
* Add flavor object
* Add image configuration object
* Reduce duplicaton when adding identical objects
* Add cloud driver requriements
* Remove some requirements caps
* Set opentelementry minimum versions
* Add a spec for untrusted multi-project configuration
* Add spec for the status page in Zuul UI
* Add a script to recreate a workspace repo
* Store a repo state file in the log directory
* Record merger operations
* Vertically compress the nested list in web job view
* Fix bug in file filter presentation in Zuul UI
* quickstart: Remove unused connection 'name' attributes
* gitlab - fix autohold (using --change)
* gitlab - add missing handling of closed merge request
* Make the query cache continuous
* Expand the query cache scope to encompass multiple events
* Stop using submitted-together for submitWholeTopic
* Allow early configuration of fake gerrit in tests
* Perform fewer gerrit queries for changes submitted-together
* web: encodeURIComponent for zuul-manifest path
* Stop logging refs set
* Start yappi last and stop it first
* Avoid double read in configloader
* Store BuildSet.dependent\_changes as change refs
* web: update re-ansi to the latest version
* web: update to react 16.14.0
* Use merger\_items to get additional repo state projects
* Move repo state to blobstore
* Clear files and repo state from scheduler RAM
* Remove iso8601
* Handle non-string values of node.external\_id
* Sacrifice Ansible procs when OOM
* Pre-filter gerrit events based on triggers
* Add buildset events to buildset summary page
* Fix change cache upgrade
* Fix missing unsafe marker in new build\_refs var
* Abort pipeline processing for pending reconfigs earlier
* Fix race in test\_timer\_multi\_scheduler
* Fix race in test\_live\_reconfiguration\_command\_socket
* Add buildset event db table
* Add support for excluding locked branches
* Add a github graphql query for branch protection
* Refactor branch cache to support more queries
* Run the upgrade test job
* Add an upgrade test
* Make the test change database serializable
* Move fake gerrit and pagure into dedicated files
* Fix unbound variable in call to check\_config\_path
* Fix loop when api-root authentication is configured
* Check pre run failure cases with only 2 retry attempts
* Clarify zuul trigger docs
* gerrit: Add \`approval-change\` trigger
* Fix Nodepool election suspended callback
* Vendor persistent recursive watch Kazoo support
* Ignore /COMMIT\_MSG in files matchers even more
* Speed up merger git resets
* Log tenant read/write lock actions
* Fix issue with reopened PR dependencies
* Catch ZeroDivisionError when f\_files=0
* Temporarily pin urllib3 != 2.1.0
* Add --disable-pipelines option
* Gitlab: make change.files persistent

10.1.0
------

* Gerrit: skip ref-updated /meta events
* Support negated regexes in files/irrelevant-files
* Add zuul.build\_refs variable
* Don't consider type of dependencies to process
* Update docs for job.dependencies and provides/requires
* Allow empty commits with squash merges
* Fix missing label evaluation in Gerrit
* Cancel jobs of abandoned circular dep. change
* Split build/buildset list queries into two
* Handle artifacts created by non change refs
* Limit bytes when reading Ansible output
* Restore mysql hint conditional
* Handle annotated and signed tags when packing refs
* Restore mysql index hint
* fix(web): stop toggling builds on clicks
* Zuul-web: Fix literal filter queries being esacped
* Log Zookeeper session on connection state change
* Correctly limit buildsets with multiple refs
* Make ansible package check more robust
* Add a zuul.buildset\_refs variable
* Add container image sanity checks
* Don't reset buildset when cycle dependency merged
* Build a new skopeo for the zuul-executor container image
* Add python 3.12 testing to Zuul
* Replace pkg\_resource dep resolution with pip
* Convert pkg\_resources usage to importlib
* Use importlib instead of pkg\_resources for ansible conf
* Fix Gantt chart overlap on dup build names
* Handle dependency limit errors more gracefully
* Use the pipeline from the buildset
* Web UI: substring search for builds, buildsets
* Use ProjectNotFoundError
* Use NodesetNotFoundError class
* Replace status\_url with item\_url in pipeline reporter templates
* Fix web dequeue of post items
* Fix github docs for pull\_request\_review.state
* Allow rerequested action for Github triggers
* Use Github label schema for 'unlabeled' actions
* Attempt to preserve triggering event across re-enqueues
* Use the triggering change as the zuul change
* Reset jobs behind non-mergeable cycle
* Zuul-Web: substring search for builds, buildsets
* Fix retried build result and URL in MQTT payload
* Include job dependency UUIDs in MQTT payload
* Replace special characters in MQTT topic
* Add script to generate openapi spec
* Report topic to jobs as zuul.topic
* Add job name back to node request data
* Emit per-branch queue stats separately
* Only return the latest config for project-branch
* Ignore circular dependencies in supercedent pipelines
* Revise decision to not deduplicate noop jobs
* Always delay response to first build request
* Fix stack\_dump\_handler test
* Only use latest proposed config for project-branch
* Add some github configuration deprecations
* Add filter actions menu to error table
* Add zuul\_unreachable ansible host group
* Produce consistent merge commit shas
* Update gerrit changes more atomically
* 2024 refresh of fungi's OpenPGP key expiration
* Monitor and report executor inode usage
* Make executor sensors slightly more efficient

10.0.0
------

* Replace Ansible 6 with Ansible 9
* Reduce unit test concurrency
* Pin kazoo to 2.9.0
* Add backoff delay only after successful job start
* Increase timeouts in TestComponentRegistry (#2)
* Enable TCP keepalives in zuul\_stream
* Refresh Keycloak OpenID Howto for latest Keycloak
* Test with Keycloak 23
* Fix test\_timer\_preserve\_jobs race
* Wrap long job names on status page
* Fix subway graph line gap
* Add dark mode images for status page
* Increase timeouts in TestComponentRegistry
* Fix filtering on status page
* Fix re-enqueue buildset in web ui

9.5.0
-----

* Pin paho-mqtt to <2
* Fix race in test\_deps\_by\_topic\_git\_needs
* Remove updateJobParentData method
* Remove most model\_api backwards-compat handling
* Clean up safety check
* Change status json to use "refs" instead of "changes"
* Finish circular dependency refactor
* Allow circular dependencies in the Zuul project
* Deprecate Ansible 6

9.4.0
-----

* Use exec in tutorial docker-compose files
* Update web ui for dependency refactor
* Add --keep-config-cache option to delete-state command
* Fix 10 second delay after skipped command task
* Fix validate-tenants isolation
* Replace mock\_kinesis with mock\_aws
* Stop and join the build worker before ZK client
* Check blocking\_discussions\_resolved in gitlab driver
* gitlab doc - update the reference pipelines
* gitlab - avoid trigger build when reviewers added/removed
* Fix bug in legacy code for getting parent jobs
* Ignore soft dependencies when getting parent jobs
* Fix Github protected check for renamed branches
* Fix issue with logging when setting refs async
* Use a DummyFrozenJob in build cleanup
* Client (old): don't translate null to 0000000
* Avoid joining the provides table in the builds query
* Optimize db prune query
* Remove unused variable in job graph
* Replace python imp module with importlib
* Gerrit driver: fix for topics containing white space
* Include job\_uuid in BuildRequests/Events
* Set log\_url for retried builds in MQTT payload correctly
* Re-elect James Blair as project lead
* Use getBuildTimes for build time estimator
* Add a build-times web endpoint
* gitlabconnection.py:  Handle 404 on unapprove
* Include job\_uuid in NodeRequests
* Fix multi-scheduler timer unit test
* Correct the timespec fields for the timer trigger
* Improve support for web enqueue/dequeue
* Use a seeded PRNG when setting timer triggers
* Store builds on buildset by uuid
* Index job map by uuid
* Add gerrit hashtags support
* Assign Gerrit change events to a patchset
* Freeze job dependencies with job graph

9.3.0
-----

* Remove nested templates from assert in tests
* Check if suspended callback is set before calling
* Fix repo state restore for zuul role tag override
* Update tenant error pagination total
* Use tenant-status endpoint to show the bell
* Use server-side filtering and pagination in config error page
* Add more zuul\_ref indexes
* Use moment-timezone for moment's tz method
* zuul-web: ensure HTTPError is invoked with 4xx status code
* Further fixes to check deduplication
* Fix some old entries in zuul\_ref table
* Implement server-side filtering and pagination of config errors
* Add safety when setting refs
* Fix nodepool stats calculation in Zuul
* Log migration errors
* Fix bundle refactor sql to be compatible with mysql 5.7
* Retry lingering deduplicated builds
* Fix bug with cached merge modes in TPC
* Send job parent data + artifacts via build request
* Fix flaky deduplication test
* Thin the workspace repo clone
* Fix issue with new Github default merge mode
* Store frozen jobs using UUID instead of name
* Add tracing spans for build repo setup
* Update moment version
* Check for None values when comparing ZuulMark
* Refactor configuration error handling
* Don't schedule initial merge for branch/ref items
* Don't trigger timer events for dynamic branches
* Reduce config error context
* Tidy some auth exceptions
* Add tests for admin api token usage with access-rules
* Conditionally add index.html to the "view log" link
* Add auth token to websocket
* Select correct merge method for Github
* Force Nodepool re-election on connection suspended
* Refactor bundle in sql connection
* Fix sql serialization in old migration
* Add option to use in-container pg\_dump in tests
* Add image debug build option
* Load configuration from unknown dynamic branches
* Improve error reporting for circular dependencies
* Emit stats for more build results
* Surface mutiple configuration issues as warnings
* Add tenant\_status web endpoint
* Load config errors less often

9.2.0
-----

* Fix child job skip with paused deduplicated parent
* Add more safety check tests
* Add spec for refactoring circular dependencies
* github: fallback to api\_token when can't find installation
* Add better log repr for job result future
* Prevent exception when getting namespace PIDs
* Prevent exception in merger on missing request
* Make Ansible variable freezing more efficient
* Add a bundle-changed safety check
* Avoid infinite recursion with topic dependencies
* Fix deduplicating child jobs in check
* Fix deduplication with paused jobs
* Add more check deduplication tests
* Fix deduplication of child jobs in check
* Add more deduplication tests
* Add support for limiting dependency processing
* Avoid leaked items caused by config errors
* Strip refs/heads from gerrit default branches
* Add comment to TestValidateWarinngs
* Allow new warnings when errors exist
* Allow new configs to be used when warnings are present
* Ignore missing nodes in lost-request iterator
* Log exceptions on db migration errors
* Avoid sphinx 7.2.5
* Add failure-output option to zuul-nox-py311 job
* Add pipeline queue stats
* Indicate queue and window length on status page
* Add narrative documentation for pipeline window
* Add window-ceiling pipeline parameter
* Add a test for Job.\_deduplicateSecrets
* Fix secrets overwritten in deduplicate secrets
* Redact remote URL before logging
* Register RE2 syntax errors as warnings
* Add configuration support for negative regex
* Switch from fb-re2 to google-re2
* Use bookworm container images
* Use tenant-level layout locks
* Add default branch support to the Gerrit driver
* Use the GitHub default branch as the default branch
* Use cyaml when reading/writing Ansible

9.1.0
-----

* Add job failure output detection regexes
* Fix issue with early failure and blocks
* Keep task stdout/stderr separate in result object
* Only report dequeue if we have reported start
* Document max\_threads\_per\_installation
* Remove unused github getBranchProtectionRule method
* Add github event processing debug logs
* Use Python 3.11 when publishing docs
* Use sorted list for index of deduplicated secrets
* Sort job's \`affected\_projects\` data attribute

9.0.0
-----

* Only return project cname as safe attribute
* Avoid runtime errors in merger server
* Add Zuul event id to merge completed events
* Report error details on Ansible failure
* Add gcloud pubsub support to Gerrit driver
* Fix linting errors
* doc: Specify implicitly created semaphores
* Add early failure indication to the web UI
* Use Python 3.11 for stream-functional jobs
* Fix is\_template upgrade error
* Don't fail tenant validation for deprecations
* Add a release note about Python 3.11
* Refactor will\_retry
* Add Zuul job variable to indicate a job will retry
* Fix URL generation for subdir deployments
* Add AWS Kinesis support
* Add configuration warnings
* Attach loading\_errors to the ParseContext
* Add manager/reporter support for config warnings
* Don't cancel Github check-run during re-enqueue
* Add Ansible 8
* Add commit\_id to zuul vars
* Use built-in URL data type instead of custom parse
* Add Kafka support to Gerrit
* Refactor Gerrit driver event sources
* Add explicit foreign key indexes
* Pin pillow for docs build
* Report early failure from Ansible task failures
* List process ids in bwrap namespace
* Don't issue multiple merge requests for bundles
* Require sphinx-rtd-theme >= 1.2.2
* Log item related messages with event id
* [docs] Mention that paused dependencies are OK
* Add config metadata to identify project-templates
* doc: Add underscore for ReST external link
* Document the source of the afs 0x40084301 ioctl magic number
* Use os.open with setpag
* Fix setting autoholds through API with change supplied
* Don't set buildset files for non-live items ahead
* Web: remove config error drawer
* Web: convert config errors to table
* Document backing up and restoring project keys
* Add more info to merge mode selection errors
* Add error information to config-errors API endpoint
* Add test for reporting of transient build errors
* Ensure cycle dependencies are enqueued ahead
* Conditionally render ANSI console text with a black background
* Use buildx to build images
* Replace docker by podman for quick-start
* Refresh builds even less

8.3.1
-----

* Only check bwrap execution under the executor

8.3.0
-----

* Fix JWT auth test and alembic migration
* Use bwrap --disable-userns if possible
* Fix bug around Github token expiration
* Correctly complete build on transient errors
* Add container creation details
* Add Gerrit pipeline trigger requirements
* Add GitHub pipeline trigger requirements
* Don't check branch cache when project not in min. ltimes
* Fix delete-pipeline-state command
* Improve FrozenJob.isEqual
* Publish container images to quay.io
* web: add dark mode and theme selection
* Deduplicate circular dep jobs in check
* Further fix getting topic changes by git needs
* gerrit: Handle case where commit has no parents
* Fix getting Gerrit topic changes with git needs
* Add missing event id to management events
* Expose max. attempts to the job as a Zuul variable
* Only use "master" as default branch if not set
* Revert "Test with MariaDB instead of MySQL"
* Log durations around Github event pre-processing
* Increase Github event processor thread pool
* Do not wait for streamer when disabled
* Test with MariaDB instead of MySQL
* Fix zk host env var for tests
* Handle zuul.yaml files with only comments
* Fix prune-database command
* Check Gerrit submit requirements
* Log commit SHA when getting files from repo
* Add implied-branch-matchers to tenant config
* Set cache ltime when branch protection changed
* Add installation\_id to event log
* web: migrate pages to react-table
* Don't add PR title in commit message on squash
* Don't discard all cat job results in case of error
* Zuul-Web: Filter input validation for "Change"
* Fix variable name in job request queue log message
* Add statement timeouts to some web sql queries
* Don't connect to MQTT broker in zuul-web
* [doc] Fix the description of the "shadow" attr
* tutorial: Update node to jammy
* Allow duplicate queue definitions on same project branches
* Cache JWT client in zuul-web
* Truncate Github file annotation message to 64 KB
* Fix race related to PR with changed base branch
* merger: Keep redundant cherry-pick commits
* Avoid layout updates after delete-pipeline-state
* Set layout state event ltime in delete-pipeline-state
* Ignore fetch-ref-replicated gerrit event
* Retry jobs on transient IO errors on repo update
* Use buildset merger items to collect extra config
* Optimize layout generation with many job variants
* extra-config-files/dirs in items of a bundle should be loaded
* Only store trigger event info on queue item
* Fix user creation in Docker test setup script
* Re-enqueue changes if dequeued missing deps

8.2.0
-----

* Match events to pipelines based on topic deps
* Return cached Github change on concurrent update
* Cleanup old rebase-merge dirs on repo reset
* Update reconfig event ltime on (smart) reconfig
* Expand the scope of zkprofile
* Fix exception on retry in source base class
* Fix deprecated use of currentThread() in REPL
* Fix queue item creation in bundle deserialization
* Add PBR\_VERSION argument to Dockerfile
* Fix configuration error related to YAML anchors
* Remove layout\_uuid from PipelineState create call
* Fix race condition in pipeline change list init
* Fix race in test\_queue unit tests
* Add an !unsafe change\_message variable
* Replace use of ProjectContext with SourceContext
* Fix more file opening ResourceWarnings
* Fix DeprecationWarning: ssl.PROTOCOL\_TLS is deprecated
* Fix ResourceWarnings in the executor server
* Fix ResourceWarnings in fingergw
* Fix ResourceWarnings in inventory testing
* Cleanup some Python ResourceWarnings in the test suite
* Add more log messages for run handler steps
* Add scheduler run handler metric
* GUI: Add tenant dropdown to top menu
* Simplufy shouldRefresh\* checks
* Switch to sqlalchemy 2.0
* Don't nest alembic transactions
* Prevent files cache ltime from going backward
* Allow default-ansible-version to be an int
* Switch our local testing docker-compose to mysql 8.0
* Address SqlAlchemy Removed in 2.0 Warnings
* Pin sqlalchemy to <2.0 and revert "Update git"
* Initialize missing pipeline change list attribute
* Set arrival timestamp for timer trigger events
* Refresh dependencies for changes in pipelines
* gerrit driver: fix bug around unicode branch names
* Cleanup deleted pipelines and and event queues
* Periodically cleanup leaked pipeline state
* Require latest layout for processing mgmt events
* Dockerfile: build later skopeo
* Use importlib for versioning
* Fix include-branches priority

8.1.0
-----

* Update git
* Honor independent pipeline requirements for non-live changes
* Handle missing diff\_refs attribute
* Update build/job versions in place
* Unvendor kazoo locks recipes
* Use unsafe\_skip\_rsa\_key\_validation with cryptography
* Cleanup test logging
* Fix scheduleFilesChanges fallback to target branch ref
* Update openshift client install version
* Re-elect James Blair as project lead
* Track object versions in the Buildset object
* Further avoid unnecessary change dependency updates
* Avoid unnecessary change dependency updates
* Add timer event directly to pipeline event queues
* Store pause and resume events on the build and report them
* Don't install '.' in bindep target
* Pass session.posargs to nox venv session's run call
* Switch to nox-docs
* Add noxfile and switch to nox
* Pin tox to 3
* [gitlab driver] fix "'EnqueueEvent' object has no attribute 'change\_url'"
* Reuse queue items after reconfiguration
* Avoid acquiring pipeline locks in manager postConfig
* Abort job if cleanup playbook timed out
* Dedup the oc and kubectl commands in the docker images
* Add project-ssh-key to API docs
* Correctly set the repo remote URL
* Document file-matcher behavior for refs w/o files
* Allow clean scheduler shutdown when priming fails
* Expose nodepool slot attribute
* Consider queue settings for topic dependencies
* Add Gerrit Verified/Workflow submit reqs to tutorial
* tutorial: remove warn parameter from 'shell' ansible module
* tutorial: Update gerrit configuration to gerrit 3.7
* Update following changes logging
* docs: Clarify zuul\_console behaviour for Kubernetes job nodes
* Avoid replacing timer apscheduler jobs
* Fix deduplication exceptions in pipeline processing
* Check if Github detected a merge conflict for a PR
* Unpin JWT and use integer IAT values
* Handle Github changed files errors more broadly
* Cleanup leaked git index.lock files on checkout
* Smooth out upgrades to playbook semaphores
* Report a config error for unsupported merge mode
* docs: remove orphaned howto pages
* Refactor merge mode name lookup
* Parallelize some pipeline refresh ops
* Update README to point to Matrix, not IRC
* Update help text for zkprofile command
* Fix race in merger shutdown
* Add an upgrading document
* Add playbook semaphores
* Document pct\_used\_hdd stat
* executor: Skip line mapping for special Gerrit files

8.0.1
-----

* Fix config-errors dedicated page
* Fix skipped builds filter in web ui
* Remove legacy semaphore handling
* Initialize tracing module in model tests
* Don't refresh the pipeline state during reconfig
* Add a zkprofile scheduler debug command
* Add Python 3.11 testing

8.0.0
-----

* Detect errors with non-permitted parent jobs
* Support authz for read-only web access
* Set Access-Control-Allow-Origin headers in check\_auth tool
* Add access-rules configuration and documentation
* Show login button any time auth is available
* Web: always set redux auth and wait for it
* Linger on auth\_callback page until login is complete
* Add api-root tenant config object
* Hide components in whitelabel tenants
* Add check\_auth tool to zuul-web
* Fix implied branch matchers and override-checkout
* Fix test\_ensure\_cloned and JWT tests
* Defensively handle null JobData hashes
* Add rebase-merge merge mode
* Fix pipeline event starvation due to cleanup locks
* Add JobData refresh test
* Fix re-use of existing job data when hash matches

7.1.0
-----

* Change merge mode default based on driver
* Add timer driver debugging
* Add debugging to waitUntilSettled
* Fix shutdown race in timer driver
* Correctly (de-)serialize the topic of a change
* Remove Ansible 5
* Deprecate Ansible 5, make Ansible 6 the default
* Include some skipped jobs in the code-review report
* Fix typo for zuul\_console\_disabled flag
* Expand github pipeline reject docs
* Add "draft" github pipeline requirement
* Build zuul web with esbuild
* Include skip reason in build error\_detail
* Only run yarn build when necessary in tools/pip.sh
* End node request span when result event is sent
* Simplify tenant\_authorizatons check
* Remove unused /api/user/authorizations REST endpoint
* Rename admin-rule to authorization-rule
* Include skipped builds in database and web ui
* Store parent span context with span info
* Correct exit routine in web, merger
* Don't trace merge jobs that we don't lock
* Include tenant and pipeline in QueueItem span
* Clarify extra vars are not passed with -e
* Add extra logging around tenant reconfiguration events
* configloader: Fix error report for job nodesets
* Trace Zuul trigger events
* Trace timer trigger events
* Trace Git connection events
* Trace Pagure connection events
* Trace Gitlab connection events
* Trace Gerrit connection events
* Trace received Github events
* Link span of queue item to trigger event span

7.0.0
-----

* Set default SSH\_AUTH\_SOCK in zuul-bwrap command
* Fix instance check when refreshing dependencies
* Update link to zuul gating docs in reference pipeline
* Detect and handle auth proxy redirects
*  Add semaphore support to web UI
* Create link to previous buildset span
* Trace node request phase
* Trace merge requests and merger operations
* Add span for builds and propagate via request
* Add tracing tutorial
* Tracing: implement span save/restore
* Add support for configuring and testing tracing
* web: Put status icon into one label
* web: Simply task status results
* web: Show failed tasks in red on task page
* web: Show failed tasks with light red background
* web: Differentiate console entries
* web: Even "better" hidden expandable content
* Elasticsearch: filter zuul data from job returned vars
* web: better non-expandable console padding
* Remove support for Ansible 2
* web: console: make magnifying glass also clickable
* web: refactor console item generation
* zuul-stream: Add variable to disable writing streaming files
* Add option to include returned data in MQTT reporter
* web: update whitespace around logo
* web: remove unused class from brand tag
* Revert "Use debian bookworm version of libc-bin"

6.4.0
-----

* web: build/autohold: fix props input
* web: console: better task modal titles
* web: task summary: make more consistent with other tabs
* web: console: compress datalist
* web: console: convert to PF4 DataList
* web: update to patternfly 4.235.7
* web: move navbar to tertiary
* web: fix logo CSS
* Clarify gerrit trigger approval can be dict or list of dicts
* Change custom type field to default one
* Remove deprecated pipeline queue configuration
* Add nodeset alternatives
* Add semaphores to REST API
* Fix race in test\_periodic\_freeze\_job\_failure
* Don't run cleanup playbooks after setup failure
* zuul\_stream : Use !127.0.0.1 for loopback
* zuul-stream : Test against a Python 2.7 container
* Log more info on gerrit 403 errors
* Use json view for complex artifact metadata
* Don't try to report build w/o buildset to DB

6.3.0
-----

* Remove merge-failure pipeline configuration
* Add Ansible 6
* Deprecate Ansible 2, make Ansible 5 default
* Fix Ansible version testing
* docs: update console streaming docs
* Do not use \_display outside the main thread in zuul\_stream
* Fix and improve Keycloak tutorial
* web: console -- clarify package: comment
* Add Ansible version to a job's Zuul vars
* Make the day-of-week difference from cron a warning
* Update the timer docs regarding weekday syntax
* elasticsearch: Remove the deprecated document type
* web: fix package task results in console
* zuul\_stream: handle non-string msg value
* zuul\_stream: handle failed\_when tasks
* zuul-tox-remote: capture callback errors in remote zuul jobs
* Add Nodepool in Zuul spec
* Run docker-compose up test setup script with env
* Fix links for jobs with special characters
* Add config-error reporter and report config errors to DB
* Reduce redundant Gerrit queries
* setup: Replace dash-separated config
* Set remote URL after config was updated
* zuul-stream: validate on per node basis
* Add zuul change queue
* zuul\_console: do not use f-strings
* Add detail to "depends on a change that failed to merge"
* Fix zoned executor metric when unzoned is allowed
* zuul-stream: automatically remove streaming files
* zuul-stream: implement a protocol and version
* Update unit test container setup and instructions
* Web: fix tabs on project page
* Web: disable scroll wheel zoom in job graph
* doc: Fix Nodepool monitoring stats

6.2.0
-----

* Use internal links in job graph display
* Add freeze job to web UI
* Add job graph support to web UI
* Add test for zuul-client freeze-job
* Add tests for zuul-client job-graph
* Add whitespace around keywords
* doc: fix liveness probes path rendering
* smtpreporter: Add pipeline to subject
* Clear pipeline change cache at start of refresh
* Fix deduplicated build references
* Fix duplicate setResult calls in deduplicated builds
* Do not deduplicate the noop job
* zuul-stream : don't write out logfile for tasks in loops
* Update keycloak demo, documentation for keycloak 18
* Add tracing (OpenTelemetry) spec
* Hide skipped jobs in status/reports
* Apply timer trigger jitter to project-branches
* web: openapi: Fix item\_ahead and items\_behind
* zuul-stream: start new console for stream tests
* Strictly sequence reconfiguration events
* Fix nodepool label query
* Use debian bookworm version of libc-bin
* Add pipeline-based merge op metrics
* Add dev docs for metrics
* Handle non default loopvars in Ansible callback stream plugin
* Fix race in test\_job\_deduplication\_failed\_job
* Fix submitWholeTopic post-merge check
* Fix flaky zuul-web tests using cached tenant list
* Only update commit dependencies when necessary
* Add branch cache fetch failure tests
* Fix read-only branches error in zuul-web
* Fix race is test\_tenant\_add\_remove
* Bump up to python3.10
* Fix merging with submitWholeTopic
* Fix exception in blob store cleanup
* Report timing info for POST\_FAILURE and TIMED\_OUT builds
* Fix typo from 'execption' to 'exception'
* Use attributes instead of a nested dict for web cache
* Add build set URL to reporter
* Improve gerrit connection event queue logging
* Add ssh\_server option to Gerrit driver

6.1.0
-----

* Parallelize config cache loading
* Skip RSA key validation on load
* Add --wait-for-init scheduler option
* Add extra validation to dynamic-only projects
* Fix zuul\_run\_command ret when command is not found
* Fix zuul\_stream test setup
* Validate dependent job names
* Improve cycles paragraph on gating page
* Fix gitlab squash merge
* Clarify missing merge requirement message
* Remove misleading doc about project queues
* Replace 'web' section with 'webclient'
* Zuul-web: return 404 when attempting autohold ops on an unknown tenant
* Update links in keycloak integration doc
* Fix relative prio for project configs w/o jobs
* Add global semaphore support
* Temporarily pin OpenStackSDK before 0.99
* Add prune-database command
* Fix missing job refresh with retried builds
* Dowgrade pipeline summary refresh error to warning
* Fix change cache key in pipeline manager
* Fix result updating in deduplication
* Unify service stop sequence
* Fix the model API 8 transition
* Fix zuul-web layout update on full/tenant-reconfigure
* Increase unit test timeout to 2 hours
* Deduplicate jobs in dependency cycles
* Fix console log streaming with duplicated roles
* Clarify zuul admin CLI scope
* GUI: Do not show sign-in button if no IdP is available
* Don't fail config loading on missing min. ltime
* Add always-dynamic-branches option
* Add include- and exclude-branches tenant config options
* configloader: Add enqueue-message to schema
* Handle jwt decoding error, fix exception default messages
* merger: Handle merges with cherry-pick merge-mode
* Set python-requires to >=3.8
* Amend Zuul v6 releaes notes to include python3.8 min version bump
* Set logfile isFetching initial state to true
* Add a script to find deprecated queue syntax
* Add support for GHE repository cache
* Update docs to clarify inheritance and global repo state
* Add passlib to Ansible venvs
* Cleanup actiongeneral usage
* Add a spec for global semaphores
* Fix node request failures in dependency cycles

6.0.0
-----

* Add netaddr to Ansible venvs
* tutorial: quick-start doc: Fix filename style
* zuul\_json: remove no\_log handling
* Add unit test for zuul\_json text result parsing
* ansible zuul\_json callback : handle string results
* Fix updating change when emulating gerrit topic support
* Fix a bug that re-enqueue may skip soft dependent jobs

5.2.5
-----

* Fix reporting certain config syntax errors
* Don't try to update deps of non-change refs
* Add more files tests to Pagure driver
* Add base\_sha support to gitlab driver
* Fix bug in getting changed files
* gerrit: Fix 'form' auth
* Further no\_job reporting fixes
* Add a gearman-style backoff for executor job starts

5.2.4
-----

* Don't report NO\_JOBS to the database

5.2.3
-----

* Conditionally avoid refreshing jobs and builds from ZK
* Remove unused bwrap-mounts test fixtures
* Add a bubblewrap ro mount test
* Make nodepool hostvars available on unreachable hosts
* doc: Add command\_socket attribute in web section
* Add support for Ansible 5
* Update testing to Python 3.8 and 3.9
* Don't overwrite result data in compat mode
* Delete repo if unable to reset
* Remove built-in ARA support
* Fix background layout updates in zuul-web
* Remove unrestricted Ansible spec
* Add docs about additional security considerations
* Remove executor plugin checks
* Remove plugin tests
* Remove actiongeneral / actiontrusted dirs
* Remove unused functions from zuul.ansible.paths
* Remove workspace path check from zuul\_return
* Remove localhost restriction from command.py
* Remove unused ansible modules
* Remove unused remote module tests
* Remove ansible plugin tests
* Remove restricted Ansible documentation
* Add IBM and Azure deps to the default ansible config
* Fix git error in stream jobs
* gerritdriver: enable triggering on wip state
* Allow using 'unique' workspace scheme in jobs
* doc: uncap sphinx
* Update change deps on refresh after cache miss
* Add a blob store and store large secrets in it
* Handle greedy project name regexes
* Only try to revise unaccepted node requests
* Fix deserialization of new management events
* Skip reconfig when all project config is excluded
* Create missing db entries and retry
* Fix implied branch matchers with regex chars
* Document prometheus\_port, prometheus\_addr for all components

5.2.2
-----

* Fix module loading for Windows jobs

5.2.1
-----

* Add zuul\_log\_id to fully qualified command Ansible module args
* De-duplicate change dependencies
* Add a note about bwrap and setsid
* Fix recursive Gerrit change query
* Rely on the unparsed config cache in reconfigurations
* Handle reviews by anonymous github users
* Add queue.dependencies-by-topic
* Start zookeeper with users uid in test-setup-docker.sh

5.2.0
-----

* Fix Ansible plugin loading
* REST API: cache tenants list
* Recover from broken process pools in merge operations
* Make it possible to configure job retries with zuul\_return
* Use JobData for Build result data
* Dequeue items that can no longer merge
* Update axios to fix CVE-2022-0536
* Report per-branch cyclic-dependency conflicts
* Support submitWholeTopic in Gerrit
* Correct tagged version docs build
* Inject bundle id to inventroy zuul.items
* Create remote ref when it does not exist

5.1.0
-----

* Add spec for removing restricted Ansible
* Report gross/total tenant resource usage stats
* Items in extra paths should be loaded in dependent changes
* Pin elasticsearch to <8.0.0
* Fix gitlab timer events
* Refresh self-keysig expiration on my OpenPGP key
* Drop SKS Keyserver links from vulnerabilities doc
* Fix ZKObject compressed data size estimate
* Fix links to pgp keys
* Update nodejs runtime to version 16
* Clear branch cache on full reconfiguration
* Use kazoo.retry in zkobject
* Use a transaction for BuildCompletedEvent
* Fix change list corruption on local layout update
* Switch to 8005 nodepool webapp port in example docs
* Don't stream async tasks
* Make promote work for any pipeline manager
* Continue generating timer events on error
* Log errors in timer trigger
* Remove inactive maintainers
* Perform per tenant locking in getStatus
* Include original path of renamed file for a PR
* Support non-top-level dirs as extra config path
* Fix Github debugging script
* Add Simon to Zuul Maintainers
* Add Felix to Zuul Maintainers
* Clarify anonymous nodeset docs
* Ignore deleted nodes when looking for lost params
* Trigger pipeline runs when semaphores release
* Add a tenant reconfiguration metric
* Simplify reportBuildEnd call
* Ignore errors in merge request cleanup
* Add option to show overall duration in buildset table
* Update patternfly-react
* Add duration and start time to buildset table
* Check if job request is still queued before yielding
* Correctly reset failing cycle behind failing item
* Update docs to say large installations can need multiple schedulers
* Handle Github branch protection rule webhook events
* web: bump re-ansi version
* Add even more pipeline processing stats
* Add more pipeline processing stats
* Doc: stress the role of HS256 authenticator
* Add docs about reconfiguring on a single scheduler
* Remove open file limit workaround
* Calculate elapsed and remaining times in javascript
* Refresh pipeline change list and status when refreshing the state
* Fix error in sql reporter upgrade
* Simplify \_saveRepoState
* Add MERGE\_FAILURE buildset result
* Rename MERGER\_FAILURE to MERGE\_CONFLICT
* Look up worker\_zone for log streaming from executor
* Don't reconfigure after every gitlab merge
* Fix multi-scheduler test races in waitUntilSettled
* Fix test\_semaphore\_handler\_cleanup test race
* GUI: fix broken enqueue when buildset.newrev is null
* Add a "dirty" flag to pipeline processing
* Only process pipelines if there are outstanding events
* Add a debug log entry about reconfiguration with no file list
* Add waiting status to queued
* Increase mysql read timeout in tests
* Add buildset start/end db columns
* Don't fail on missing change\_queues key in status json
* Add max retries to refresh of pipeline change list
* Release tenant read lock early on pending reconfig
* Fix removal of tenant on layout update
* [doc] fix bad indentation in elasticsearch documentation
* Add proper \_\_repr\_\_ for tenant objects
* Annotate logs in Nodepool API where possible
* Add "repo state" waiting status
* Add pipeline timing metrics
* Report which repo failed initial merge ops
* Restore merge failure reporting tests
* Populate missing change cache entries
* Fix error in background tenant update of new tenant
* Protect stream handler thread from exceptions
* Don't submit empty node requests to Zookeeper
* Add a reconfig reminder to tenant config doc
* Make a global component registry
* Unpin github3.py<3.0.0 requirement
* Don't block tenant list on empty pipeline summary
* Remove SQL reporter deprecation from configloader
* Not swallow exception when cat job fails
* Add support for Microsoft login
* Better document service command-line switches
* Fix Job page error when semaphores is not empty
* Don't lock pipelines during local layout update
* Add some ZK data size stats
* Add zuul-scheduler tenant-reconfigure
* Avoid data races when dequeueing superceded items
* Fix leaked semaphore cleanup
* Serialize update of changes in timer driver
* Ignore KeyErrors in node cache listener deleted events
* Ignore events without data in node cache update
* Report NODE\_FAILURES caused by node request failures to SQL database
* Fix hanging MySQL database tests
* Add a merger graceful command
* Fix threadpool.queue metric in zuul-web to report the correct value
* Clone from /a/ with authenticated Gerrit HTTP
* Don't convert frozensets to list during job freeze
* Don't delete items of partially dequeued bundles
* Only delete bundle items that aren't in ANY queue
* Add stats to web server
* Identify cherrypy requests in logs
* Explicitly close finger sockets in web
* Improve "zuul" driver debug log messages
* Add ssh connection timeout
* Fix version check when re-creating cached changes
* Cache serialized tenant status

5.0.0
-----

* Fix bootstrapping zk data model version
* nodepool-zuul-functional: remove
* Add a model API version
* Display overall duration in buidset page in zuul web
* Add a zk-shell debug script
* Refresh cached branches in timer driver
* Annotate variable interpolation in the tutorial zuul.conf
* Add "zuul delete-pipeline-state" command
* Add some ZK debug scripts
* Prevent run handler and layout update deadlock
* Bump test nodes up to Focal
* Remove "sql connection" backwards compatability for database
* Remove gearman from docs
* Add some pipeline processing stats
* Remove gearman server
* Remove disused gearman\_server usages from tests
* Remove the rpc client and listener

4.12.0
------

* Log duration of local tenant layout update
* Update tenant layouts in background
* Use hash to de-duplicate ZKObject writes
* Revert "Don't run non-docs jobs on docs changes"
* doc/source/operation.rst: Fix option to not demonize
* Skip flaky disconnect tests
* Increase our Sphinx minimum to 1.8
* Add a script to rebuild old docs
* Add link rel=canonical tag to docs
* Link to docs at latest/
* Don't run non-docs jobs on docs changes
* Initialize buildset files state correctly on reset
* Revert "Fix a bug in getting changed files"
* Add backwards compat handling for FrozenJob
* Ignore non-serializable objects in JobData
* Allow to specify MySQL port for test environment
* autohold: use canonical project name in REST interface
* Protect database migration by a lock in Zookeeper
* Serialize FrozenJob.affected\_projects to ZooKeeper
* Use new layout UUID when resetting pipeline state
* Remove rpcclient from connection test fixtures
* Remove rpcclient from test\_circular\_dependencies
* Remove rpcclient from test\_zuulclient
* Remove rpcclient from test\_web
* Remove rpcclient from test\_v3
* Remove rpcclient from test\_reporting
* Remove rpcclient from pagure tests
* Remove rpcclient from gitlab tests
* Remove rpcclient use from github tests
* Remove rpcclient tests
* Remove rpcclient from autohold tests
* Update build set states after scheduling actions
* Add release note about additional zuul-web requirements
* Required gitlab labels is subset of set labels
* Add support for adding and removing labels in gitlab
* Enable reprime by default
* Handle missing config files in zuul-web
* Improve documentation around ZK requirements
* Pin tzlocal to avoid warnings
* Don't join the command thread if we stop via command socket
* Compress ZKObject data
* Offload FrozenJob secrets
* Remove ZooKeeperClient for tenant-conf-check
* Re-elect James Blair as project lead
* Add git\_over\_ssh option for Gerrit connection
* gerrit driver - skip ignored events before they hit zookeeper
* github: a change in .gitub/ may prevent a merge
* decrypt\_secret.py: properly init SourceContext class
* Fix login button check
* Remove zuul-from-scratch howto
* Remove cross-project-gating howto
* Add a version selector to docs
* web: JobVariant : pull description into a card
* Reorganize docs

4.11.0
------

* Fix erroneous semaphore leak cleanup
* Fix merging reconfiguration events
* Update zuul-changes for use with zuul-client
* Add an upgrade release note for delete-state
* Add readiness/liveness probes to prometheus server
* Quantize relative priority
* Pin mistune
* Move relevant change expansion to change cache cleanup
* Improve performance of \_saveRepoState
* Add a keycloak tutorial
* REST API: add idx\_min, idx\_max params to getBuilds, getBuildsets
* Put pipeline icon to the left of the name
* Log zkobject paths with errors
* Web: fix whitelabel tenants with no auth
* Handle more than 1024 changes in the pipeline change list
* Fix mutation while iterating over queues
* Retry dependency update requests
* [web] Pagination in builds, buildsets search
* Add \`playbook\_context\` zuul variable
* Add nonvoting multischeduler job
* Skip tests asserting on tenant reconfig results on multi scheduler
* Copy project list in gitwatcher for iteration
* Limit scheduler count to 1 for Elasticsearch connection tests
* Limit scheduler count to 1 for other github related tests
* Add source attribute to GitConnection
* Skip TestGitlabDriver.test\_ref\_update on multi scheduler
* Execute Github tests with only one scheduler
* Make TestWeb.test\_web\_components work with multiple schedulers
* Refresh pipelines in tests when settled
* Update patternfly/react-core to 4.175.11
* Limit scheduler\_count to 1 (or skip) for some repo config tests
* Skip gerrit checks API scheme test on multi scheduler
* Add helper method to allow skipping test cases for multi scheduler
* Combine different history approaches for merge jobs in tests
* Don't use RecordingMergeClient.history in TestNonLiveMerges
* Limit scheduler\_count to 1 for invalid tenant config tests
* Limit scheduler\_count to 1 for Scale out Scheduler tests
* Only use a single createScheduler() helper method in tests
* Don't delete pipeline summary objects if they have a syntax error
* Add SOS documentation and remove spec
* Use merger API for merger stats
* Add missing attributes to Gitlab MergeRequest
* Remove unused \_get\_reporter\_from\_connection\_name helper method
* Increase MySQL connection limit in tests
* Allow running tests with multiple schedulers
* Document (and warn about) tag job role checkouts
* Add a zookeeper map to developer docs
* Load job from pipeline state on executors
* Add a scale-out-scheduler smoke test
* web UI: Add a credentials renew modal
* Web UI: Add "Create Autohold Request" form, improve API error messages
* web UI: allow a privileged user to promote a change
* Web UI: Show pipeline types as icons
* Fix job data attribute serialization
* Web UI: add Autoholds, Autohold page
* Web UI: allow a privileged user to request autohold
* web UI: allow a privileged user to re-enqueue a change
* web UI: allow a privileged user to dequeue a change
* Support auth in multiple tabs
* web UI: user login with OpenID Connect
* Upgrade react-router-dom
* Load repo state from pipeline state on executors
* Log and ignore exceptions in pipeline processing
* Remove reported\_enqueue flag from queue item
* Fix zuul-web startup config priming
* Add an init phase to scheduler/web startup
* Report more YAML syntax errors
* Fix race in layoutstate
* Prevent duplicate config file entries
* Replace asserts with exceptions
* Fix NoneType ppc exception in freezeJobGraph()
* Add job name to BuildRequest repr
* Add missing onStop() call to TestMysqlDatabase
* Remove fake SQL classes and variables from tests
* Fix ppc.debug error when freezing job graph
* Use sort\_keys with json almost everywhere we write to ZK
* Only update ZKObject values in ZK if necessary
* Conditionally remove nodeset info
* Add testing for tenant authorizations override
* Remove QueueItem.debug method
* Re-order scheduler shutdown
* Fix a bug in getting changed files
* Add repr to FrozenJob
* Log null change key deference
* Identify the object in ZKObject (de)serialization errors
* Use a stable hash for ConfigurationErrorKeys
* Fix buildset config\_errors
* Don't let zuul-web wait for management events to complete
* Align common parts in zuul-web API methods
* Clear and load TPCs before updating layouts on secondary schedulers
* Remove gearman from zuul-web
* Use abide for listing tenants in zuul-web
* Use abide to look up projects directly in zuul-web
* Use abide to look up jobs directly in zuul-web
* Use config errors directly from layout in zuul-web
* Create list of connections directly in zuul-web
* Use abide to get (dis-)allowed labels in zuul-web
* Create list of admin tenants directly in zuul-web
* Check authentication directly in zuul-web
* Use abide for getting project SSH keys in zuul-web
* Use abide for getting public keys in zuul-web
* Use abide for listing pipelines in zuul-web
* Use pipeline summary from Zookeeper in zuul-web
* Store pipeline summary for zuul-web in Zookeeper
* Implement autohold endpoints directly in zuul-web
* Handle management events directly in zuul-web
* Implement job freezing API in zuul-web
* Load system config and tenant layouts in zuul-web
* Make the ConfigLoader work independently of the Scheduler
* Make time estimation synchronous
* Add tag to tag serialization
* web: integrate re-ansi to render ANSI code in Zuul consoles
* Split up registerScheduler() and onLoad() methods
* Move pipeline state to /zuul/tenant
* Shard config errors
* Verify build path before refreshing from ZK
* Refresh pipelines before checking for leaked node requests
* Fix race condition when updating node requests
* Remove pf-c-content CSS class from status page
* Use election for dispatching timer events
* Fix change cache corruption on second scheduler start
* Add extra debug log to change cache
* Add some more debug logs at shutdown
* Don't clear branch cache
* Don't rely on statsd client in zuul times library
* Use branch cache min. ltime when loading a tenant
* Store branch cache minimum ltimes in layout state
* Add source interface for getting the cache ltime
* Forward cache ltime with tenant reconfig event
* Add branch cache ltime to trigger events
* Refresh branch cache depending on min. ltime
* Store connection branch cache in ZK
* Use CachedBranchConnection in Pagure driver
* Use CachedBranchConnection in Gerrit driver
* Refactor change key/reference resolution
* Pin github3.py to <3.0.0
* Use pipeline change list for cache maintenance
* Prevent MR message to be None in order to be process by the scheduler
* Fix change cache relevance detection for refs
* Keep consistent types on QueueItem ahead/behind attrs
* Adjust debug messages in change cache
* Drop ambient capabilities when running bwrap
* Adjust spacing on status page
* Pin CacheControl to <0.12.7
* Increase load\_multiplier in tests
* Cancel stats election on shutdown
* Use activeContext instead of explicit \_save calls
* Update Pipeline for symmetry
* Reduce use of OrderedDict in PipelineState
* Add a pipeline change list object to ZK
* Use a metaclass to deserialize event objects
* Ensure same layout UUID across schedulers
* Only reset the pipeline state if needed
* Remove unecessary assignment in re-enqueue
* Fix Gerrit change (de-)serialization
* Create bundle items during queue deserialization
* Add missing logger to Build and BuildSet classes
* Fix GitHub PR (de-)serialization
* Refresh pipelines before checking for empty queues
* Add change queues to change queue managers
* Store builds in Zookeeper
* Cancel jobs before resetting builds
* Update test\_inventory to be ZK-friendly
* Delete old build sets immediately
* Move re-enqueue to pipeline processing
* Bail out when a project moves between connections
* Reference active change queues in pipeline state
* Update pipeline state when modifying attributes
* Allow passing extra attributes to ZKObject.fromZK
* Remove false-negative in zk test
* Clean up leaked lock path in request queue
* Use ZK transactions when deleting job request locks
* Fix race in change cache removal
* Provide zstat version when updating Node Request in ZooKeeper
* Cleanup stale items after refreshing a pipeline
* Store FrozenJob data in separate znodes
* Implement frozen job serialization/deserialization
* Make FrozenJob a ZKObject
* Remove toDict from FrozenJob
* Make FrozenJob.updateParentData a static method
* Create Abstract and FrozenJob classes
* Remove setBase from job freeze API
* Add test\_freeze\_noop\_job
* Serialize ProjectMetadata on JobGraph
* Serialize JobGraph objects to ZK
* Rely on bullseye image for skopeo in container image
* Fix race is test\_zookeeper\_disconnect
* zuul-web:  add pipelines' manager, triggers data in status
* Zuul-web: Add authentication-realm attribute to tenants
* Use an election for scheduler periodic stats
* UI: Add components page
* Move job\_graph attribute to BuildSet
* Store and resolve queue item's ahead/behind refs
* Lookup event class names from global symbol table
* Remove project pipeline config from queue item
* Remove Worker class
* Store RepoFiles for a build set in Zookeeper
* Add RepoState object
* Add LocalZKContext for job freezing
* Add support for sharded ZKObjects
* Store build sets in Zookeeper
* Fix test race with paused jobs
* Increase timeout in test\_build\_request
* Use all but one CPU when unittesting
* Add some debug logging to change cache
* Only retry ZK operations for Kazoo exceptions
* Recursively delete all sub-nodes of ZKObjects
* Move ZuulMark from configloader to model
* Pass ZK context to deserialize method of ZKObjects
* Save and restore bundle with item in Zookeeper
* Store change queues in Zookeeper
* Store pipeline state in Zookeeper
* Make QueueItem a Zookeeper object
* Dequeue items after we're done with them
* Temporarily enqueue cycle changes for reporting
* Simplified attribute API for ZKObjects
* Add an API for ZK-backed objects
* CI image requires consistency cleanup
* Uncap concurrency in tests
* Example docker-compose: support podman

4.10.4
------

* Add reno about zk disconnect thread fix
* Use a ThreadPoolExecutor for kazoo callbacks
* Don't use --verbose with yarn
* Add addtional checks to key deletion testing
* UI: Add actions and reducers to retrieve components
* Store version information in component registry
* Add /components API endpoint to zuul-web
* UI: Fix gant chart on buildset page for missing timestamps
* UI: Ignore empty timestamps in build time calculation on buildset page
* UI: Fix build time calculation for empty buildsets
* Cleanup empty secrets dirs when deleting secrets

4.10.3
------

* Handle concurrent modification during change cache delete
* In github report, using warning emoji for CANCELED job
* Stop GerritWebServer in tests
* Add gitlab disable\_connection\_pool option
* Perform actual HTTP requests in gitlab tests
* gerrit: trim messages to "human length"

4.10.2
------

* Fix infinite recursion in getRelatedChanges
* gerrit: handle POST 400 errors and don't retry
* Build Zuul's docker images on Bullseye

4.10.1
------

* Add a release notes for cache cleanup fix
* Fix race in test\_node\_request\_canceled
* Make url an attribute of the base Ref class
* Use correct variable for build request stats
* Fix typo in general cleanup method
* Resolve cache keys when gathering related changes
* Add TCP keepalive to gitlab
* Quickstart wait for certs in quickstart docker-compose.yaml
* Web UI: add builds timeline on buildset page
* Handle no file commits in the Gerrit driver
* Flatten SourceContext data structure
* Fix config error detection on same project branch
* Handle long strings in build/buildsets tables
* Add support for gitlab squash merge
* Fix failed merge detection in gitlab

4.10.0
------

* Don't add node resources to nonexistent tenant
* Fix deserializing change refs from cache
* Include project name in gerrit branch cache
* Never externally delete change cache entries
* Web UI: add duration info on buildset page
* Remove time database
* zk: change\_cache: Delete bad JSON data from cache
* gitlabconnection: Use keyword argument for retries
* Remove the local builds list from the executor client
* Don't use executor.builds to find out if tests are settled
* Don't use executor.builds when processing build result events
* Fix race in component re-registration
* Allow more time in test\_smart\_reconfiguration
* Attempt to refresh deps less often
* Use structured change cache keys
* Fix race in test\_data\_return\_child\_from\_retried\_paused\_job
* Only refresh deps if change messages have changed
* Remove onChangeUpdated method
* Verify ZK certs can be read
* Add a test for dequeue-on-new-patchest
* Add a test for github dependency updates
* github: handle suspended apps
* github: more complete mocking for app setup
* web UI: add "show retries" toggles on buildset page
* Let zuul-web look up the live log streaming address from ZooKeeper
* Fix race in job request queue cleanup
* Exit sucessfully when manipulating project keys
* Remove job\_name attribute form NodesProvisionedEvent
* Fix wrong if condition in job request state watch
* Treat 'waiting' jobs same as 'queued' in buildset progress bar
* Send synthetic merge completed events on cleanup
* UI: remove immutability-helper dependency
* Fix node request cleanup routine
* Simplify Zookeeper change cache API
* Move common change cache related methods to mixin
* Clean up dangling cache data nodes more often
* Periodically maintain connection caches
* Cache Git refs (driver) in Zookeeper
* Cache Gitlab refs in Zookeeper
* Cache Pagure refs in Zookeeper
* Cache Github refs in Zookeeper
* Cache Gerrit refs in Zookeeper
* Implement ABC for caching changes in Zookeeper
* Show emoji to highlight failed jobs in build result in Github
* Fix waitUntilSettled nodepool race
* Fix race involving job request locks
* Handle de-serializing NodeRequests without requestor\_data
* Fix test race with node allocation
* Don't use the AnsibleJob in the nodepool client
* Add ZK session-aware elections
* Report nodepool resource stats gauges in scheduler
* Remove internal nodepool request cache
* Don't store node requests/nodesets on queue items
* Refactor the checkNodeRequest method
* Remove unecessary node request cancelation code
* Remove unneeded scheduler.zk\_nodepool object
* Further fix of config change detection in gerrit
* Web UI: add checkbox, selects to filter toolbar
* Combine build result event data structure in common base class
* Query gerrit files endpoint

4.9.0
-----

* Reference change dependencies by key
* Add source interface for setting change attributes
* web: yarn update to patternfly 2021.11
* Improve some log messages in the executor/builds context
* docs: Document regexp RE2 restricted syntax
* Try harder to unlock failed build requests
* Release correct lock after node request cleanup
* Release general cleanup lock after acquire
* Wrap nodepool request completed events with election
* Add node request cache to zk nodepool interface
* Fix parsing of zone from path in executor API
* Fix wrong call to unlock requests in merger client
* Don't hide exception in \_processCatJobs
* Make node requests persistent
* Fix unstable cross-scheduler config priming test
* Remove nodeset from NodeRequest
* Add tenant name on NodeRequests for Nodepool
* Make sure dynamic change queues are marked as such
* Reduce leaked file descriptors in tests
* Disable aliases in inventory.yaml for better readibility
* Remove returnNodeSet calls from scheduler
* Don't treat failed requirement jobs as ready
* Remove hold request cache from nodepool interface
* Import alembic.migration
* Update IRC nics with Matrix IDs
* Be more liberal with Depends-On: parsing
* Update bindep for debian bullseye
* web: LogFile: fix severity toggle buttons
* Add delete-state command to delete everything from ZK
* Add copy-keys and delete-keys zuul client commands
* Add commands to export/import keys to/from ZK
* Add source context to project API return
* Add a timeout to gitlab HTTP requests
* Retry HTTP requests in gitlab
* Improve gitlab request logging
* Update Matrix instructions
* Adjust test\_autohold to catch stats errors

4.8.1
-----

* Fix wrong varible use when updating resource stats
* Cleanup stale locks in merger/executor API
* Several merger cleanups
* Remove a particularly verbose test debug log
* Send merge completed events even in case of error
* Merger related cleanup
* Fix config cache cleanup with extra config paths
* Fix error with config cache some more
* Fix error with config cache
* Retry gerrit queryChange()
* web: JobVariant : convert to DescriptionList
* web: Job: don't display loading/refresh header
* Remove noop builds from builds list
* Perform an implicit smart-reconfigure on startup
* web: JobVariant: add icons
* web: Use PF4 sizing/spacing css
* web: Nodeset: convert to a treeview
* web: JobVariant: visual cleanups
* web: JobVariant: use @patternfly/react-table
* Restore job success/failure message
* Fix ordering of parameters in \_logQueueStatus() call
* web: JobVariant: update to @patternfly/react-icons
* web: Job: use PF4 tabs
* web: Job: remove height setting for job page
* web: use spread operator in JOB\_FETCH\_SUCCESS reducer
* web: yarn update to latest @patternfly/react-core
* Move sigterm\_method to zuul.conf
* Prepare for SQLAlchemy 2.0

4.8.0
-----

* Join the scheduler thread before stopping the zk client
* Fix race in test\_lost\_merge\_requests
* Suppress spurious semaphore lock error logs
* Fix cleanup thread not starting
* Stop running mypy in linters
* Update regex note
* Align Executor API test helper methods with Merger API
* Streamline unlocking in merger and builder run loops
* Refactor Merger/Executor API
* Execute merge jobs via ZooKeeper
* Fix race in component registry
* Fix support for multiple github connection
* Update Github SHA cache on PR update
* Fix test\_gerrit.TestPolling.test\_config\_update
* Add MergerApi
* Clear nodeset when re-submitting node requests
* doc: Specify job.required-projects is extended by child jobs
* Support cross scheduler config loading
* Cache system config in Zookeeper
* Store runtime related system attributes together
* Remove redundant get when removing a build request
* Remove transaction support from sharding API
* Move executor api cleanup to apscheduler
* Cleanup leaked build request parameters
* Store build params separate from request
* Clean up leaked event queue side channel data
* Don't use transactions when sharding large events
* Vendor and use fixed Kazoo read/write lock
* docs: Clarify job.branches definition
* Remove success-url and failure-url
* Pin gear < 0.16.0
* Initialize github client manager if needed
* Add option to check fingergw hostnames
* Remove deprecated DataWatch extra args
* Randomze choice of zoned fingergw
* Combine fingergw certificate options
* Support ssl encrypted fingergw

4.7.0
-----

* Remove some unused methods in sql reporter
* Fix broken link markup for encryption docs
* Update tutorial instructions with RAM requirement
* Report all build[set] completions to DB
* Use a temp ZK config cache for tenant validation
* Remove OrderedDict for tenants
* Log result payload size of merger jobs
* Shard event queue data
* Use the nodeset build parameter instead of hosts/groups
* Sort tenant list by name
* Copy tenants dictionary before modification
* Split ZK event queues by type
* Document RETRY build status
* Only record buildsets in the SQL DB if there are jobs
* Don't display in-progress builds/buildsets in the web listing
* Add a 'complete' parameter to build/buildset queries
* Ensure config cache stages are used correctly
* Always report the build page
* Fix race when canceling a node request
* Create config cache ltime before requesting files
* Lock tenants, pipelines, queues during processing
* Update tenant quota spec config example
* Switch to ZooKeeper backed NodesProvisionedEvents
* Display branch of queue in status page
* Fix wrong if condition in result event handler
* Pin sphinx < 4.1.0
* Add graceful stop environment variable
* Revert "Add graceful stop environment variable"
* Add graceful stop environment variable
* Don't clear connection caches during full reconfig
* Split optional matrix howto steps into new docs
* Link to the build page from the status page
* Add nodeset to build table
* Report intermediate buildsets and builds
* Remove ZuulDBTestCase
* Use an actual database in all Zuul tests
* Move parent provider determination to pipeline manager
* Store tenant layout state in Zookeeper
* Create indexed logger for test scheduler instances
* Combine full and smart reconfiguration events
* Tenant, pipeline and queue locks in Zookeeper
* Refactor pipeline processing in run handler
* Fix data watch race in test\_cancel\_starting\_build
* Fix race waiting for watches to be registered
* Move tenant validation to separate method
* Don't process build state watches w/o data
* Add ExistingDataWatch class
* Correct executor queue stats
* Fix zuul.executors.accepting stats bug
* Call manageLoad during pause and unpause
* Add comment for test method
* Add some jitter to apscheduler interval cleanup jobs
* Remove ExecutorApi.update() call from tests
* Lock/unlock nodes on executor server
* Remove unused addResultEvent method
* Switch from global to tenant event queues
* Simplify queue traversal of fileschangescompletedevent processing
* Switch to ZooKeeper backed merge result events
* Compress sharded ZK data
* Shard BuildRequest parameters
* Handle errors in the executor main loop
* Move build request cleanup from executor to scheduler
* Execute builds via ZooKeeper
* Remove exception handling in executor api isLocked
* Only call one build callback in executor api
* Add Postgres schema test
* Fix race with watches in ExecutorAPI
* Clean up Executor API build request locking and add tests
* Switch to string constants in BuildRequest
* Change zone handling in ExecutorApi
* Add ExecutorApi
* Replace TreeCache in component registry
* Add skipped / neutral statuses to the github driver
* Put zuul vars back in debug inventory.yaml
* Re-enable the release jobs
* Increase unit test job timeout to 90 minutes
* Temporarily disable some release jobs
* Fix zuul client and remote tests

4.6.0
-----

* Don't allow nodes or groups named localhost
* Block connection related variables
* Add parse error test
* Add all original values to unsafe\_vars
* Freeze job variables at start of build
* Add secret\_data to zuul\_return
* Ensure executor also as keystore.password setting
* Escape raw percent in 'dburi' value
* Add missing attributes to change mgmt events
* Close fingergw connection handler on input termination
* Use component registry in fingergw routing
* Use annotated logger for layout related logs
* Use create\_all for empty databases
* Add item UUID to MQTT reporter
* Re-use empty nodeset in job variants
* Cache frozen secrets
* Correct URL in matrix howto
* Fix typo in matrix spec

4.5.1
-----

* Import collections.Mapping correctly
* Add Matrix HOWTO
* Spec: move from OFTC to Matrix
* Add Spec on Resource Quota per Tenant
* zuul tenant-conf-check: disable scheduler creation
* Configure unique command socket path per scheduler
* Route streams to different zones via finger gateway

4.5.0
-----

* Add checkpoint release note
* Remove argument from gerritwatcher cancel
* Fix unknown job detection
* Refactor config/tenant (re-)loading
* web: update to latest xterm; disabled selection overrides
* Fix reporting merge failure behind change adding ppc
* Fix layout cache and adding a project to a pipeline
* [doc] Clarify how regexp matching works
* Cleanup Zuul's stdout/stderr output
* Use node image to build javascript
* Consistently use UTC timestamps in fake\_gitlab
* Gitlab: filter repository branches with protected branch rules
* Show pipeline event queue lengths in Zuul web
* Use ordinal rules for retries
* Codify branch matchers and refs
* scheduler: call stop on SIGTERM
* Optimize layout re-calculation after re-enqueue
* Remove layout attribute from queue items

4.4.0
-----

* gerrit: delay event queue attempts
* zuul-stream: drop ARA bindep install
* Fix test race with executor stats
* Move fingergw config to fingergw
* Move "create|delete reference ..." messages to own sub logger
* Add re-run into reference github gate pipeline
* client: fix REST autohold-list response
* Support multiple semaphores
* Log Ansible Error Lines More Lengthy
* Cache unparsed config files in Zookeeper
* Sprinkle some set -e in the quickstart playbooks
* Revert "tutorial post playbook - ignore errors getting docker logs"
* Allow monitoring length of connection event queues
* Add metrics for pipeline event queues
* Implement API for caching raw config files in ZK
* Add a logical timestamp to management events
* tutorial: Export log, Update container name
* tutorial post playbook - ignore errors getting docker logs
* Docfix conisder->consider
* Wait on startup if SQL not available
* Calculate statsd metrics via ComponentRegistry
* Improve component registry
* Revert "Omnibus executor secret decrypt revert"
* Be explicit about yaml loaders/dumpers
* docs: Fix spelling mistake
* Add support for vote-deleted event
* Move encrypted/pkcs1-oaep yaml object handling into yamlutil

4.3.0
-----

* Omnibus executor secret decrypt revert
* Revert "Optimize layout re-calculation after re-enqueue"
* remove duplicate trigger from github example pipelines
* Add dequeue reporting to the github example pipelines
* Remove translation of check run action in github driver
* Check if statsd is set before using it
* Remove use of item's layout in Nodepool API
* Stream API for sharded Zookeeper data
* Calculate build start and end time on executor server
* Add button to go to top of build page
* Raise exception on duplicate tenant configs
* Move queue to project in example
* Update link to patternfly icons
* Decrypt project ssh keys in executors
* Produce better errors on startup if cat jobs fail
* Decrypt secrets on the executors
* Add pipeline event queue lengths to status JSON
* Support serializing encrypted secret objects
* Really retry yarn installs
* Fix resolveBranch working on outdated data
* Fix missing call to updateFromDict for mgmt events
* Always request all required project configuration
* Store tenants in unparsed abide as dict
* Fix race in test for cancel of starting builds
* Retry yarn package installs
* Use real result event in event queue test
* Fix implicit role repos missing in repo-state
* Fix exception on build started event for noop jobs
* Optimize layout re-calculation after re-enqueue
* Make NodeSet fully serializable
* Provide statsd client to Nodepool and make scheduler optional
* Fix broken jobs overriding checkout to an unprotected branch
* Emit stats for semaphore holders
* Support overlapping repos and a flat workspace scheme
* Add waiting status to status page
* getHoldRequest: pad zeros if not full length
* Log semaphore acquire/release at INFO
* test zuul-client build-info
* Switch to ZooKeeper backed build result events
* Add artifacts to MQTT reporter
* Test zuul-client builds subcommand
* statsd: decrement resources gauge for held node
* prometheus: add options to start the server and process collector
* Log raw connection events on submit
* Filter events on event connection
* Add boto3 to default executor venv packages
* Add pywinrm to default executor venv packages
* Cache secret/SSH keys from Zookeeper
* Clarify merger updates and resets
* Restore repo state in checkoutBranch
* Fix repo state restore / Keep jobgraphs frozen
* Revert "Revert "Make repo state buildset global""
* Correct repo\_state format in isUpdateNeeded
* Add a fast-forward test
* Pseudo-shard unique project names in keystore
* [reporter][elasticsearch] fix the timestamp when the system has a different timezone by forcing the UTC timezone
* Use ssh-keyscan -4 in quick-start
* Support key versions and unique names in ZK keystorage
* Add nodepool.external\_id to inventory
* Fix FakeGerritRefWatcher and FakeGerritPoller events
* Move key\_store\_password to keystore section in zuul.conf
* Store secrets keys and SSH keys in Zookeeper
* Add a tool to decrypt a secret

4.2.0
-----

* Revert "Make repo state buildset global"
* Add a checkpoint release note
* Stop active event gathering on connection loss
* quick-start: Make zookeeper wait for certificates
* Switch to ZooKeeperSimpleBase where possible
* Periodically clean up leaked semaphores
* Fix SemaphoreHandler leak
* Make buildset mandatory on build
* Ensure single instance for active event gathering
* Dispatch Gerrit events via Zookeeper
* Add spec for enhanced regional executor distribution
* Allow post playbook to run when run playbook has unreachable result
* Fix ZK-related race condition in github driver
* Move project secrets key loading to key storage
* Align enqueue/dequeue events with trigger events
* Dispatch Gitlab webhook events via Zookeeper
* Dispatch Pagure webhook events via Zookeeper
* Dispatch Github webhook events via Zookeeper
* Use ephemeral nodes for management result events
* Don't refresh change when enqueuing an dequeue event
* Store semaphore state in Zookeeper
* Add UUID for queue items
* Implement Zookeeper backed connection event queues
* Avoid race when task from queue is in progress
* Improve test output by using named queues
* Unify handling of dequeue and enqueue events
* Only promote zuul-build-dashboard when it's built
* Fix bug w/ None event in Github event forwarder
* Fix trigger event forwarding bug
* Resync github permissions docs
* Fix time range when checking enqueue stats
* Switch to Zookeeper backed management event queues
* Switch to Zookeeper backed trigger event queues
* Implementation of Zookeeper event watcher
* Implementation of Zookeeper backed event queues
* Interface to get a driver's trigger event class
* Allow (de-)serialization of trigger events
* Add and fix fields in driver trigger event models
* Allow (de-)serialization of management events
* Move management and result events to model

4.1.0
-----

* Report enqueue stats as ms
* Update trigger/scheduler timestamps
* Change Description of DB in Components Page on Zuul Document
* gerrit: ignore replication event
* Report max 50 file comments to github
* gitlab-driver: remove trailing slash from api basepath
* Remove unneeded network roundtrip when retrieving components
* Handle private IPv6 addresses supplied by Nodepool
* Component Registry in ZooKeeper
* Get executor job params
* Add messages to make the job setup more transparent
* Instantiate executor client, merger, nodepool and app within Scheduler
* Gracefully handle non-existent label on unlabel
* Reduce amount of 'Waiting on logger' messages sent
* Make ConnectionRegistry mandatory for Scheduler
* Use shell-type config from nodepool
* Initialize ZooKeeper connection in server rather than in cmd classes
* Move setupZK() helper function to BaseTestCase class
* Use ZooKeeper TLS in tests
* Fix default parameter in GitlabSource
* Fix zuul.artifacts example in documentation
* Make repo state buildset global
* Optionally allow zoned executors to process unzoned jobs
* Update zoned executor stats
* web: set cache-control header for the badge endpoint
* Support enqueuing behind circular dependencies
* Check cycle items are mergeable before reporting
* Allow refreshing volatile data in canMerge check
* Add optional support for circular dependencies
* Prune git tags on fetch
* Gitlab: raise MergeFailure exception to retry a failing merge
* Retry job on broken process pool
* Report executor stats per zone
* Document zuul-executor graceful
* Catch exception when double unregistering merge jobs
* Remove sqlreporter from example pipeline definitions
* Add --validate-tenants option to zuul scheduler
* merger cat: remove self.\_update duplicates
* doc: update the config to mention the \`load-branch\` attribute
* Include database requirements by default
* Update react-json-view
* Add tenant to reconfiguration end log message
* Use ZooKeeperClient.fromConfig in tests
* Replace reset\_repo\_to\_head(repo) with GitPython
* merger fileschanges: remove self.\_update duplicates
* Simplify ZooKeeper client initialization
* Noop change to Dockerfile to trigger image builds
* Add python-logstash-async to container images
* scheduler: add statsd metric for enqueue time

4.0.0
-----

* Require TLS for zookeeper connections
* Remove zuul-migrate
* mqtt: document the trigger and enqueue time attribute
* ansible: ensure we can delete ansible files
* Fix build page releasenote typo
* Fix executor errors on faulty .gitmodules file
* Remove SIGHUP handling in scheduler
* Connect merger to Zookeeper
* Connect executor to Zookeeper
* Mandatory Zookeeper connection for ZuulWeb in tests
* Prepare Zookeeper for scale-out scheduler
* web: add benchmark test for build output
* Gerrit: Add SSH review tag
* Gerrit: Add gerrit version check for HTTP review tag
* Upgrade pip before installing zuul
* Use implied branch matcher for implied branches
* gitlab: Add access token name, Update docs, Fix webhook
* Add a test for fail-fast in the dependent pipeline
* UI: Remove stretchable link from build and buildset table
* Required SQL reporters
* Move queue from pipeline to project
* Support per branch change queues
* Don't bail on fetchBuildAllInfo if fetchBuildManifest fails
* Add error\_detail to the Task Summary
* Add waiting cause to status API
* test: Fix test Verified label
* gitlab: handle protected branches
* Format multi-line log entries
* git: add missing TriggerInterface to the driver
* Add a note how to access zuul.items variable
* Enhance logging of status\_get requests
* executor: prevent false positive diskaccountant warning
* Fix errors regarding parsing timestamps
* Bump pyjwt to 2.0.0
* Added timestamp field, changed duration field type; improve doc
* A Zuul reporter for Elasticsearch
* tutorial: Rework quick-start and prepare for other tutorials
* Remove importlib-resources pinning
* doc: fix typo in dependent job documentation
* Handle WIP Gerrit status
* Re-elect James Blair as project lead
* gerrit: fix invalid ref computation from change
* Update quickstart to work with Gerrit 3.3.0
* Pin pyjwt to 1.7.1
* Add post\_review pipeline variable to jobs
* Don't bail out if change behind cannot be queried
* Fix override variables in zuul\_return
* Gerrit: add support for patchset level comments
* Squash some RUN layers in Dockerfile
* Enable git protocol v2 in container images
* Clarify when to use zuul\_return to pause a job
* Decouple mypy from tox
* Bump mypy to 0.790
* tools: Deprecate encrypt\_secret.py, document zuul-client encrypt
* zuul-client: test encryption of large secrets
* doc: update example setup playbook
* Re-add pending release notes
* Temporarily remove pending release notes in order to merge 3.19.1
* Clarify zuul\_return variables
* Clarify terms around pause-job documentation
* Add ansible\_user\_dir as safe\_arg for add-host
* gerrit: restore change filter when querying
* Don't enforce js whitespace
* Consolidate js/jsx indentation
* Handle the yaml merge operator
* Revert "Enable ANSI rendering via react-ansi"
* web: remove optional match on systemd regex
* Don't query branch protection on pull request events
* Add job node to components graph
* Revert "requirements: temporarily pin urblib3 for zuul-client"
* requirements: temporarily pin urblib3 for zuul-client
* Use load-branch with trusted repository
* Allow to reuse the code handling the branch cache
* REST API: improve promote endpoint testing
* web: do not render rc != 0 tasks when failed\_when: false
* install-js-tools: add support for manjaro
* UI: Remove refresh button from build and buildset page
* UI: Avoid empty state being shown before data is fetched
* PF4: Rework of log viewer page
* Save superfluous api requests in check run reporting
* Remove an unneeded api call when creating check\_runs
* Enable ANSI rendering via react-ansi
* tools: use python3 for encrypt\_secret
* web: store status filter in the location hash
* Avoid ref parsing when creating heads
* bugfix: branches with pattern 'refs/heads/..' fails merge jobs
* zuul client command 'autohold-list' require argument --tenant
* Make protected attribute clearer to the end user
* Fix possible race in \_getChange
* UI: Don't show "Invalid Date" for SKIPPED builds in builds table
* Add redux integration tests for build actions
* Only request the buildset if it's not already available
* Don't overwrite builds when retrieving the buildset
* Improve fetch build actions and state-to-props handling on BuildPage
* Avoid state mutations in build reducers
* Configure redux for development
* Blacklist ansible 2.9.14
* doc: fix timer trigger spelling
* Separate connection registries in tests
* Defer setting build pause to event queue
* Update kubic signature
* Delay getting many files to mergers
* JS: Don't run tests in watch mode
* REST API: improve tenant scoping of autohold, authorizations
* Test zuul-client encrypt subcommand
* [web] update tenant page to PF4
* Restore correct reason reporting of merge failures
* Add CORS header to quickstart log server config
* Add upgrade note to 3.19 regarding check run permissions
* Revert "Revert "Update images to use python 3.8""
* Update Gerrit config for quickstart
* Revert "Update images to use python 3.8"
* Warn user when dynamic layout ignores zuul config
* Add zuul-client-zuul-functional job
* gitlab - doc - remove not feature complete notice
* Optimize GitHub requests on PR merge
* Fix bindep.txt: clean remaining python3.7
* Add zuul-client testing
* web: consistent font sizes on console page and PF4 for task summary
* Render links for ref\_url if build.change isnt' set
* Update images to use python 3.8
* javascript: publish artifact tarball
* Prohibit invalid uri usages on localhost
* Update SKS Keyserver URLs
* Use bionic images for zuul-stream-functional tests
* Remove zuul-stream-functional-2.7
* Stop falling back to job name for missing url
* PF4: Update builds and buildsets tables + use newest patternfly release
* PF4: Update filter toolbar on builds and buildsets page
* Move driver specific change status field to driver
* Fetch can-merge info when updating a pull-request
* Add intermediate flag for jobs
* gitlab: merge request approval: specify the commit
* Add commit id and owner to Change for mqtt reporter
* Allow find on the executor
* Add test for fileglob behaviour
* action: Remove unused uri handler
* Log missing required status checks
* Clean up stale git index.lock files on merger startup
* [gitlab] approvals: fix error with community edition
* Fix branch name and project name for ref-updated create/delete
* UI: Enable horizontal scrolling on LogFile page
* FakeGitlabAPIClient: use subject instead of title
* web: Fix error modal contents
* Use Modal to show config errors and fix scrolling
* Revert "Revert PF4 build page"
* Revert "web: restore scrollbars and scroll behaviour"
* Don't match branch protection rule patterns locally
* Offload repo reset during merge
* Correct visibility check in web JS
* gitlab: an "update" event isn't always a "labeled" action
* Ignore 500 errors when requesting pr files
* Remove source\_event from Change objects
* Clear traceback before attaching exception to event
* Fix memleak on zk session loss
* Builds: add "held" attribute
* Drop support for python 3.5
* Drop support for ansible 2.7
* Fix multiple prs found when commit is not head
* Handle review requirements in canMerge
* Exercise github auth handling in tests
* Revert PF4 build page
* Fix typos in inline comments
* Remove unneeded api requests when commenting in github
* Move reports from FakeGithubConnection to github data
* Annotate getBranch with event id
* Support emitting warnings via zuul\_return
* Bold pipeline names not descriptions
* Fix typo in documentation
* Add content to User Tutorials page
* Sort comments in file\_comments testing
* GitHub Reporter: Fix User Email in Merge Commit Message
* Ansible command module: allow to use stdin param
* Improve rendering of cmd
* UI: Highlight pipeline names on status page
* model.py : remove unused inheritable\_attributes dictionary
* Prevent Git GC issue between merger and executor
* UI: Show Ref on build(set) result page if no branch is set
* Doc updates for Github interaction
* REST API: remove deprecated trigger arg in enqueue endpoint
* Fix Multi Node Builds with k8s Build Nodes
* github connection: remove unused depends\_on\_re
* Fix some doc typos
* github: use the same status url for commit status as checks
* Log complete output of kubectl port-forward
* Add information about Patternfly 4 to Zuul web developer documentation
* github docs: clarify situation with checks/status API
* Add event queue sizes to stats reporting
* Dequeue changes via github checks API
* ConfigItem\*Exception : add failure context
* spec: add a zuul-runner cli
* Separate slow rpc operations
* Ignore subdirs with .zuul.ignore on config read
* Always report the status url in Gerrit checks
* Annotate github client in mergePull
* Expire Github installation key 5 minutes earlier
* github status api docs : update
* docs: remove zuuldocs domain
* Simplify dockerfile
* gitlab: support the MR merged event
* gitlab: remove default mutables
* gitlab: support the merge reporter
* gitlab: support the labels requirement
* gitlab: support the labeled event
* gitlab: support the approval requirement
* ParsedConfig.extend : raise TypeError
* Move mark comparision into ZuulMark object
* Annotate all canMerge calls with event id
* Annotate getChangeByUrl logs with event id
* Add user preferences dialog
* Fix github branch protection while already unprotected
* scheduler: Fix event process abide hasUnparsedBranchCache argument
* gitlab: support the merge request approval event
* gitlab: update naming in reference pipeline
* gitlab: implement the approval reporter
* gitlab: implement the merged pipeline requirement
* gitlab: implement the open pipeline requirement
* Sequence builds in test\_executor
* Use npm mirrors in tox jobs
* Support promote via tenant scoped rest api
* web: restore scrollbars and scroll behaviour
* Use project vars for release\_python
* Add a script to find untrusted execution tasks

3.19.1
------

* Add 3.19.1 release notes
* Add reno configuration settings
* Add reno configuration settings
* Re-add temporarily removed pending release notes
* Temporarily remove pending release notes
* Update access token url
* Create virtualenvs in series to avoid cache race
* Block localhost shell tasks in untrusted playbooks
* Block localhost shell tasks in untrusted playbooks
* Require kazoo 2.8.0
* Update .gitreview for 3.x branch
* Add repository and installation id to events in tests
* Don't mask exceptions in \_process\_event
* Fix accessing the installation map in \_process\_event
* Add ensure-pip to quick-start job
* gitlab: update wording patchset to patch\_number in getChange
* Correctly fail cat/fileschanges when update fails
* Fix fetching function on build result page
* PF4: Update build result page layout
* zuul\_stream: avoid exception in \_log\_streamline
* Require kazoo 2.8.0
* Join command thread on exit
* Consolidate summary, logs and console on a single build page
* PF4: Update buildset result page (new layout and styling)
* Round width of change progress bar to 2 decimals
* Keep active nav links highlighted while browsing the page
* Fix brand logo link for dashboards deployed on a sub-url
* Revert "GitHub Reporter: Fix User Email in Merge Commit Message"
* Add an icon next to result buttons on the console log
* Update cherrypy and cheroot requirement pinning
* Fix property validation for isKebabDropdownOpen in App.jsx
* Resume jobs after reenqueue of an item
* Correctly handle skipped jobs on retries
* gitlab: support for the tag\_push event
* gitlab - Add support for depends-on dependency
* gitlab: add enqueue/dequeue unit tests
* gitlab - add test checking tenant reconfig when ref updated
* gitlab - add dynamic reconfig test
* gitlab - add the merge request updated test
* gitlab: implement git push support
* PF4: Update "fetching info ..." and refresh animation
* github: use change.message in squahsed commit message
* Fix dashboard preview after keep file removal
* tests: use a more inclusive word for the default password
* Make test\_playbook more stable
* Web: Adjust console tab type sizes for pf4
* Skip host key checking if host keys are missing
* Fix bug that allowed failing jobs to pause
* executor: prevent restart error on bad build log
* Revert "Revert "Create zuul/web/static on demand""
* PF4: Add new Zuul logo with text
* Introduce Patternfly 4
* Avoid interactive when building containers
* Reduce table nesting on build pages
* Replace cookie use with localStorage
* Add a simple test for upstream renaming branches
* Ensure refs for recent branches are not GCed
* Expire Github installation key 3 minutes before
* Remove some unused variables
* Refactor github auth handling into its own class
* GitHub Reporter: Fix User Email in Merge Commit Message
* Add the openafs-client package to the container image
* Remove noninteractive flag from Dockerfile
* Add krb5-user to bindep for the images
* Fix mqtt log url reporting when report-build-page is active
* Don't decrease window size on merge failure
* Create virtualenvs in series to avoid cache race
* Add openafs-krb5 to bindep
* CLI: add documentation on promote
* Restore release jobs
* Add simple testing for Zuul CLI & REST API
* REST API: fix discrepancies between RPC and REST outputs for autohold
* CLI: Fix errors with the REST client
* zuul-web: refactor auth token handling code
* zuul-web: support OPTIONS for protected endpoints
* Shift docker and pip setup to pre-playbook for quick-start
* Add ensure-pip to quick-start job
* Correct syntax to be compatible with mysql8
* Add descriptions to the different dashboard jobs
* Run upload-docker-image on release
* Update access token url
* zuul\_unreachable: Fix ansible callback exception
* Detect Gerrit gate pipelines with the wrong connection
* GitHub Reporter: Fix \`Reviewed-by\` in Merge Commit Message
* Contain pipeline exceptions
* gitlab - add driver documentation
* Make task errors expandable
* Fix test race in test\_client\_dequeue\_ref
* executor: Fix 'merge\_jobs' configuration
* Don't recreate parse context for every config file
* zookeeper-tls-howto: Remove unused keystorepassword
* Ensure pull request number is int
* pagure: ensure files is list and not a dict\_keys
* Replace deprecated Thread.isAlive() with Thread.is\_alive()
* Fix quickstart gating, Add git name and email to executor
* Docs: CPD between non-shared-queue changes
* zookeeper-howto: update to match zk-ca.sh
* Use Absolute path in zk-ca.sh for openssl config
* last3x release note: fix a typo

3.19.0
------

* executor: add extra kubectl port-forward debug and releasenotes
* Add release note about the final 3.x release
* requirements: add explicit reference to dateutil
* gerrit: disable poller when no http authentication is defined
* web: remove status page componentDidUpdate implementation
* Update to create-react-app 3.4.1
* Support dynamic badges
* Add new timezone selector in web interface
* Include extra, host, and group variables in job serialization
* Update node to v14 and update to new jobs
* Fix trivial typo in glossary
* set Access-Control-Allow-Origin header for autohold
* Increase wait time in remote tests
* Remove ununecessary shebangs
* Gitlab - allow to use the 'zuul enqueue' command
* Gitlab - avoid duplicates in the cache
* add installation manual for Ubuntu
* Drop support for ansible 2.6
* Default to Ansible 2.9
* Fix loading\_errors bug
* Report dequeued changes via Github checks API
* Specifically use python 3.7 base images
* Deprecate ansible 2.7
* Switch back to python 3.7
* Enables whitelisting and configuring callbacks
* Provide some documentation for the checks API implementation
* Require procps also for dpkg platforms
* Allow check runs to be configured as required status in pipeline config
* Fix unused argument triggering flake8
* Replace preexec\_fn argument in executor popen call
* executor: Catch error when reading cpu\_times
* Remove dmsimard from zuul-jobs maintainers
* Validate ansible extra packages
* Ignore source\_context and description in job changes
* Update bindep to include libyaml
* Don't reconfigure the tenant on tag creation
* Revert "Revert "Tune automatic garbage collection of git repos""
* Add some debug lines to help with the loading\_errors bug
* Tie status filter text to pathname
* Add a link to the user survey to the end of the quickstart
* merger: warn about invalid object type
* Don't exit zuul-web when signals are received
* Build zuul images with python 3.8
* Install skopeo in container images
* Fix cherrypy dependency conflict
* Add more docs about pipelines
* Make fake test Gerrit merger more realistic
* Add serial pipeline manager
* Use libffi7 on ubuntu focal
* Simplify FakeGithubClient and FakeGithubSession
* Fix test\_crd\_check\_unknown tests
* Add DOCKER\_\* to passenv
* Don't retry after Gerrit HTTP 409s
* Bump mypy for py3.8 support
* Revert "Tune automatic garbage collection of git repos"
* merger: ensure .git/refs is not removed as a leaked dirs
* Tune automatic garbage collection of git repos
* doc fix: containes -> contains
* Log alembic migrations by default
* Detach head before reset
* Improve display of stdout/stderr task errors
* Filter secret ZUUL\_ env variables from ansible env
* Ensure deletion of the command socket
* Implement graceful termination for the executor
* Add Albin Vass to zuul-jobs maintainers
* Remove David Shrewsbury from Zuul Maintainers
* Use ZK TLS in quickstart
* Move zuul-quick-start requires to pipeline and reparent
* Remove unused function prune in merger
* Report retried builds via sql reporter
* Report retried builds in a build set via mqtt
* Ensure we use recent enough virtualenv
* Retry nodeenv creation
* Annotate dynamic layout creation
* Use ensure-\* roles
* pagure: Make use of the new project webhook/token endpoint
* pagure: Improve CI status flag handling
* Don't try to stream from winrm connections
* Add yappi and objgraph to container image
* Add release note for zookeeper tls support
* Refactor \`self.event\_queues\` in tests
* Consolidate scheduler pause/exit as hibernation
* Refactor zookeeper in tests
* Refactor nodepool in tests
* Refactor merge\_client in tests
* Refactor executor\_client in tests
* Use scheduler manager consistently in tests
* Scheduler test app manager
* Ensure correct cleanup on repo update and reset
* tox: do not install bindep for linters
* tox: rename pep8 to linters
* Add details to waitUntilSettled() debug log
* Enhance some logging messages
* Render buildset progress bar correctly
* Strip by default in tools/encrypt\_secret
* OIDCAuthenticator: add capabilities, scope option
* executor: drop --address=127.0.0.1 from kubectl
* Protect getCachedChanges from concurrent modification
* Install unzip on all platforms
* bindep: add bzip2 to all platforms
* Add generate-zuul-manifest to quick-start
* Display clean error message for missing secret
* Add TLS support for ZooKeeper
* config: show error for all unknown projects
* Remove fix-tox workaround for python3.5
* Remove stretch-backports from docker build
* Be explicit about source of base images
* Declare support for Python3.8
* Fix minor spelling error
* Match tag items against containing branches
* Make github file annotation levels configurable via zuul return
* Don't rely on report-build-page when building the buildset result url
* Update k8s log streaming release note
* Use explicit provides/requires for container jobs
* Cache getUser in Github connection

3.18.0
------

* executor: do not blacklist host-vars for trusted context
* Fix py35 by pinning importlib-resources
* web ui: fix buildset display when no builds
* Make test setup\_config more pure
* Optimize canMerge using graphql

3.17.0
------

* executor: blacklist dangerous ansible host vars
* Add destructor for SshAgent
* Stream output from kubectl pods
* Store build.error\_detail in SQL
* Increase timeout in timeout test
* Test canMerge also with checks api
* Refactor branch protection test infrastructure
* Ensure job.queued is correct after reconfig
* Add spec for scale out scheduler
* Improve error reporting when pr merge fails
* Increase zookeeper timeout during tests
* Recover from broken process pool
* Don't enforce foreground with -d switch
* Deprecate -d switch for running in foreground
* Add foreground option
* Remove implemented specs
* ui: convert all spaces to commas for filter
* Don't fetch pull request twice for status event
* Authorization rules: add templating
* Make most test cases work on MacOS
* Disable misfire grace time of apscheduler job
* Extracting scheduler in test base
* Support file comments via Github checks API
* Implement basic github checks API workflow
* Uncap GitPython
* web: link to index.html if index\_links is set
* Flesh out the glossary significantly
* Log duration of tenant reconfigurations
* Add reference pipelines file for Github driver
* Don't set OS\_LOG\_DEFAULTS if unset
* Avoid gear version 0.15.0
* Cleanup handlers defined in OS\_LOG\_DEFAULTS
* Fix github app authentication to work with checks API endpoints (2)
* Clarify RequirementError message
* Fix evaluation of range file\_comments
* Pagure - Refresh token and recheck sign when token regenerated
* Pagure: remove connectors burden and simplify code
* Reduce gearman logging in tests
* cleanup: install docker-compose via role
* Don't set untouched refs of the repo state twice
* Offload repo reset to processes
* Centralize merge handling
* Support pausing merge jobs
* Gerrit checks: trigger new patchset behavior
* Adjust io-level logging in gerrit/git drivers
* Report robot comments to gerrit
* Add load-branch to tenant configuration
* Gitlab - Implement the note event and the comment trigger action
* Gitlab - Minimal reporter ables to comment on MR
* Gitlab - Add zuul\_event\_id and set use get\_annotated\_logger
* Don't report enqueue of non-live item
* Gitlab - Basic handling of merge\_requests event
* Gitlab - bootstrap the driver structure + Webhook support

3.16.1
------

* Simplify virtualenv install and execution
* Revert "Fix github app authentication to work with checks API endpoints"
* Fix kubectl/oc install in container image
* Run yarn explicitly in Dockerfile
* kubernetes-operator: change attribute to camelCase

3.16.0
------

* JWT drivers: Deprecate RS256withJWKS, introduce OpenIDConnect
* Install kubectl/oc into executor container image
* Uncap virtualenv
* Allow template lookup in untrusted context
* Allow more k8s actions in untrusted context
* Cap virtualenv to <20.0.0
* kubernetes-operator: add job volume to the spec
* Fix test race with paused build
* Don't run jobs if only their file matchers are updated
* Offload setRefs to multiple processes
* Extract allow/disallow filter into util function
* Gerrit: add polling support for refs
* Add Zuul's event id to Ansible inventory
* add\_host: enable using ansible\_fqdn and ansible\_private\_key\_file
* Extract the watcher from git driver
* Add disallowed-labels tenant option
* Spec for allowing circular dependencies
* Correct info log on item report
* Increase timeout of zuul-build-image
* ansible manager: only failed if last ansible failed
* web: humanize time durations
* Add google-cloud-storage to executor ansible
* Gerrit: poll for merged changes if no stream events
* Cap cheroot to fix issues with concurrent requests
* Add build history link to summary
* Add some debug lines for provides/requires
* executor: ansible does not need cowsay
* Dockerfile: create a zuul user with uid 10001
* Fix github app authentication to work with checks API endpoints
* Add gcloud\_service auth option for Gerrit driver
* executor: avoid duplicate debug logs
* Protect prime\_installation\_map with mutex
* Test that retries don't trigger fail-fast
* Start ignoring certain Gerrit events
* Allow skipping child jobs from paused job again
* gear: remove support for custom MASS\_DO packet
* zuul-manage-ansible: add validate option
* Log duration of AnsibleJob.execute()
* Speed up test\_inventory
* Add client\_id to RPC client
* Handle draft pull requests in canMerge
* Fix path in quick-start localtest
* Update screenshot for gerrit profile in quick-start
* Be more specific with remaining time
* Don't reset file list to None in updateChange
* Update Quick-Start Fedora Package Install Command
* Unpin urllib
* Disable pip cache when managing ansible
* Increase timeout for tox-py35/37 jobs
* Add estimated time remaining tooltip to UI
* Update component diagram for GitHub / Web events
* On CI, use a tmpfs for ZUUL\_TEST\_ROOT
* Change default Gerrit HTTP auth method
* test: prevent ResourceWarning in test\_client
* test: prevent ResourceWarning in test\_bubblewrap
* Fix Test Case "TestScheduler.test\_timer\_with\_jitter"
* tests: remove test\_repo\_repr
* Speed up ansible plugin tests
* Revert "Extract an abstract base Parser class"
* tox: reduce deps used for pep8 env
* tox: pass --slowest to stestr
* Docs: fix stestr run example
* Docs: change "config" title
* bindep: fixed wrong dep names on rpm platform
* docs: improve job.role documentation
* doc: add links to components documentation
* Whitelist debug threads used by visual studio code
* Correctly handle noop on job page
* Change links on projects page to canonical name
* Add job.override-checkout to rest api
* Fix bogus error message on reconfigure event
* Add notes on thread dumping and yappi
* Docs: fix styling in reconfigure commands
* Docs: flatten directory structure
* Docs: add admin reference section
* Docs: move overview section to reference
* Docs: move project config docs to user reference
* Docs: re-order reference index
* Limit parallelity when installing ansible
* Fix release note for a 3.0.2 feature
* Allow Passing of Jitter Values in TimerDriver
* Don't expand change panel on middle click
* Handle jobs with dependencies on job page
* Handle Erroneous Cron Strings in TimerDriver

3.15.0
------

* Report buildset result in MQTT reporter
* Re-elect James Blair as project lead
* Extract project config YAML into ref docs
* Document the buildsets endpoint
* Add note about GitHub Action limitations
* Fix nits from initial reorg
* Documentation reorg
* Fix occasionally wrong change url with github
* executor: prevent restart exception on bad build log
* Authorization rules: support YAML nested dictionaries
* Force fetch when updating merger repositories
* Use -N '' for ssh-keygen
* doc: add note for speculative queue attribute
* Fix documentation typo
* Add some docs to the zuul\_return action plugin
* Docs: Cleanup jobs doc

3.14.0
------

* Add support for smart reconfigurations
* Defer setting build result to event queue
* Fix canceling builds in starting phase
* Support podman for test setup
* Don't set ansible\_python\_interpreter if in vars
* Log apscheduler triggers
* Add note to supercedent with regards to file filters
* Fix data return child jobs not skipped on failure

3.13.0
------

* Add additional info for executor.merge\_jobs release note
* Add upgrade note about ansible\_python\_interpreter
* Remove support for ansible 2.5
* Support Ansible 2.9
* Switch ansible\_default to 2.8
* Extract an abstract base Parser class
* authentication config: add optional max\_validity\_time, skew
* enqueue: make trigger deprecated
* Sort autoholds by request ID

3.12.0
------

* Look for depends-on lines in dependency searches
* Record job build attempts in inventory
* Don't search github api for projects not in Zuul
* Fix potential wedge with provides/requires/dependencies
* Log item warning messages at info level
* Store event id for buildsets in database
* Don't process builds not longer in job graph
* Fix job result metric name for builds to retry
* Fix exceptions on reconfig with changing window
* Ensure correct re-enqueue on changing gate queue
* Only report to changes in gerrit
* Provide zuul\_event\_id in MQTT Report Message
* Pagure: Fix handling of threshold\_reached: None
* zuul\_stream: handle module that emit non str msg
* Improve functionality and docs around ansible installation
* Disable Mariadb TZINFO table generation
* Fix deletion of stale build dirs on startup
* web: handle jobs that have multiple parent
* Fix zuul-stream-functional tests
* Fix issue search in FakeGithubClient
* Add propagate=0 for loggers in logging.conf-sample
* Refresh public OpenPGP key for Jeremy Stanley
* Zuul Web: add /api/user/authorizations endpoint
* Enable starting executors in paused mode
* Revert "Revert "Add the process environment to zuul.conf parser""
* Revert "Add the process environment to zuul.conf parser"
* Pagure - add the enqueue\_ref unit test
* Pagure - Support for branch creation/deletion
* Pagure - add support for git.tag.creation event
* Change colors of various "negative" results in UI
* Don't add implicit role if plugin found
* Handle upgrade of autohold held nodes
* Pagure - Manage project connector refresh when EINVALIDTOK
* Keep tenant\_last\_reconfigured float precision (time.sleep removal)
* Remove --id option for autohold\_delete/autohold\_info
* Store a list of held nodes per held build in hold request
* Remove deprecated "checks\_api" syntax
* Log an error on gerrit checks misconfiguration
* Add 'comment' option to Gerrit reporter
* Missing labels is a subset of allow\_needs
* Update install for buster

3.11.1
------

* Fix skipping child jobs with soft dependencies
* Build GitHub URLs for tags correctly

3.11.0
------

* Remove python-path auto release note
* Fix github auth token authentication
* Add the process environment to zuul.conf parser
* Don't install zuul in the bindep tox testenv
* URL quote username/password in gerrit
* Reduce sleep to avoid race conditions
* Add a relnote about gerrit and http
* Include session expired reason in API fetch error message
* Get ansible version at start of job
* web: render log manifest consistently
* Set url scheme on HTTP Gerrit events
* Handle new default of uncompressed job-output
* Replace tox-py36 by tox-py37
* Annotate further log messages in pipeline processing
* Annotate cancelJobInQueue with build id
* Wait for poll twice in tests
* Unify Github/Github Enterpise read timeout
* Fix gerrit errors from production
* Don't use urllib3 1.25.4
* Support nodes setting 'auto' python-path
* Remove outdated TODO
* Add autohold delete/info commands to web API
* Auto-delete expired autohold requests
* Mark nodes as USED when deleting autohold
* Add scheduler config options for hold expiration
* Pagure - handles pull-request.closed event
* Pagure - reference pipelines add open: True requirement
* Pagure - handle Pull Request tags (labels) metadata
* Pagure - handle initial comment change event
* Pagure - fix wrong commit gitweb url
* zuul\_console: fix python 3 support
* Move reference pipelines out of the quickstart
* Use robot\_comments in Gerrit
* Add autogenerated tag to Gerrit reviews
* Support HTTP-only Gerrit
* Update gerrit pagination test fixtures
* Add support for the Gerrit checks plugin
* Add Item.formatStatusUrl
* Add report time to item model
* Add no-jobs reporter action
* Add enqueue reporter action

3.10.2
------

* Disable rsh synchronize rsync\_opts
* Record held node IDs with autohold request
* Add autohold-info CLI command
* Add caching of autohold requests
* Store autohold requests in zookeeper
* Discuss executor-only jobs, add unit-test
* Remove auto-add of localhost from unit test inventory
* Pass zuul\_success to cleanup playbooks
* Fix: prevent usage of hashi\_vault
* Fix timestamp race occurring on fast systems
* Record handler tasks in json job output
* Web: rely on new attributes when determining task failure
* Fix "Set failed, unreachable, skipped statuses in json plugin"
* Better error handling for the PagureAPIClient
* executor: add merge\_jobs options to disable gearman merge jobs
* web: fix connections list github base\_url
* Add release note for bug fix to test correct commit
* Add linter rule disallowing use of var
* web: test trailing slash are removed from renderTree
* Update heuristing of parallel starting builds
* Check refs and revs for repo needing updates
* Add reference pipelines file for Gerrit driver
* Make json outfile seeking clearer
* Apply changes to command module from ansible 2.6
* Fix weak dependencies to work with child\_jobs
* bindep: add unzip and bzip2 for rpm platform
* Set git user config in from scratch document
* Document js tool installation in scratch doc
* Make files matcher match changes with no files
* Annotate QueueItem logger
* Improve visualization retry attempts in UI
* Write json log file by seeking and appending
* Overriding max. starting builds
* manager: specify report failure in logs
* Add Tristan to Zuul Maintainers
* Include ref info in smtp reporter subjects
* web: extract pure functions from the TaskOutput component
* Collect more information from quickstart failures
* web: logfile remember if initial scroll was performed
* github: properly exist when failing to get a pull request
* web: logfile support multi line selection through shift-click
* web: logfile do not use anchor for line selection
* web: logfile scroll into view a bit more
* web: logfile do not scroll into view more than once
* web: logfile highlight selected line
* JS: add line numbers to log file
* JS: Break log viewer out of the panel
* JS: account for header when scrolling to line
* Ensure tenant web\_root url has a trailing slash
* Fix double slash in log browsing
* web: link the buildset page from the build
* Set failed, unreachable, skipped statuses in json plugin
* Switch to review.opendev.org for README.rst

3.10.1
------

* Override the job name from which we promote
* Install yarn before building python artifacts
* executor: resolve build root real path

3.10.0
------

* Don't capitalize Token in docs
* Make auth docs more boring
* Move admin-rules setting in tenants doc
* Add release note for Pagure driver
* Cap GitPython <3.0.0
* Revert "Try out reporting the build page"
* web: add buildset page
* Refactor task result detection
* Correctly identify failed tasks
* web: refactor the errorsIds into the build action
* Hide "root" variable in job web page
* Add permalinks to task detail popup
* Add option to report build page
* Refactor build page tabs
* Scroll log line anchor into view
* Adjust results headings in build console page
* Don't always show expansion option on build console
* Usability tweaks for the build page console
* Render console in js
* Use wait for empty update queue before accepting merges
* Update ara to >=0.16.5 to support ansible 2.8
* Fix uneven distribution of jobs
* Provide buildset.uuid in /builds API result
* Make tenant and pipeline optional in zuul-changes
* Use a requests session to simplify auth'd calls
* Always record the log\_url in sql reporter
* Try out reporting the build page
* Handle artifacts without metadata on build page
* Cleanup extra /'s in manifest render view
* Attempt to report CORS and related errors
* js: don't transform json logfiles
* js: correct action names
* Web: plug the authorization engine
* Add Authorization Rules configuration
* Zuul CLI: allow access via REST
* Rename view to logfile
* Add raw links to log manifest
* Colorize log severity
* Add severity filtering to logs
* Builds page - Fix bad labels display
* Use base 1 line number anchors in log view
* Remember tab location on build page
* Improve SQL query performance in some cases
* Add change replacement field in doc for start-message
* Fix reference pipelines syntax coloration for Pagure driver
* Return dependency cycle failure to user
* Move artifacts to their own section
* Add log browsing to build page
* Fix sphinx error
* Display artifacts in build page
* Update xterm to >= 3.14.5
* Record and report time for trigger events
* Parse nodeset.group.nodes as a list
* Update examples in MQTT reporter docu
* web: Add warning about incompleteness of OpenAPI spec
* Run cleanup playbooks in job thread
* Correct git-review install in CentOS 7 quick-start
* Add "supercedes" pipeline option
* Logging of reconfiguration durations in Zuul
* Unify gearman worker handling
* Handle existing broken config in job updates
* Build layout of non-live items with config updates
* Annotate canMerge check with event id
* Switch to opendev release/docs jobs
* Fix typo in debug message
* Allow operator to generate auth tokens through the CLI
* web: add tenant and project scoped, JWT-protected actions
* Spec: Add a Kubernetes Operator for Zuul
* Improve error reporting for zuul dequeue
* Run jobs when their own config changes
* Fix multi-tenant caching of extra config files
* Reload config on extra config files changes
* Add extra-config-paths tenant config option
* Additional note about branches for implied-branches
* Filter out unprotected branches from builds if excluded
* Remove non working tests/base.py ZuulTestCase.getPipeline method
* [doc][monitoring] Fix the wait\_time parent attribute
* Strengthen the caution about allowed-projects
* Allow config projects to override allowed-projects
* Split ansible output into its own sub logger
* Fix build leak with paused jobs
* Parallelize github event processing
* Stop bind mounting zuul dir into bwrap
* Add repl server for debug purposes
* Add command processor to zuul-web
* Differentiate between queued and waiting jobs in zuul web UI
* Add support for item.change for pipeline start-message formater
* Add missing doc for pipeline start-message
* Add missing start-message in pipeline config schema
* Expose date time as facts
* Pagure driver - https://pagure.io/pagure/
* Make git repo leak check advisory in TestExecutor
* Eliminate two github requests per \_updateChange
* Cleanup specialized retry in \_process\_event
* Add central retry handling for github requests
* Switch getPullBySha to using the search api
* Rework GitHub rate limit handling
* Return store object instead of a function
* Add missing docker daemon installation for Ubuntu/Debian
* Remove unused user\_id from github client

3.9.0
-----

* Revert "Parallelize github event processing"
* Set same timeout for py35/36 jobs in check and gate
* Change default job\_dir location
* Improve retry handling for github driver
* Split plugin tests into two
* Add more test coverage on using python-path
* web: add OpenAPI documentation
* Add opendev tarball jobs
* Add retry logic to github event handler
* Bump default\_read\_timeout for github driver to 300
* Safely add Ansible password lookup plugin
* Increase test timeout to 6 minutes
* Disable gc in test\_scheduler.TestExecutor
* Fix minor typos in Nodepool OpenStack instructions
* Support squash merge in Github
* Allow to select the merge method in Github
* Parallelize github event processing
* Update cached repo during job startup only if needed
* Cap xterm.js to < 3.14
* cli: prevent exception for the show command
* Proposed spec: tenant-scoped admin web API
* Break long repo names to make them fit
* model: add annotateLogger procedure
* Update axios version and yarn.lock
* jsonutil: do not encode SourceContext or ZuulMark
* web: remove SafeLoader left-over from ZuulJSONEncoder
* Revert "Create zuul/web/static on demand"
* Mount tmpfs on ansible tmp dir
* docs: add cleanup-run documentation
* executor: run cleanup playbook on stop
* Set the DiskAccountant log as warning level
* Use nodejs v10 in testing
* Annotate logs around finished builds
* Annotate logs around reporting
* Annotate logs around build states
* Annotate logs around build completion and cancellation
* Log github requests with annotated events
* Annotate builds with event id
* test\_v3: replace while loop with iterate\_timeout
* model: add cleanup-run to the job configuration
* Fix typo in docs
* Report tenant and project specific resource usage stats
* Create zuul/web/static on demand
* Remove unused code
* Fix test-logs.sh utility for multi-ansible
* git: only list heads and tags references
* encrypt\_secret: display the full\_url on error
* Report job depedencies via MQTT reporter
* Show retry attempts in UI
* ansible-config: pin ara to <1.0.0
* Install latest git-review from PyPI in quickstart
* Annotate node request processing with event id
* Fix typo in log message
* pass-to-parent: Fix passing multiple secrets to parent
* Set iterate\_timeout to 60 for pause jobs
* Get playbook data from extra\_vars
* Increase timeout of zuul-tox-remote
* zuul-tox-remote: use unique zuul\_console service
* Fix race in log streaming
* Annotate job freezing logs with event id
* Annotate merger logs with event id
* Annotate pipeline processing with event id
* Add event id to timer events
* Annotate logs in the zuul driver with event ids
* Annotate some logs in the scheduler with event id
* Attach event to queue item
* Annotate gerrit event logs
* Annotate github logs with the event id
* Update quickstart nodepool node to python3
* Revert "web: upgrade react and react-scripts to ^2.0.0"
* Support Ansible 2.8
* executor: use node python path
* Make image build jobs voting again
* bubblewrap: bind mount /etc/subuid
* Handle artifacts on non change types
* Fix missing check if logger is None
* Fix dequeue ref not handling the project name
* zuul-quick-start: run docker-compose as regular user
* Centralize logging adapters
* update zuul from scratch docs

3.8.1
-----

* Add release note for memory leak
* Restore posargs when running stestr
* Update timeout\_handler to check for path first
* Bump tox jobs timeout to 3600
* web: upgrade react and react-scripts to ^2.0.0
* Add support for submitting reviews on GitHub
* Support fail-fast in project pipelines
* Update assertNodepoolState() to retry zk requests
* Fix race in test\_job\_node\_failure\_resume
* Make test\_playbook more robust
* Tiny cleanup in change panel js
* Make paused status bar blue
* Fix test race in test\_job\_pause\_retry (#2)
* Increase timeout value for test\_playbook timeout job
* Fix test race in test\_provides\_requires\_pause
* Fix test race in test\_job\_pause
* Fix test race in test\_job\_pause\_post\_fail
* Add more debugging to tests
* Fix race in test\_job\_pause\_retry
* Fix memory leak in job cancellation
* Recover cached repos from corrupt object files
* Fix race in test\_job\_pause\_pre\_skipped\_child
* Halve stestr concurrency
* Fix requirements loop warning
* Revert "Prepend path with bin dir of ansible virtualenv"
* Add release-zuul-python to post pipeline
* Update references for opendev
* Use user.html\_url for github reporter messages
* Bump lru\_cache size to 10
* Add some packages for basic python jobs
* Improve proxy settings support for compose env
* Include zookeeper.hosts in ZFS example zuul.conf
* OpenDev Migration Patch
* web: honor allowed-labels setting in the REST API
* web: add triggers information to pipeline list
* docs: fix a typo in executor zone documentation
* Clarify .zuul.d directory
* Fix for yappi output
* Use zuul-ansible for ARA callback plugin detection
* Ensure correct state in MQTT connection

3.8.0
-----

* Add release note for broken trusted config loading fix
* Config errors should not affect config-projects
* Fix dynamic loading of trusted layouts
* Fix tox.ini cover target install command
* Handle github exceptions better when trying to get a PR
* Set focus on xtem.js to terminal
* Assert ara database is loaded from ansible venv
* encrypt: Fix SSL error when using file pubkey
* Check branches in supercedent pipelines
* Tolerate missing project
* Fix occasional gate resets with github
* Fix zuul-stream functional test
* Use the buildset registry in zuul-quick-start
* Fix SQL error when querying for tuples
* Whitelist pageup and down keys in xterm
* gerrit: Add some quoting in 'gerrit query' commands
* Add proper \_\_repr\_\_ to merger repo
* Cleanup executor specific requirements
* Use a more visible selection color
* tox: Integrate tox-docker
* web: add tags to jobs list
* Use opendev docker jobs
* Prepend path with bin dir of ansible virtualenv
* Add database info for components graph
* Increase timeout of zuul-quick-start
* Add web / fingergw connections for components graph
* Add search function to web streaming
* Use xterm.js for live log streaming
* Add link to builds in job page
* tox: Fix indentation
* tox: Change default 'install\_command'
* tox: Remove 'commands\_pre'
* Document how to run eslint locally
* Resolve todo after stream.html to stream renaming
* Fix slightly smaller font of in progress jobs
* Add logs spec
* web: Add '/' API route
* Fix typos
* gerrit: use change: when querying changes
* tests: be more gentle in the iterate timeout loop
* tests: use a single build reference in stream test
* web: check if job has parent
* web: check if project has variant
* web: add ErrorBoundary

3.7.1
-----

* Mock system load in executor governor tests
* Increase event timeouts in git tests
* Fix test race in test\_periodic\_override
* Increase zk session timeout during tests
* Increase wait\_timeout of test\_playbook
* Add missing thread joins to tests
* Make hard test timeouts more gentle
* Increase global test timeout
* Increase default wait\_timeout
* Fix ignored default ansible version
* Update component diagram to show statsd
* Add API endpoint to get frozen jobs
* Fix Ansible 2.7 uri module
* Add missing Ansible invocation debug env variables
* Forward artifacts to child jobs within buildset
* Ensure valid Ansible variable names in config
* scheduler: add job's tags to the rpc job\_list method
* Skip ansible validation for non-ansible tests

3.7.0
-----

* Fix deprecation warning around yaml.load
* Fix metadata not passed in provides/requires
* Add py37 environment to tox
* Move ansible installation from pre\_command to install phase in tox
* Fail jobs when requirements not met
* Increase wait time of test\_plugins
* Properly handle missing ansible version in executor
* Whitelist ansible\_python\_interpreter for add\_host
* manifest: add zuul/ansible and ansible-config.conf
* Don't call the merger for non-live items
* Install virtualenv from source
* Don't check out a commit if it is already checked out
* ansible-config: add common extra dependencies
* Add missing docs for zuul-manage-ansible
* Support common ansible dependencies
* Switch default ansible version to 2.7
* Support ansible 2.7
* Support ansible 2.6
* Run tox remote concurrent
* Install ansible during executor startup if needed
* Make ansible version configurable
* Validate ansible installations on startup
* Manage ansible installations within zuul
* Remove some thread join timeouts
* Wait for command processor thread to stop
* web: support more than one job in the filter
* Run tox-py35 jobs on xenial
* Ensure correct lexical sorting of node requests
* Add missing doc for 'execute\_time' in MQTT schema

3.6.1
-----

* Prevent local code execution via the raw module
* web: add flatten checkbox
* web: add jobs list filter
* web: switch jobs list to a tree view
* tests: remove debugging prints

3.6.0
-----

* Allow soft job dependencies
* Increase timeout of test\_plugins
* SQL: only create tables in scheduler
* Fix test race in test\_container\_jobs
* Fix test race in test\_client\_dequeue\_change\_by\_ref
* Remove default zookeeper hosts
* Fix duplicate and reversed artifacts
* Log exception on module failure with empty stdout
* Fix test race with Watchdog thread still running
* Reset dependent jobs when aborting paused job
* Centralize job canceling
* quickstart: web and others wait on mysql to start
* Encode zuul.message with base64
* Fix multiple jobs with provides/requires
* web: add /connections route
* Request dependent job nodes from paused parent provider
* Request child nodes of paused jobs at higher priority
* Fix rare semaphore leak during reconfiguration
* Fix missing semaphore release around dequeue
* doc: clarify sshkey option usage in github connection
* docker: add state folder
* Optionally disable disk\_limit\_per\_job
* web: add /{tenant}/buildset/{uuid} route
* web: add buildsets page
* CLI: fail if trying to enqueue/dequeue a change for the wrong project
* Don't set child jobs to skipped on post failure
* Return artifact metadata in API endpoint
* Allow extra data in artifact schema validation
* Combine zuul.artifacts lists in zuul\_return
* Switch artifact return back to list
* Remove reference to localhost in zuul\_return docs
* Clarify project vs repository in getPullBySha
* Switch to LRU based sha to PR cache
* Fix typo in build api endpoint
* Test GithubShaCache
* Rename project to project\_name in getPullBySha
* Log to job output when running Ansible setup
* Show animated progress bar in preparation phase
* Don't request PR issue data
* config: add playbooks to job.toDict()
* connections: remove unused getSchema procedure
* connections: always register the scheduler
* Support boolean values in get\_default
* List changed files for all commits between refs
* Add dockerized test setup
* Add comment about extra issues request
* Re-use the github PR object when fetching reviews
* Cache github PR shas
* Make UnsafeTag self registering
* Mark as unsafe commit message at inventory
* web: remove build and job\_name filter from the buildset route
* Improve event logging in githubconnection
* web: prevent status update loop in background
* Add a note about sqlalchemy metadata
* Don't exclude config if excluded in earlier tenant
* Return artifacts as dicts and add metadata
* Remove default user for fingergw
* Parallelize update threads
* Perform per repo locking on the executor
* web: add /{tenant}/buildsets route
* Update git connection logging
* Update SQLAlchemy url in docs
* Fix error reporting for special task failures
* Allow run to be list of playbooks
* Disable service workers by default
* Add react build env vars to Dockerfile
* Use node v10 instead of node v8
* Increase timeout for zuul to settle in tests
* Add spec for multi ansible version support
* Properly log requests in SimpleHTTPRequestHandler
* Fix wedged scheduler on force-merge of non-existing template
* Properly close streams
* web: clear status when changing tenant
* Fix context directories in image builds
* Make git clone timeout configurable
* Move isChangeReadyToBeEnqueued after pipeline requirements
* Add provides/requires support
* github: log the project name when getBranches fails
* Fix flake8 error: E117 over-indented
* Report the build execute\_time via mqtt
* scheduler: add job's variants to the rpc job\_list method
* model: remove unused job's BranchMatcher procedures
* Identify the gerrit source when logging stream-events errors
* Add web/node\_modules to dockerignore
* Raise an error if pipeline is defined twice
* github: do not use protected=0 to get all project's branches
* Incoming connections over 19885/TCP are needed on nodes
* Make setup playbook timeout configurable
* Improve logging around ansible timeouts
* Stop building an explicit zuul-base image
* Build zuul containers with dockerfile not pbrx

3.5.0
-----

* Explicitly callout ZooKeeper as ext dependency
* Fix secondary exception in fingergw
* Set allowed-projects on untrusted jobs with secrets
* Replace build-essential with gcc/g++
* Use sudo -E in install-js-tools only if not root
* Add a minimal dockerignore file
* Improve exception handling of fingerclient
* executor: properly format error exception
* Test coverage to exclude pipeline with untrusted project
* Retry jobs on winrm send\_input failed
* Add more testing for pass-to-parent
* Add link to git browser in quickstart
* Add pass-to-parent option for secrets
* Fix noop job toDict()
* Fix missing semaphore release on node failure
* Include PR title in change message
* Allow known\_hosts to be run in untrusted context
* Fix missing safe\_args for add\_host
* Add change message to Zuul vars in inventory
* Add action to host results in zuul\_json callback
* Use os.path.join for git driver getGitUrl
* Log connection exceptions when starting web
* Convert zuul\_return into action plugin
* tests: improve test\_web to only provision events when needed
* Fix documented invocation of docker-compose
* Gracefully close db connections in tests
* Update docs since zuul-web requires zookeeper
* Fix test\_load\_governor on large machines
* sql: add buildset uuid column
* docs: Added missing -i on docker-compose up command
* Default ssh keys to empty list
* Ensure command\_socket is last thing to close
* Clean up command sockets on stop
* Combine artifact URLs with log\_url if relative
* Fix the misspelling of "connection"

3.4.0
-----

* Cache empty branch config to prevent spurious reconfig
* Be more aggressive in canceling node requests
* Fix items stuck in queue pending node requests
* Remove unecessary finally clauses
* Switch back to three columns for mid sized screens
* Fix skipped job counted as failed
* Document missing executor stats
* Add timer for starting\_builds
* Adds ServerAliveInterval to ssh\_args to prevent frozen connections
* Fix container job documentation typo
* Add cgroup support to ram sensor
* Delay Github fileschanges workaround to pipeline processing
* Add governance document
* web: add errors from the job-output to the build page
* web: refactor build page using a container
* web: refactor build page to use a reducer
* web: refactor nodes page to use a reducer
* web: add nodes page
* web: refactor labels page to use a reducer
* web: add labels page
* web: refactor job page to use a reducer
* web: add project page
* web: update status page layout based on screen size
* web: refactor projects page to use a reducer
* web: add projects page
* web: refactor change page to use a reducer
* web: add change status page
* Use gearman client keepalive
* Fix node leak when skipping child jobs
* Only reset working copy when needed
* Modify some file content errors
* executor: add support for generic build resource
* Add spacing to Queue lengths line
* Add type check for zuul conf
* Add a statsd check for clashing keys
* Rework zuul nodepool stats reporting
* Fixed the necesssary to necessary
* Fixed the word from congfiguration to configuration
* Consider shared changes queues for relative\_priority
* Cap mypy
* Add nodepool.host\_id variable to inventory file
* Use combined status for Github status checks
* Add default value for relative\_priority
* Read old json data right before writing new data
* web: refactor tenants page to use a reducer
* web: refactor job page to use a reducer
* web: refactor jobs page to use a reducer
* Add instructions for reporting vulnerabilities
* Don't calculate priority of non-live items
* dict\_object.keys() is not required for \*in\* operator
* web: refactor status page to use a reducer
* Fix ignored but tracked .keep file
* web: add error reducer and info toast notification
* web: refactor info and tenant reducers action
* web: break the reducers module into logical units
* Only count live items for relative priority
* Fix updating relative priority
* Remove nodeid argument from updateNode
* Set relative priority of node requests
* Fix "reverse" Depends-On detection with new Gerrit URL schema
* Clarify executor zone documentation
* Add support for zones in executors
* More strongly recommend the simple reverse proxy deployment

3.3.1
-----

* Add artifact table
* Use the SQLAlchemy ORM
* web: fix ref column value for newrev
* Fix stuck job caused by exception during repo update
* Remove uneeded if statement
* executor: harden add\_host usage
* Remove STATE\_PENDING
* Add gearman stats reference
* Add allowed-labels tenant setting
* Do a proper wait for zuul at quickstart
* Add support for Gerrit v2.16's change URL schema
* Retry queries for commits
* Fix manual dequeue of github items
* Add config parameters for WinRM timeouts
* Display ref instead of NA for time triggered items
* Improve resource usage with semaphores
* Quick-start: set content-type header on ssh key upload
* Use publish-zuul-python-branch-tarball job
* Setup model before connection
* Handle existing .ssh dir on merger
* Add allowed-triggers and allowed-reporters tenant settings
* encrypt\_secret: support self-signed certificates via --insecure argument
* Fix reporting ansible errors in buildlog
* doc: fix typo in secret example
* Add ignore\_basepython\_conflict option to tox.ini
* Improve windows logging
* Don't do live streaming in loops
* Merger: automatically add new hosts to the known\_hosts file
* Resume paused job with skipped children
* web: uses queues uid to preserve state on change
* Small script to scrape Zuul job node usage
* Use doc/requirements.txt
* Fix flake 3.6.0 warnings
* Remove vars assigned to but never used
* quick-start: add a note about github
* Collect docker logs after quick-start run
* Filter file comments for existing files
* Fix issue in Github connection with large diffs

3.3.0
-----

* Pin flake8
* Run zookeeper datadir on tmpfs during testing
* Fix GitEventFilter.\_\_init\_\_
* Exclude .keep files from .gitignore
* encrypt\_secret: support OpenSSL 1.1.1
* Temporary fix for race in quick start job
* Use zuul/nodepool-launcher container for docker-compose
* Fedora docker-compose fixes for selinux
* Fix periodic job display in builds page
* Indicate whether a build is voting in the logs
* Add more information to build page
* Simplify Builds page
* Add mysql to quick-start
* web: Increase height and padding of zuul-job-result
* Handle missing node during hold check
* Provide some accounting of node usage in logs
* Add Zuul to zuul-quick-start
* Add status page to the quick-start
* Use zuul/web/static in setup\_hook
* Add line to setup.cfg limiting to python >=3.5
* Remove unneeded cruft from bdist\_wheel fix attempts
* Add \_\_init\_\_.py to web directory
* Retry jobs failed with MERGER\_FAILURE
* Check paused parent on node failure of child job
* Quick-start: switch to polygerrit
* Build new container images for quick-start
* Quick-start: remove ansible Dockerfile
* Remove disable-recommends in quick-start test
* Fixes for quick-start playbooks
* Add a quick-start test job
* Added steps to install docker for all distros
* Do only one status request at a time
* web: use PUBLIC\_URL instead of package.json patch
* Optionally disable service worker in zuul-web
* Fix broken code block in the docs
* web: fix stream url from status json
* web: add config-errors notifications drawer
* web: add job page
* web: add build page
* web: use window.location in TableFilters to keep sub-url path
* builds: set missing start/end time for node errors
* Reorganize admin manual
* Include enqueue and report timestamps in MQTT msg
* web: expand status panels only when the header is clicked
* web: fix support for comma/space separated status filter
* web: fix hamburger menu collapse
* web: prevent filter being cleaned on status reload
* web: fix zuul-build-dashboard homepage setting
* web: fix multiple builds query parameters for a single column
* Add docker-compose quickstart example
* Use merger to get list of files for pull-request
* Fix pbr setup hook
* Revert "Revert "web: rewrite interface in react""
* Make sure javascript output is in wheel
* Parallelize prime\_installation\_map
* Run release-zuul-python on release
* Add role path to JSON result in callback plugin
* Revert "web: rewrite interface in react"
* Fix publish-openstack-javascript-content
* Also retry the job if a post job failed with unreachable
* Fix unreachable nodes detection
* Add coreutils to bindep on platform apk
* web: rewrite interface in react
* Uncap cherrypy
* Improve docs for inventory\_file
* Speed up build list query under mysql
* Don't report non-live items in stats
* Fix node leak on job removal
* Doc: executor operations - explain jobs will be restarted at restart
* Doc: executor operations document pause, remove graceful
* Web: don't update the status cache more than once
* Add support for authentication/STARTTLS to SMTP
* Update docs theme logo
* replace dict.update by a dict merge in zuul\_return
* Correct Last-Modified header for status API
* Autohold on timeout
* Use tox-docs directly
* web: add /{tenant}/nodes route
* web: add /{tenant}/labels route
* web: add /{tenant}/pipelines route
* web: add /{tenant}/projects and /{tenant}/project/{project} routes
* Correctly show remaining time as unknown
* docs: Add compile profile to bindep
* Reload tenant in case of new project branches
* python3: Can't have unbuffered non-binary I/O
* Include executor variables in initial setup call
* Need SSH client for Ansible
* Remove restriction on add\_host
* Serve project SSH keys and document
* Provide per-project ssh key to executor
* Create per-project ssh keys
* Change project.private\_key to private\_secrets\_key
* Add private key storage migration
* Cap cherrypy and uncap sphinx
* Add a sanity check for all refs returned by Gerrit
* Fix typo in documentation chown commands
* Display correct cursor when hovering over patchset header
* The argparse type of node-hold-expiration is int
* Add missing parentheses to title invocation
* Update docs build job
* Add container push job
* Add 'build' method to API
* Map file comment line numbers
* Remove non-working html code in div container
* Fix reject clauses in the absence of approvals
* Fix race in test\_crd\_check\_unknown
* Fix web content copying in multi dashboard job
* Fix permanently broken git cache
* web: fix job required-projects list
* Cache branches in connections/sources
* Add command socket handler for full reconfiguration
* encrypt\_secret: Allow file scheme for public key
* Scope config line comments to change
* Support job pause
* Add request reference when hitting a node failure
* timer: do not skip projects using pipeline from template
* Use full gerrit changeid in HTTP report
* Add information to Ref and TimerTrigger repr
* web: add /{tenant}/job/{job\_name} route
* Switch storyboard url to be by name
* Fix wrong matched project template
* Use copy instead of symlink for multi-tenant dashboard
* Add support for line comment ranges
* Report config errors as line comments
* Support line comments in Gerrit
* Add openstacksdk to executor extras
* Point Suse users are zookeeper releases page

3.2.0
-----

* Add instructions for deploying zuul with openSUSE
* scheduler: return project\_canonical in status page
* Add a dequeue command to zuul client
* Report to gerrit over HTTP
* Use definition list for job status
* Add variables to project
* Restructure return values section in docs
* Add support for Ansible extra-vars flag
* Support complex data structures as secrets
* Remove unecessary shebang and exec bit
* Rename didAnyJobFail() to hasAnyJobFailed()
* doc: Move zuul variable references to a section
* Default to 0o022 for python-daemon
* Fix zuul reporting build failure with only non-voting jobs
* Add container spec
* Add tenant yaml validation option to zuul client
* Fix delegate\_to for ansible synchronize
* Add remote tests for synchronize
* Fix indentation of executor monitoring docs
* Delete stale jobdirs at startup
* Emit a log line containing version info around startup
* fix zuul from scratch user and group creation
* Fix github setup in zuul from scratch
* Remove redhat-rpm-config bindep
* Docs: add a cross-ref in secrets
* dashboard: make ZuulService load info api to manage paths
* Install less than alpine-sdk
* Specify a prefix for building the images
* Build container images using pbrx
* Per-branch management of unparsed config cache
* Reduce number of reconfigurations on branch delete
* github: add event filter debug
* Cache decryption results
* Add debug message to job freezing
* Log cpu times of ansible executions
* scheduler: fix enqueue event to use canonical project name
* Stop publishing docs to docs.openstack.org
* client: show subcommand propose a more meaningful help message
* Fix broken templates for projects in dependent pipelines
* zuul-web: config\_errors endpoint: return 404 when tenant not found
* Add alpine packages to bindep.txt
* zuul-web: jobs list endpoint: Add test and fix tenant not found 500 error
* zuul-web: jobs list endpoint: return 404 when tenant not found
* gerrit: rstrip baseurl trailing /
* Fix line numbers in job repr
* github: prevent AttributeError when missing branch protection
* zuul-web: key endpoint: return 404 when tenant or project not found
* timer: skip projects not using the pipeline
* Report config errors when removing cross-repo jobs
* Fix incorrect API URL for project key
* Require tenant in Pipeline constructor
* Fix job contamination by unmerged change
* Update bindep file with compile profiles
* Fix GitHub branch protection test
* Add test facility to add file contents in github tests
* Change "core developer" reference
* Fix source context in split config
* Support zuul.child\_jobs via zuul\_return
* Sync zuul from scratch github app settings
* Make GitHub rate limit logging configurable
* Reduce requests to github when listing project branches
* doc: re-order GitHub Application configuration
* Fix logging of clone url
* Fix secret example yaml
* Delete redundant code
* Split test\_dynamic\_conf\_on\_broken\_config
* executor: change execution log to INFO
* model: fix AttributeError exception in freezeJobGraph
* gerrit: use baseurl for change uris lookup
* zk: retry initial zookeeper connection attempts
* Enable heartbeat on websocket streaming
* Add zuul.child\_jobs in ansible inventory file
* Shift log streaming code into StreamComponent
* Translate zuulStartStream into typescript
* web: fix status page flickering
* Consolidate navigation functions
* Fix typos in docs
* Remove credentials from urls in merger log
* Add min\_avail\_hdd governor for zuul-executor
* Don't add implied branch matchers to project-pipeline variants
* Use window.location.href for the href not pathname
* Revert "Revert "Upgrade from angularjs (v1) to angular (v6)""
* executor: add inventory\_file path to the zuul.executor job variable
* Revert "Upgrade from angularjs (v1) to angular (v6)"
* Support paging when listing github installations
* Add /etc/localtime to bubblewrap default ro bind
* Fix missing dequeue on synchronized pull request
* Add pause function to executor
* Improve logging of GithubTriggerEvents
* Log more information about what events trigger a reconfig
* Fix branch parsing in \_event\_pull
* gerrit: cast change and patchset numbers to str
* Fix race in tox-remote test\_command
* Make streaming test run longer than connection timeout
* Fix indent error for layout.yaml-sample
* Add a CVE-2018-12557 release note
* Don't reconfigure tenant on unprotected branch pushes
* Move exclude unprotected branches check into tenant
* Improve test case test\_unprotected\_branches
* configloader: skip merger:cat when no items are included
* Add ansible 2.5 release note
* Add missing \_\_init\_\_.py files
* Rename action-general to actiongeneral
* Remove failed\_when when creating /tmp/console-None.log
* Add supercedent pipeline manager

3.1.0
-----

* Remove extra argument when logging logger timeout
* Revert "Temporarily override Ansible linear strategy"
* Fix log streaming for delegated hosts
* Move zuul\_log\_id injection to command action plugin
* sql: use a declarative base model
* Allow zuul\_return in untrusted jobs
* Add test for shell after include\_role
* Temporarily override Ansible linear strategy (2/2)
* Temporarily override Ansible linear strategy (1/2)
* Log github delivery ids properly
* Clarify usage of the zuul\_success variable
* Fix information disclosure caused by unreachable nodes
* Add blocks to the zuul stream test
* Fix command tasks with free play strategy
* Fix broken command tasks in handlers
* Revert callback fixes
* Fix command tasks with free play strategy
* Fix broken command tasks in handlers
* Hide queue headers for empty queues when filtering
* Switch content type of public keys back to text/plain
* Add .stestr to .gitignore
* Add a config\_errors info to {tenant}/config-errors endpoint
* Fix signature of overridden methods in LogStreamHandler
* Accumulate errors in context managers - part 2
* Change test prints to log.info
* Also cache empty unparsed config
* Improve logging around tenant reconfiguration
* Fix tox-cover
* Upgrade from angularjs (v1) to angular (v6)
* Don't use GRANT to create new MySQL users
* Refactor load sensors into drivers
* Accumulate errors in context managers
* Add timestamps to multiline debug message logs
* Ensure cherrypy listen port is int type
* Handle websocket client hangups better
* Fix zuul-web sql connections
* Handle more than one websocket streamer at a time
* Remove unnecessary method in test\_slow\_start
* Treat ::1 as localhost in addition to 127.0.0.1
* Fix race in slow start test
* Fix remote stream log test
* Disable rewriting links in status page with HTML5 mode
* github: Optimize getPullReviews() a bit
* Fix bwrap leak test
* Cleanup log streaming error handling
* Disable timeouts on the log streaming connection
* Make Zuul able to start with a broken config
* Handle multiple stats in assertReportedStats
* Add cherrypy to built-in logging config
* Stop scheduler more quickly
* zuul-migrate: run / post-run playbooks need .yaml extensions
* Remove getRepoPermission from FakeGithubConnection
* Status branch protection checking for github
* docs: add Project Testing Interface guide
* Cleanup unused connection.getWebController info param
* Make file matchers overridable
* Use ZuulWebFixture in tests
* Use iterate timeout in streaming tests
* Convert streaming unit test to ws4py and remove aiohttp
* Replace use of aiohttp with cherrypy
* Add never\_capture test decorator
* Move SQL web handler to driver
* Enable HTML5 mode and remove hash prefix for status
* Remove unnecessary injections
* Add the ability for a user to skip macros
* Add missing pathlib dependency
* Allow for projects only names in zuul-migrate
* Allow templates to be optional for zuul-migrate
* Support databases on other hosts during tests
* Don't process lock files as refs in tests
* Remove getPullBySha from FakeGithubConnection
* correct github review approval type is \`approved\`
* Limit search scope of getChangesDependingOn to tenant
* Optionally record created github clients in tests
* Test parent-change-enqueued with github
* Extend github testing using app auth
* Fix new depends-on format matching for prefixed gerrit ui
* github: Do not process comment events for regular issues
* Add documentation about using the badge
* Add more explanatory text to zuul-from-scratch
* Revert "Revert "Switch to stestr""
* Fix race in test\_reconfigure\_window\_fixed
* Support merged as requirement in github driver
* dont wait infinitely for the connection to zuul\_console server
* Gracefully handle broken .gitmodule files
* Gracefully handle corrupt local git repositories
* Improve logging around project branches
* Update to Ansible 2.5
* Test more action modules
* Add role information to task in zuul\_json callback
* Only emit parent-change-enqueued if needed

3.0.3
-----

* Add additional steps for configuring Zuul services on CentOS 7
* Add tox-py36 jobs
* Pin async-timeout
* Add logo to docs
* Add CentOS 7 environment setup instructions
* Don't validate references for excluded config items
* Don't create db accounts unencrypted
* Update documentation URLs
* Fix race in test\_bubblewrap\_leak
* Fix layout generation for trusted projects
* mqtt: add basic reporter
* Add start and end timestamp to task and play result in zuul\_json callback
* Fix regex project templates
* Fix setting a change queue in a template
* Add additional steps for configuring Nodepool service on CentOS 7
* Pin yarl for python < 3.5.3
* Install g++ on platform:rpm
* Add release note about config memory improvements
* Add waits to test\_nodepool\_priority
* Freeze regex projects
* Inventory groups should be under children key
* Increase unit testing of host / group vars
* Fix host\_vars
* Don't generate layouts on non live items
* Skip attempting python3-devel installation on CentOS 7
* Add zuul systemd drop-in files for CentOS 7
* JSON serialize mappingproxy types
* Fix zuul systemd files
* Coerce MappingProxyTypes in job vars to dicts
* Add regex support to project stanzas
* Fix some code description
* Add debug info to test\_slow\_start
* Add release note about re2
* Report git sha in status page version
* Simplify UnparsedConfig.copy
* Remove source\_context argument to Pipeline
* Stop deep-copying job variables
* Cache configuration objects in addition to YAML dicts
* Store source context on all config objects
* Change TestMaxTimeout to not run ansible
* Remove 'base' from UnparsedAbideConfig
* Remove layout from ParseContext
* Make config objects freezable
* Late bind projects
* Perform late validation of nodesets
* Perform late validation of secrets
* Fix race in test\_bubblewrap\_leak
* Allow extra time for some ansible tests
* Sometimes GitHub doesn't return repo permissions
* Fix zuul home directory in zuul from scratch document
* reporter: do not expect branch attribute in Tag object
* Pin node to version 8: LTS stable
* Don't try to delete non-existing local refs

3.0.2
-----

* Trivial: Update pypi url to new url
* Store build start/end time in UTC
* Don't store references to secret objects from jobs
* Update test instructions
* Make gearman calls async in ZuulWeb
* Make gearman queries asynchronous in github driver
* Update encrypt\_secret to be API aware
* Remove extra words from gerrit setup docs
* Test base job secrets
* docs: add build status documentation
* Don't count non-live queue items in tenant list
* Support regex matching of github status
* Add sample systemd service files
* Add static driver doc to Zuul From Scratch
* Tell geard to use keepalives
* Don't create ci test admin login unencrypted in postgres
* Align github status tests with real behavior
* Fix documented PID file defaults
* Add Gerrit docs to Zuul From Scratch
* Remove docker instructions and build:docker helper command
* Clean up developer javascript instructions
* Remove zuul-tox-py35
* Use nodeenv for npm and yarn in tox
* Publish docs in release pipeline
* Remove zuul-cloner command
* Fix implicit role for repos named ansible
* zuul-changes: update for the new api url
* configloader: add variant-description

3.0.1
-----

* Reorganize "Zuul From Scratch" document
* gerrit: recognize project-created event
* Add postgresql release note
* Also prefix the alembic\_version table
* Reformat tenant\_config\_script release note
* Make db queries asynchronous in zuul-web
* Add test for builds/ web route
* Fix docker command in javascript docs
* Update mysql fixture for modern mysql
* Update pypi metadata
* Fix missing semaphore release on zk error
* Update in-development releasenotes title
* Upgrade to webpack 4
* Remove initial release note
* Add tests for postgresql
* Fix sql reporting with postgres
* Also prefix the indexes if needed
* Prefix existing indexes
* Fix streaming test ports
* Update Github3.py to 1.1.0
* Fix streaming decoding boundaries
* Allow using remote refs to find commits for change
* Remove openstack-infra reference
* Make reject a mirror of require for github
* Add branch to Zuul dashboard
* Check out more appropriate branches of role and playbook repos
* Allow some plugins to read from playbook dir
* Disable action and lookup plugins from 2.4
* Update to Ansible 2.4
* Move tmpdir into work root
* Add winrm certificate handling
* Tenant config can be read from an external script
* Report to all reporters even if one fails
* Add clarity to \*Zuul from Scratch\* instructions
* Cleanup use of mock package in for python2

3.0.0
-----

* Update github payload location docs
* Remove rest\_api\_url from info payload
* Use reno for release notes
* Improve root api endpoint finding
* Use latest release of github3.py
* Use git.zuul-ci.org
* Reorganize REST API and dashboard urls
* Remove nullwrap config option
* autohold: prevent using ',' in change argument
* Use requests instead of urllib.request in tests
* Rename javascript package to @zuul-ci/dashboard
* Switch implicit role not found message to debug
* Add selinux flag to docker command
* Fix gerrit connection references
* zuul autohold: allow operator to specify nodes TTL
* Update to statsd 3.0
* Handle a float in assertReportedStat
* fix typos in documentation
* Add missing localhost delegation checks to some modules
* Publish zuul docs to zuul-ci.org
* Add autohold debug info
* Add port to webhook URL in Zuul github driver docu
* Clarify location of depends-on footer
* Add license and downgrade exception to alembic template
* Allow external zookeeper in tox py35 runs
* Return CORS headers on all requests
* Enable autohold for RETRY\_LIMIT / POST\_FAILURE
* Fix zuul-web port in zuul-from-scratch doc
* Revert "Switch to stestr"
* Add zuul-stream remote tests
* Remove empty sections from docs
* Update README and add GPL license
* Switch to stestr
* Fix plugin injection vulnerability
* Fix builds queued forever after failure to get node request
* Add standard ca certificate paths
* Ignore node\_modules in flake8
* Update metadata for pypi
* Fix no\_log bug with result lists
* Generate symlinks during tests
* Revert "Don't store references to secret objects from jobs"
* Fix safe path check for directories containing symlinks
* Decode gearman function into utf
* Fix zuul\_json callback plugin problem with loops
* Add zuul\_json tests
* Add zuul-tox-remote to gate pipeline
* Add test for fingergw on ipv4 / ipv6 addresses
* Fix [Errno -9] Address family for hostname not supported
* Make sure we fail because of path checks
* Remove superfluous regexp matcher from assemble test
* Fix error in test\_jobs\_executed
* Allow trusted for find\_needle
* Add further test cases to tox-remote
* Fix safe path checks
* Add new tox-remote job
* Pin github3.py revision
* Serve the static files more dynamically
* Use bootstrap 3.1.1 instead of 3.3.7
* configloader: check for unknown shadow projects
* Fix console stream colors
* Add queue size to tenant overview
* Update jquery to version 3
* Actually honor the static\_path config value
* Support pagination in the installation map
* Revert "Switch to publish-openstack-javascript-tarball"
* Normalize hostname for statsd
* Switch to publish-openstack-javascript-tarball
* Set node version for javascript publish job
* Support brew for installing the js tools
* Match github model of granting admins write
* Import Zuul modules at top of files
* Use yarn and webpack to manage zuul-web javascript
* Allow get\_mime: False on localhost
* Make Info.endpoint a config override
* Skip autohold if no autohold was requested
* Unset finger client timeout after connect
* sql: add buildset.branch column
* Error when enqueue-ref doesn't get long enough rev
* Don't store references to secret objects from jobs
* Remove support for erroneous host\_vars and group\_vars
* Correct hyphenation in host/group vars
* Add nodepool-zuul-functional as non-voting check job
* Make test-logs.sh more convenient to use
* Remove Paste from the dependencies
* Use a status code to detect unknown vs. missing tenant
* Avoid creating extra project schemas
* Allow test\_playbook to run long
* Add /info and /{tenant}/info route to zuul-web
* Re-enable test of returning 404 on unknown tenant
* Port per-change status to zuul-web
* Remove .json suffix from web routes
* Remove project.unparsed\_config
* Fix typo in PragmaParser
* Add ParseContext class
* Remove tenant argument from UnparsedTenantConfig
* Add ConfigLoader initializer
* Make TenantParser a regular class
* Make SemaphoreParser a regular class
* Make PipelineParser a regular class
* Make JobParser a regular class
* Add post-timeout setting
* Make SecretParser a regular class
* Make NodeSetParser a regular class
* Remove tools/nodepool-integration-setup.sh
* Remove install-distro step for nodepool integration
* Fix nodepool-zuul-functional
* Fix nodepool integration tests
* Add host/group vars
* Invert executor ram statsd metric
* Fix branch deletion after failed reconfig
* Ensure only python3 is installed with bindep.txt
* Fix self fulfilling empty node requests
* Set remote url on every getRepo in merger
* Add abstract job attribute
* Reclassify some debug log lines as info
* Add zuul from scratch doc
* Make timeout value apply to entire job
* Cap aiohttp <3.0.0
* Fix broken fail\_json in zuul\_console
* Don't decode str in LogStreamingHandler
* Remove unused method checkoutLocalBranch
* Emit a warning when using unsafe public key url
* Move autohold processing into separate method
* Make min\_starting\_builds a heuristic
* Add doc for executor state\_dir
* Support autoholding nodes for specific changes/refs
* Handle debug tasks more robust in zuul\_stream
* Run zuul-stream-functional on every change to ansible
* Extend stackdump to display the daemonize status
* Cleanly shutdown zuul scheduler if startup fails
* Add Executor Merger and Ansible execution statsd counters
* Do not call merger:cat when all config items are excluded
* Add tenant project group definition example and definition in the doc
* Fix stuck node requests across ZK reconnection
* Use nested tempfile fixture for cleanups
* Sync when doing disk accountant testing
* Allow a few more starting builds
* Update nodepool-integration for Zuul v3
* Increase test timeout
* Enhance github debugging script for apps
* Fix github connection for standalone debugging
* Fix AttributeError when handle periodic job with github driver
* Use getfqdn instead of gethostname
* Add facility for plugins to register web routes
* Executor: Don't start too many jobs at once
* Don't use run\_lock in executor's merger
* Merger: Stop storing zuul references
* Fix missing min\_avail\_mem in memory governor
* Zuul: Remove project name
* Fix runtime stats reporting for noop job
* Add available RAM to statsd
* Support the fragment form of Gerrit URLs
* Merger: retry network operations
* Enabled ssh retries for ansible
* Fix lazy initialization of GithubUser with apps
* Fix statsd documentation about events
* Add memory awareness to system load governor
* Remove webapp
* Move status\_url from webapp to web section
* Move github webhook from webapp to zuul-web
* Don't override allowed-projects
* Fix cross source dependencies for github
* Use override-checkout to select jobs
* Update docs to use sphinx-build
* Prune stale branches from mergers
* Remove pep8 and pyflakes from test-requirements
* Remove python-keystoneclient from test-requirements
* Clarify uniqueness of some config items
* Add change information to Build Completed log message
* Fix a copy-pasta in a comment
* Revert "Register term\_handler for all zuul apps"
* Retry more aggressively if merger can't fetch refs
* Correctly document default git dirs
* Don't rely on canonical hostnames for CRD
* executor: block stat get\_mime on localhost
* ansible: honor command no\_log module attribute
* requirements: remove paramiko <2.0 cap
* scheduler: better handle format status error
* pep8: ignore E124 rule
* Add noop job description
* Remove zuul.\_projects
* Normalize semaphore branch handling
* Handle nodesets in branches
* Handle secrets in branches
* Remove feature/zuulv3 references from README
* Replace master with feature/zuulv3
* Document connection information for components
* Stabilize git driver tests
* Fix dependency cycle false positive
* Stop running tox-cover job
* Remove updateChange history from github driver
* Documentation changes for cross-source dependencies
* Add cross-source tests
* Support cross-source dependencies
* Temporarily pin yarl while aiohttp is broken
* Add skipped CRD tests
* Really change patchset column to string
* Remove need to start executor as root
* Move CRD tests to test\_gerrit\_legacy\_crd
* Fix error handling for pidfile
* Add alembic.ini
* Change patchset column to string
* Link to zuul-base-jobs docs from User's Guide
* Use hotlink instead log url in github job report
* Share a fake pull request database across connections
* Fake more of the github3 api
* Don't treat finger client disconnect as exception
* Disambiguate with Netflix and Javascript zuul
* Don't remove builds that don't exist
* Strip \r from build UUID in fingergw
* Handle invalid build UUID in finger gateway
* Add --strip option to encrypt\_secret.py
* Add specific setup inventory
* Register term\_handler for all zuul apps
* Make ZuulDaemonApp an abstract base class
* Centrally register stack dump handler
* Remove unused method term\_handler
* Enable direct use of github driver in debug tool
* Fix indentation on debug statement
* Really fix canonical/non-canonical project merge
* Add implicit project name matching
* Add zuul-web tests equivalent to the webapp tests
* Remove github delay
* Reprime the installation map in getGitUrl if needed
* Add github debugging template
* Fix github caching
* Use connection type supplied from nodepool
* Fix docs building
* Fix misleading message about statsd not installed
* Handle sigterm in nodaemon mode
* Use python3 for docs publication
* Add support for protected jobs
* Fix doc typo
* Update sphinx jobs to use python3
* Add the project to GithubUser
* Fix github app authentication in \_getNeededByFromPR
* Use configured github server in app mode
* Initialize github auth in getGitUrl if needed
* Correctly use project name in getGitUrl
* Git driver
* encrypt\_secret: remove the trailing '/' when building url
* Remove unused function validate\_conf
* web: remove 'id' column from builds page
* web: fix key request route
* Add debug project-pipeline option
* Add implied-branches pragma directive
* Fix nit in fingergw doc
* Send open CORS header for jobs and builds
* Docs: group matchers together and explain them
* Add finger gateway
* doc: refine zuul\_return instruction
* Drop local fork of GitPython for 2.1.8 release
* Error on duplicate YAML keys
* Add more job selection debug lines
* Debug job selection
* Fix attribute syntax in docs
* Fix line wrapping in github docs
* Remove unused setup\_tables
* Support table prefix for sql reporter
* Remove large status header and tagline
* Web: Drop some columns from build list
* Serve keys from canonical project name
* Make all zuul-web urls relative
* Add command socket support to zuul-scheduler
* Move send\_command() into ZuulApp
* Add command\_socket setting to executor section
* Add command socket support to zuul-merger
* Rename ssh\_port to connection\_port
* Fix zuul.projects type in docs
* Add stackdumphandler to zuul-web
* web: add /{source}/{project}.pub route
* web: make console-stream tenant scoped
* web: add /{tenant}/builds route
* web: add /{tenant}/jobs route
* Correct exception for missing job dependencies
* Remove implied playbook extensions
* Update playbook paths with extension
* Remove file extension when building SimpleLayout
* Fix implied branch matchers and tags
* Fix complex branch matchers in project configs
* tox: remove validate-layout
* Fix scheduler reconfiguration handler
* Don't set job var override\_checkout if null
* Don't shrink windows on reconfiguration
* Print a message when we start the Zuul console
* Convert zuul.projects to a dict
* Remove nodesets from builds canceled during reconfiguration
* Changes for Ansible 2.4
* Fix mixed canonical/non-canonical project merge
* Normalize daemon process handling
* Fix branch checkout order
* github: add integration documentation
* web: add Cache-Control to static files
* Combine branch templates and pipeline branch matchers
* Correctly stream the remaining buffer
* Use username from node information if available
* Add inventory variables for checkouts
* web: add /static installation instructions
* Add support for shared ansible\_host in inventory
* Make enqueue-ref <new|old>rev optional
* More documentation for enqueue-ref
* Remove tools/trigger-job.py
* web: add /{tenant}/status route
* web: add /tenants route
* Switch to threading model of socketserver
* Make encrypt\_secret.py work with OpenSSL 0.x
* Prime github app install map on connection load
* Fix gerrit branch creation detection
* Improve error handling in webapp /keys
* On reconfiguration, re-enqueue items at the same position
* Use user home as work directory of executor
* Check start time for wait\_time key
* Add support for override-checkout, deprecate override-branch
* Remove zuul-migrate job
* Fix syntax with gear unRegisterFunction()
* Zuul: add file extension to playbook path
* Use cached branches on tenant reconfiguration
* Add multi-branch support for project-templates
* Increase github delay to 10 seconds
* Do late decoding of log stream buffer
* Validate that a job has a run playbook on freeze
* Remove implied run
* Update test fixtures to use explicit run
* Support file extension in playbook path
* Add pragma directive
* Move test\_job\_auth\_inheritance to test\_v3
* Copy Gerrit delay to GitHub driver
* Switch to late-binding inheritance
* Add implied branch matchers on 'master'
* Make the git web url a template
* Default change and patchset to NULL in SQLReporter
* Remove test\_job\_inheritance
* Move test\_model.test\_job\_inheritance\_configloader
* Create job-output.txt together with JobDir
* Fix branch ordering on dynamic reconfiguration
* Add log streaming logging and exception handling
* Document executor/merger stats
* Only autohold failed builds
* Fix undefined sort order when applying parent data
* Fix for pep8 E722 and ignore E741
* Fix typo, it's branches
* Report initial pipeline changes under correct key
* Add stats for executor and merger count
* Fix doc typo
* Ignore duplicate project-template definitions
* Stop storing dependent items on buildsets
* Make tests' encrypt\_secret.py work with python3
* Change domain in test fixture to example.com
* Remove unused function toList from scheduler
* Re-enable test\_zuul\_trigger\_project\_change\_merged
* Add management queue length to status page
* Add \_projects to convert project list to dictionary
* Remove old buildsets
* Give layout objects a unique ID
* Add management event queue length to status json
* Revert "Use weakref for change cache"
* Fix branch ordering when loading in-repo config
* Don't set the build result to ABORTED
* Be explicit about legacy var additions/omissions
* Don't return POST\_FAILURE when aborting post playbooks
* Several executor threading fixes
* Make executor hostname configurable
* Add support for result data in child jobs
* Set ansible stdin to /dev/null
* Executor: stop jobs in parallel on shutdown
* Fix ref calculation for ZUUL\_CHANGES legacy var
* New client command for printing autohold requests
* Start ssh persistent connections outside bwrap
* Allow the pool\_recycle to be configured
* Move alembic\_reporter back to alembic
* Clarify how the sql database is managed
* Disable sql\_reporter alembic downgrades
* Ignore parents on job variants
* Fix python3 unicode errors in executor server
* Use weakref for change cache
* Make statsd import failure raise exception
* Emit some nodepool stats
* Emit some stats from executor
* Re-order executor/job classes
* Specify duplicate project defn behavior
* Switch statsd config to zuul.conf
* Remove -e from requirements
* Better exception handling during autohold
* Switch success to false if a post playbook fails
* Fix doc typo that missed important words
* Grab json log contents for final post playbook failures
* Add comment explaining gitpython requirement
* Mask dependent config errors
* Add git timeout
* Revert "Use new infra pipelines"
* Revert "Use new infra pipelines"
* Update statsd output for tenants
* Don't use cached config when deleting files
* Don't modify project-templates to add job name attributes
* Verify aborted jobs don't count into retry limit
* Provide error message on malformed job list
* Update node requests after nodes
* Fix early processing of merge-pending items on reconfig
* Don't load dynamic layout twice unless needed
* Don't store pipeline references on builds
* Always retry jobs on executor disconnect
* Have zuul re-run ABORTED jobs
* Return a distinct result on executor disk full
* Handle non-syntax errors from Ansible
* Properly format messages coming out of emitPlaybookBanner
* Handle double node locking snafu
* Fix path exclusions
* Create git\_http\_low\_speed\_limit / git\_http\_low\_speed\_time
* Add git timeout for HTTP(S) operations
* Use normal docs build jobs
* Speed configuration building
* Avoid JS error when a change has no id
* Explicitely print the result status of each playbook run
* Include tenant in pipeline log messages
* Use new infra pipelines
* Use new infra pipelines
* Improve scheduler log messages
* Clear project config cache later
* Move shadow layout to item
* Fix branch matching logic
* Fix Gearman UnknownJob handler
* Increase ansible internal\_poll\_interval
* Change yappi bytesio to stringio
* Add debug messages and exception handling to stack dump handler
* Add objgraph to SIGUSR2
* Switch to using publish-openstack-sphinx-docs-infra
* Do not add implied branch matchers in project-templates
* Limit concurrency in zuul-executor under load
* Protect against builds dict changing while we iterate
* Handle build\_set being None for priority
* Map pipeline precedence to nodepool node priority
* SourceContext improvements
* Fix bug with multiple project-templates
* Update zuul-changes script for v3
* Add inheritance path to zuul vars
* Always try to unlock nodes when returning
* Add zuul supplementary groups before setgid/setuid
* Fix sql reporting start/end times
* Only add BUILD\_TIMEOUT if there is a timeout
* Set BUILD\_TIMEOUT environment variable in zuul\_legacy\_vars
* Wait up to 30s to lock a node
* Add ZK session timeout option
* Improve debug logging around dynamic layout loading
* Remove "Applying template" log line
* Delay executor noop packets
* Parent legacy jobs with artifacts legacy-publish-openstack-artifacts
* Add an additional pass through project templates
* Add oldrev/newrev column to the buildset reporter table
* Add ref\_url column to the buildset reporter table
* Add projects.required to zuul vars
* Run ansible setup at start of job to verify network
* Remove superfluous writeProject() call

2.6.0
-----

* Put legacy jobs down a directory level into workspace
* Fix race in test\_in\_repo\_branch
* Remove var override for docs publish job
* We should await ws.send\_str()
* Don't output cat file contents during reconfig
* Return stream log message on finger client failure
* Don't emit yaml suffixes in run and post-run lines
* Handle unknown project-template error
* Consume project templates correctly in projects
* Add local file copying steps
* Sort fields in post playbook
* Set a max on timeout
* Sort list of required projects
* Rename outfiles to zuul- to match rollout
* It's branches, not branch
* Sort output in generated legacy files
* SourceContext: add same\_project comparison
* zuul.yaml: Change Job.nodes to nodeset
* Don't log file contents when loading dynamic layouts
* Don't double quote rsync options
* Switch to build-openstack-infra-sphinx-docs for doc build jobs
* Actually, you know, return the timeout
* Append / to end of ansible\_user\_dir for rsync src
* Re-add the mapping for logs/$LOG\_PATH
* Use zuul | zuul\_legacy\_vars for legacy environment
* Fix create\_branch in tests
* Use legacy-base job for base of all converted jobs
* Put shell snippets into task.shell.cmd
* zuul-web: refactor LogStreamingHandler to keep a single rpcclient
* Correctly apply irrelevant-files to simple job names
* Report friendly errors when nodeset/secrets missing
* Remove Job.nodes
* Don't emit net-info macro
* Fixed a few earlier review nits
* Migrate node information to nodeset instead of nodes
* Add support for puppet-openstack-integration based jobs
* Use legacy-dsvm-base as base job for dsvm jobs
* Support zuul-cloner command line arguments
* Extract required projects from embedded clonemaps
* Allow dict-based new jobs to have templated names
* Extract required-projects from job content
* Migrate docs-draft jobs to emit to logs/html
* Deal with link-logs macro
* Omit some jobs from shared queue calculation
* Emit shell instead of script tasks
* Use publish-docs-draft base job for docs-draft publishers
* Add job.nodeset parameter to supercede job.nodes
* Removed unused 'status: ' string from log line
* Fix infinite loop on reconfiguration exception
* Support Gerrit 2.13 ref-updated events
* Status: Don't toggle panel when clicking patch link
* Status: Remove use of deprecated jQuery jqXHR \`complete\` method
* Status: Don't toggle panel when clicking patch link
* Status: Remove use of deprecated jQuery jqXHR \`complete\` method
* Add strip\_branch\_ref compat option
* Cleanup migration script pep8 errors
* Don't try to write jobs that came from mappings
* Case sensitive label matching
* Order post playbook content properly
* Actually emit job content
* Split output into jobs+project\_templates and projects
* Emit job definitions
* Don't set nonvoting based on name suffix
* Add netaddr requirements for running ipv4|ipv6 filters
* Add zuul legacy vars filter
* Add a message to the job log on unexpected exceptions
* Fix 'startswith' delegation typo
* Use feature/zuulv3 for zuul-migrate test
* change assert(Not)Equals to assert(Not)Equal
* Support 'files' matcher logic
* Expand templates for project-specific matchers
* Update time database to v3
* Drop use\_app boolean from github client
* Migration: handle shared queues
* Bind to :: instead of 0.0.0.0 in log streamer
* Fix typo with merger.getRepoState
* Matchers: voting, branch
* Abort reconfiguration when cat jobs fail
* Document the existence of zuul\_success job var
* Always strip {name} from name
* Gate on zuul-stream-functional
* Shift zuul\_stream socket reading to use a for loop
* Rename success ansible variable to zuul\_success
* Decode stdout from ansible-playbook before logging
* Add migration tool for v2 to v3 conversion
* Add max-job-timeout tenant setting
* Add node label to inventory
* Use 'git checkout' when checking out a tag
* Support IPv6 in the finger log streamer
* Revert "Enable maintainConnectionCache"
* Add change\_url to zuul dict passed into inventory
* Make test\_dynamic\_dependent\_pipeline\_failure more robust
* Update tests to use AF\_INET6
* Remove zuul-cloner shim
* Use deepcopy when copying ansible logging config
* Handle debug messages cleanly
* Handle some common yaml syntax errors
* Split github hook ingest and processing
* Only strip trailing whitespace from console logs
* Add test for dependent changes not in a pipeline
* Fix dynamic dependent pipeline failure
* Switch to publish-openstack-python-docs-infra
* Add zuul-cloner shim
* Only grab the gerrit change if necessary
* Connection change cache improvement
* Enable maintainConnectionCache
* Be explicit about byte and encoding in command module
* Dequeue non-live items with errors
* Clean up obsolete TODO for \_setGitSsh()
* Revert "Only add changes to status page with jobs"
* Close command socket after sending stop
* Close logging config file after write
* Fix missing logconfig when running tests in pycharm
* Print SIGTERM logging to debug
* Reduce debug output for repo
* sql: normalize logger name
* Use afs\_publisher\_target for afs-docs
* Move ara output generation to post playbook
* Support IPv6 with zuul\_stream
* Only run zuul-stream testing on callback changes
* Log exeptions for module failure cases
* Remove bindep\_command lines
* Validate zuul\_stream func test output
* Stop output start and end times for each task
* Fix spacer-lines to work with multi-node and items
* Add helper script for doing local log streaming tests
* Add zuul.timeout variable to jobs
* Make log streaming test three node
* Don't output complex items in the summary line
* Add support for debug statements
* Remove -vvv from playbook invocation for log streaming test
* Handle logging ansible python errors properly
* Add tests of accessing paths with file is ok
* Pass the correct object to local module check
* Add /etc/alternatives to bwrap
* Add publish-openstack-python-docs to post pipeline
* Allow description fields in projects and project templates
* Remove comments questioning API capabilities
* Use app integration to get PR reviews
* Log cachecontrol info by default
* Consume the variable with the same name it's set
* Update config cache only after all cat jobs complete
* Cache branches for a project and use it on rate limit errors
* Try getting project branches authenticated
* Added more debug logging for github requests
* Only add changes to status page with jobs
* Improve function to find PR from commit status
* Pin Ansible to <2.4
* Remove default root handler fallback to console
* Raise default logging level to debug if nodaemon is passed
* Set better defaults for server logging
* Fix a backwards boolean comparison for nodaemon logging
* Fix typo in ServerLoggingConfig
* Add integration test for zuul\_stream
* Fix badly named function typo
* Add X-Github-Delivery id to debug logs
* Prevent execution of locally overridden core modules
* Add gearman server port configuration
* Write a logging config file and pass it to callbacks
* Include the prepared projects list in zuul variables
* Run post playbooks on job timeout
* Fail early if people attempt to add zuul vars or secrets
* Fix job timeout docs
* Send all node information to executor
* Add IP info to nodepool hostvars
* Add proc to bubblewrap
* Document list of configuration items for include/exclude
* Remove excess debugging from playbook prep
* Only depend-on open changes
* Add a test to verify basic console output
* Ensure post-run playbooks are ordered correctly
* The play object is at self.\_play not self.play
* Add .zuul.yaml
* Remove zuul 2.5 specific files
* Stop logging executor job args
* Create secrets dir in bwrap
* Add publish-openstack-python-branch-tarball post job
* Retrieve filtered list of hosts for a task, not all hosts
* Write secrets to tmpfs
* Add wrapper driver execution context
* Document execution\_wrapper setting
* Remove publish-openstack-python-branch-tarball job
* Squelch ara initializing message from log
* Remove remote\_tmp setting
* Fix zuul\_stream callback dict modification
* Allow requesting secrets by a different name
* Use cached branch list in dynamic config
* Reload configuration when branches are created or deleted
* Allow multiple semaphore definitions within a project
* Return 404 on unknown tenants
* Fix documentation nits
* Add publish-openstack-python-branch-tarball to post pipeline
* Recycle stale SQL connections
* Test that secrets don't leak into logs
* Re-enable test\_delayed\_repo\_init
* Rename allow-secrets to post-review
* Create nodepool.cloud inventory variable
* Add zuul.project.src\_dir variable
* Bindmount /etc/lsb-release into bubblewrap
* Add Zuul to gate pipeline
* Expose final job attribute
* Remove 'auth' dict from jobs
* Bind secrets to their playbooks
* Add sphinx-autodoc-typehits sphinx extension
* Try to early terminate streaming on ansible errors
* Don't pass self to a bound method
* Add comments about base jobs
* Add zuul-sphinx as a requirement
* Require a base job
* Allow and document use of the uri module from localhost
* Docs: add very simple architecture diagram
* Docs: enable show\_related
* Docs: change default title for value xref
* Docs: reformat metrics docs
* Use null values instead of the empty dict for sql reporter
* Docs: reformat tenant config docs
* Docs: reformat zuul driver docs
* Docs: reformat timer driver docs
* Docs: reformat sql driver docs
* Docs: reformat SMTP driver docs
* Remove score attribute from sqlreporter config
* Update SQL reporter to store results
* Fix job example and misspelling
* Don't request empty nodesets
* Support longer pkcs1-oaep secrets
* Add some ansible plugin tests
* Docs: reformat github driver docs
* Remove state\_dir requirement from merger
* Docs: reformat gerrit driver docs
* Docs: update format in connections.rst
* Docs: reformat web section
* Docs: reformat merger and executor config docs
* Docs: convert some component config to zuul directives
* Docs: add initial documentation style guide
* Doc improvements on user guide
* Remove status handling from FakeGithubConnection
* Optionally limit github to protected branches
* Fix null ref in github tests
* Ensure ref-updated jobs run with their ref
* Add zuul:var directive and role
* Docs: use zuul:attr in secrets
* Make timer tests less racy
* Use undefined values instead of 40 zeroes
* Add zuul.executor.work\_root to inventory
* Remove getProjectBranches from FakeGithubConnection
* Fix github dependent pipeline with merge
* Don't ignore inexistent jobs in config
* Simplify github status descriptions
* Fix webapp path parsing
* Wrap handle\_keys with debug statement
* Docs: use zuul:attr in project definition
* Rename Node.hold\_reason to 'comment'
* Make github ssl verification configurable
* Add max-nodes-per-job tenant setting
* Use zuul attributes in nodeset section
* Use zuul attributes in semaphore documentation
* Improve cleanup of test disk accountant
* Fix test\_cache\_hard\_links when on tmpfs
* Limit github reporting to github sources
* Remove zuul\_url from merger config
* Fix autohold RPC protocol
* Docs: add a :default: argument to zuul:attr
* Ensure stop of disk accountant on assertion
* Remove duplicated states from zk.py
* Add required reason for hold
* Implement autohold
* Docs: add a glossary
* docs: reformat job section with zuul domain
* Add zuul:value xref
* Make zuul the default sphinx domain
* Support cross-references based on zuul:attr
* Add a short name to the project in the inventory
* Remove zuul:configobject
* Change name and document the bind\_mount config paths
* Log an extra blank line to get space after each skip
* Replace singleton lists with None defaults
* Add project related type hints to gerritconnection
* Use project object in \_uploadPack in gerrit driver
* Fix gerrit label capitalization in docs
* Cleanup pipeline requirements
* Remove email-filter requirement
* Use zuul config sphinx directives for pipeline
* Provide nicer index entries for config items
* Add zuul:value sphinx directive
* Use default sphinx theme and index attributes
* Fix GithubConnection logging name
* Update docs to indicate app\_key is a file
* Fix dynamic layout with regex approval filters
* Ignore .mypy\_cache
* Github - Require webhook\_token
* Monitor job root and kill over limit jobs
* Remove callback\_whitelist setting
* Collect logging information into ara callback
* Stop double-logging the build id
* Update docs on github connection settings
* Use mypy to do static type checking
* Fix race in test\_periodic\_override
* Use correct label casing in tests
* Case sensitive label matching
* Remove extra GC debug info
* Ensure tox-cover is non-voting
* Change jobroot\_dir to job\_dir in executor config
* Allow loading additional variables file for site config
* Fix tenant include example
* Remove state\_dir from setMountsMap
* Remove ZUUL\_UUID
* Remove ZUUL\_PROJECT
* Remove ZUUL\_PIPELINE
* Remove ZUUL\_URL
* Remove ZUUL\_VOTING and add zuul.voting
* Remove ZUUL\_BRANCH
* Remove ZUUL\_CHANGES
* Remove ZUUL\_CHANGE\_IDS
* Fix the rendering of item entries
* Remove ZUUL\_CHANGE
* Remove ZUUL\_PATCHSET
* Remove ZUUL\_REF
* Remove ZUUL\_COMMIT
* Remove ZUUL\_OLDREV and ZUUL\_NEWREV
* Remove ZUUL\_REFNAME
* Remove refspec
* Fix broken project config in dynamic config test
* Undefine Zuul variables in Ansible when appropriate
* Display log url when a job completes
* Add spacer line after loops
* Log skipped tasks to the job output
* Add missing word to docs
* Log items in loops better
* Add zuul.items to job vars
* Rename uuid to build
* Rename tags job variable jobtags
* Check out implicit branch in timer jobs
* Improve display of simple error messages
* Gather facts smartly and cache them
* Remove hardcoded LOGNAME for ansible-playbook
* Switch from tox-linters to tox-pep8
* Fix change history cycle detection
* Add spacer after playbook stats rather than before playbook
* Make playbook run meta info less fragile
* Add project info to JobDirPlaybook
* Add html based websocket client for console stream
* Remove noise both vertical and horizontal
* Emit phase banner separate from play banner
* Fix json output appending
* Remove ansible-role from implied role names
* Add job's project as implicit role project
* Return executor errors to user
* Add more information on variables in jobs
* Only output result details on error
* Add callback plugin to emit json
* Write secrets into their own file, not into inventory
* Fix zuul command default function
* Add tenant column to the buildset reporter table
* Support dynamic dependent pipeline additions
* Fix multiple role paths
* Handle cyaml Marks
* Fix zuul.(yaml|d) loading order and add tests
* Add zuul.d configuration split documentation
* Filter and print results more comprehensively
* Add documentation for project shadowing
* Support relative urls in success-url
* Add child roles before parent
* Run playbooks with only those roles defined thus far
* Document start day of week
* Fix dictionary change during iteration
* Fix KeysView object does not support indexing
* Add /etc/hosts and /etc/nsswitch.conf to the bubblewrap
* Fix status\_url section in zuul.conf-sample
* Log execution phase and include information
* Add play recap back in to the end of plays
* Add spacing lines and formatting to result dicts
* Make roles ordered
* Correct run job parameter documentation
* Pass result data back from ansible
* Fix race in test\_shadow
* Cleanup components doc
* Remove function\_cache variables from executor client
* Remove isJobRegistered
* Move ssh-agent cleanup into existing exception handler
* Fix error loading projects out of order
* Avoid using apt-add-repository
* Improve logging on reconfiguration
* Add docs for web server component
* Handle aborted websocket client connection cleanly
* Check ret for None in zuul\_run\_command
* Cleanup on ssh-agent failure
* Add link to Zuul v3 docs to the README
* Fail execution if a role repo is a bare collection of roles
* Fix ZuulWeb() invocation
* Make sure we always log the exit line
* Add web-based console log streaming
* Add job dependencies to status.json
* Add support for zuul.d configuration split
* Return RETRY\_LIMIT on completion of last build
* Add phase and count to variables passed in to playbooks
* Add support for marking module results uninteresting
* Don't look for ansible\_host unconditionally
* Allow file manipulation in the work dir
* Fix race in test\_queue\_rate\_limiting\_dependent
* Permit config shadowing
* Add some indexes to allow efficient dashboard sql
* Add log entry when unable to find a project during reenqueing
* Read config from .zuul.yaml or zuul.yaml
* Fix AttributeError in executor client
* Ensure github change body is not a NoneType
* Optionally bind /lib64
* Consume tox instead of zuul-tox
* Remove old tox jobs
* Remove unnecessary loop in github test
* Handle GitHub comment reviews carefully
* Add TenantProjectConfig object
* Move status\_url to webapp config section
* Fix indentation error in docs
* Add docs on allow-secrets
* Clarify canonical\_hostname documentation
* Rename git\_host to server in github driver
* Fix test\_bubblewrap\_leak
* github: prevent getRepoPermission to raise AttributeError
* github: gracefully handle unknown event
* Improve debugging at start of job
* Fix some inconsistent indentation in docs
* Add some information about canonical\_hostname
* Move zookeeper\_hosts to zookeeper section
* Use scheduler-specific log config and pidfile
* Use executor section of zuul.conf for executor dirs
* Correct sample zuul.conf
* Move tenant\_config option to scheduler section
* Move status\_expiry to webapp section
* Use oslosphinx theme
* Reorganize docs into user/admin guide
* Run the new fancy zuul-jobs versions of jobs
* Add configuration documentation
* Apply localhost workaround if ansible\_host is localhost
* Handle item loops in zuul\_stream
* Don't print results from explicit gather facts
* Fix py3 issue with command module
* Add newlines to parse error output
* Don't log starting to log messages to build log
* Add test for running post playbooks after pre-playbooks fail
* Fix reenqueue wrong item on new patchset
* Always run post playbooks
* Don't try to split localhost log lines
* Avoid decode/encode in the finger log stream server
* Read the log file as binary in zuul\_console
* Write logfile as binary encoded utf-8
* Fix exception handler in command module
* Fix typo in keep/unkeep commands
* Append ansible yaml parse errors to job log file
* Fix exception handling in scheduler
* Convert jwt encode to string for github in python3
* Carve out for stat
* Support finger ports in finger URL
* Use worker\_name for job cancellation and remove manager
* Implement Depends-On for github
* Use only project name in github repo creation
* Don't automatically mount user home in executor
* Set HOME to work root
* Augment --keep-jobdirs with an IPC
* Fix and test report urls for unknown failures
* Make sure playbook and role repos are updated
* Create a new logger for gerrit IO
* Support custom playbook locations
* Fix encrypt\_secret for python3
* Add a test to verify push reports only set status
* requirements: update ansible version
* Fix parsing of github PR url
* Fix typo in localhost check in zuul streamer
* Fix access before assignment in zuul streamer
* Add linebreak to generated passwd/group file
* Use Event in streaming test
* Remove use of six library
* Remove py2 SocketServer import
* Add log streaming test
* requirements: remove ordereddict
* executor: add support for custom ansible\_port
* executor: run trusted playbook in a bubblewrap
* bubblewrap: adds --die-with-parent option
* config: refactor config get default
* Add redhat-rpm-config to rpm build deps
* Add note to README about Python3
* Add known\_hosts to bubblewrap jobir.work\_root
* Stop supporting python2
* Implement pipeline requirement of github labels
* Revert "Revert sync from latest command from ansible"
* Use python2 for ansible on remote hosts
* Revert sync from latest command from ansible
* Handle lists of streamers
* Special case shell logging on localhost
* Direct streaming at delegated\_to target
* Change log streaming link to finger protocol
* Extract get\_playhosts listing in zuul\_stream to a method
* Make logging helper method in zuul\_stream
* Remove job\_name\_in\_report option
* Add some debug entries to executor
* Remove ssh private key from ansible.cfg
* Clean up docstring on SSLZuulTestCase
* Limit github reporters to event types
* Implement pipeline reject filter for github
* Add ssl support to gearman / gearman\_server
* Remove item.layout
* Update run\_command to latest ansible
* Sync command from ansible
* Read layout from BuildSet in first merge scenario
* Show debug logging when running zuul-bwrap
* Stop streaming from server when log file removed
* Create nodepool dictionary for ansible inventory
* Encode webhook\_token secret
* Improve fake github commit status handling
* zuul\_stream: handle empty line
* github: retry pull\_request()
* Default bubblewrap to work\_root
* Use display.display for executor debug messages
* Don't wait for forever to join streamer
* Use threads instead of processes in zuul\_stream
* Add shutdown option for zuul\_console
* Enable verbose/unverbose zuul-executor commands
* Fix zuul\_streamer send() call for py35
* Fix git ssh env in merger
* Add 'description' field to jobs
* Implement a cache of github change objects
* UTF8 encode commands sent to executor socket
* Correct location of ansible log file
* Change node 'image' to 'label'
* Add friendly error messages and tests for nodeset dupes
* Allow per-repo selection of configuration classes to load
* Log a little extra debug info on log streaming
* Add coverage artifacts to .gitignore
* Strip not split the untrusted\_wrapper
* Expose buildset to the executor and url formatter
* Add tenant to url formatting
* Extend in-repo config update support to github
* Update log to include expected data on task results
* Strip double-timestamps from output log
* Re-enable test\_merge\_failure\_reporters
* Re-enable test\_worker\_update\_metadata
* Remove ansible files at startup before copy
* Make log streaming to executor per-task
* Bail with an error on a non-existent jobroot\_dir
* Fix race in test\_crd\_gate\_unknown
* Factor out duplicate code in executor repo tests
* Reject some untrusted config objects
* Convert some leftover changeish mentions to ref
* Use a select loop on log streamer socket reads
* Put variables into the inventory
* Write inventory as yaml not ini
* Add support for defining groups in nodesets
* Add github reporter status-url config option
* Mutex repo updates and merge ops in executor
* Fix reporting on changes dequeued for deps
* Don't report start on unmanaged projects
* Fix race in gerrit+github test
* Handle change related reqs on push like events
* Replace equals None with is None
* Rename TestCloner TestExecutorRepos
* Remove test\_post\_checkout
* Remove test\_periodic\_update
* Remove test\_upgrade
* Remove test\_git\_cache\_dir
* Enable test\_post\_and\_master\_checkout
* Enable test\_post\_checkout
* Enable test\_periodic
* Handle job or build is None in formatUrlPattern
* Make finger port configurable
* Don't copy the \_\_pycache\_\_ folder
* Add untrusted-projects ansible test
* Make zuul ansible dir self-contained
* Fix traceback when evaluating github changes
* Enable test\_project\_override
* Fix log streamer closing
* Remove pipeline argument from various report fncts
* Add support for bwrap
* Verify executor branch checkout
* Enable test\_multi\_branch cloner/executor test
* Actually check out the branch in the jobdir
* Update the merger recent dict when saving the repo state
* Fix log streamer for py35
* Add config option for executor process user
* Add a finger protocol log streamer
* Decode the console log stream
* Log and collect stats for events consistently
* Use util functions to make lists of things
* Implement github pipeline req of current-patchset
* Implement github pipepline req of open
* Include tenant name in github context
* Catch integration key file not found in zuul
* Save installation ids to a cache and fetch them per project
* Refactor integration key loading to always load
* Decode JSON body once for requests
* Create github client each time it's called
* Use app\_id with github
* Allow for specifying root job directory
* Allow for using build UUID as temp job dir name
* Only report to gerrit if the action is from gerrit
* Remove source from reporter
* Fix fake gearman py3 bug and re-enable sched tests
* Add LoggerAdapter for executor jobs
* Release executor jobs on test exit
* Add a space and a capital letter to success banner
* Fix bad text wrap in status page
* Add SSH Agent Primitives and usage
* Fix missing source connections on merger
* Use https to clone Github3.py
* Decode ssh output of gerrit connection
* Implement github trigger requirement status
* Add cachecontrol to requests to github
* Include exc\_info in reporter failure
* Enable test\_one\_branch cloner test
* Check out the appropriate branch in executor
* Use the executor cached repos more often
* Return resulting commits from merger
* Add override-branch property to jobs
* Rename 'repos' job attribute to 'required-projects'
* Add override-branch property to job repos
* Add default-branch property to projects
* Use ssh for git-upload-pack
* Display command/shell results in a banner
* Strip unneeded cmd, changed, stdout and stderr from results
* Disable leaked repo check
* Use previously stored repo state on executor
* Store initial repo state in the merger
* Wait for merger to complete before item is ready
* Comment on PRs if a remote call to merge a change failed
* Represent github change ID in status page by PR number
* Ensure PRs arent rejected for stale negative reviews
* Implement pipeline requirement on github reviews
* Adds github triggering from status updates
* Add support for requiring github pr head status
* sql-connection: make \_setup\_tables staticmethod
* merger/executor: configure source connections only
* Add javascript license information
* sql-reporter: add support for Ref change
* Read all Gerrit events from poll interruption
* Quote message when reporting to Gerrit
* Add driver-specific pipeline requirements
* Improve safety around canceling node requests
* Enable py3 tests
* Fix github driver tests for py3
* skip py3 failing tests
* Explicitly decode decrypted secrets for py3
* fix webapp tests for py3
* misc py3 changes
* base64 changes for py3
* Encoding changes in tests for py3
* view changes for py3
* writing yaml to disk needs bytes
* Fixes for test\_model in py3
* None does not compare to int
* make Job and ZuulRole hashable
* py3 hashlib error
* py3 Changes in \_\_del\_\_ for gitpython
* fix imports in py3
* Use gear Text interface
* Re-enable E305 pep8 errors
* Re-enable F405 pep8 errors
* Add paste to the default list of loggers in tests
* Remove errant basicConfig calls in test suites
* Remove use of hacking lib
* Extract ansible library file copying to a function
* Add trigger capability on github pr review
* Remove unused merger:update task
* Fix passing labels to Gerrit when they are not defined in All-Projects
* Extend job list when inheriting jobs
* Block sphinx 1.6.1
* Add bubblewrap to bindep / test-setup.sh
* Fix inventory vars containing spaces
* Whitelist pydevd debug threads
* Remove uncalled test code
* Add support for github enterprise
* Test gerrit and github drivers in same tenant
* Set filter according to PR/Change in URL
* Copy dirs to handle \_\_pycache\_\_ in py3
* Log GitHub API rate limit
* GitHub file matching support
* Better merge message for GitHub pull reqeusts
* Allow github trigger to match on branches/refs
* Support for dependent pipelines with github
* Encapsulate determining the event purpose
* support github pull request labels
* Support for github commit status
* Add jobs back to .zuul.yaml
* Move playbook out of zuul
* Update zuul.project to dictonary for vars.yaml
* Add a test which exercises a speculative role checkout
* Report job shadow errors to users
* Be less agressive with implied branch matchers
* Configurable SSH access to GitHub
* Add 'comment' github pull\_request event action
* Increase file permissions around generate keys
* Add 'push' and 'tag' github webhook events
* Add basic Github Zuul Reporter
* Support GitHub PR webhooks
* Re-enable test\_live\_reconfiguration\_shared\_queue
* Re-enable test\_live\_reconfiguration\_failed\_job
* Re-enable test\_live\_reconfiguration\_failed\_root
* Re-enable test\_live\_reconfiguration\_merge\_conflict
* Move test\_test\_config to a cmd-focused test suite
* Use the security context of the playbook when checking out roles
* Use connection to qualify projects in merger
* Also send stdout back in the Result object
* Move makemergeritem into model
* Move dependency cycle detection into pipelines
* Allow using webapp from connections
* Remove queue-name from job schema
* Cleanup logging handlers
* remove getSourceByHostname
* Error if threads leak
* Properly record timed out builds
* Cleanup gearman clients in tests
* Cleanup zookeeper and fake nodepool in nodepool tests
* Whitelist watchdog threads in test thread leak checker
* Use cStringIO if available
* Use current class name on super call
* Add ability to stop drivers
* Remove commitLayoutUpdate
* Move two more tests to commitConfigUpdate
* Fix race in test\_queue\_rate\_limiting
* Allow simple\_layout to support custom drivers
* Move timer tests to commitConfigUpdate
* Move semaphore tests to their own class
* Remove org\_unknown git repo from single-client test config
* Move test\_repo\_deleted to simple\_layout
* Move check\_ignore\_dependencies to simple\_layout
* move test\_disable\_at to simple\_layout
* Remove unused test git repos
* Move some uses of updateConfigLayout to simple\_layout
* Move test\_tags to simple\_layout
* Use 'org/project' for tests which only operate on one project
* Remove project3
* Remove unused repos from repo init
* Move tests to use simple\_layout
* Add playbook support to simple\_layout in tests
* Add simple\_layout test decorator
* Don't allow auth definition in job to be a list
* Re-add the ability to set username on zuul-executor
* Remove source from pipelines (2/2)
* Remove source from pipelines (1/2)
* Replace config/project repos with config/untrusted projects
* Fully qualify project configuration names
* Add hostname to TriggerEvent
* Add source to project and remove unused tenant attrs
* Remove unused Tenant.getRepo method
* Use new tenant project index for config references
* Add a project index to Tenant
* Pass source to project instantiations
* Fix race in test\_queue\_rate\_limiting\_dependent
* Stop jobs when executor stops
* Extend test timeout to 120s
* Update voluptuous requirement
* Handle dict extras in Voluptuous Schema

2.5.2
-----

* Update voluptuous requirement
* Handle dict extras in Voluptuous Schema
* Remove outdated TODO
* Send interface\_ip in the node description
* Resolve project\_name/project confusion for gerrit
* Put test id in zk chroot path
* Configure zk fixture cleanup early
* Use PBR's setup.py test command
* Set jobdir to 0755 before we delete it
* Fix dynamic reconfiguration
* Catch and log url pattern formatting errors
* Add canonical hostname to source object
* Fix constructor arguments to source
* Cleanup docs builds and error on warnings
* Start blocking lookup plugins on insecure jobs
* Quote ansible command and include config file
* Store project name in ref-replicated events
* Add host IP address to host\_keys
* Clarify TriggerInterface documentation
* Add trigger developer doc
* Re-enable test\_live\_reconfiguration\_del\_project
* Perform pre-launch merge checks
* Use libyaml if possible
* Re-enable remaining test\_crd\_check\_\* tests
* Make tox-linters run the tox/linters play
* Re-enable test\_queue\_rate\_limiting\_dependent
* Re-enable test\_queue\_rate\_limiting
* Change mutex to counting semaphore
* Add 'allow-secrets' pipeline attribute
* Add support for job allowed-projects
* Augment references of pkcs1 with oaep
* Isolate encryption-related methods
* Serve public keys through webapp
* Decrypt secrets and plumb to Ansible
* Associate secrets with jobs
* Add secret top-level config object
* Add per-repo public and private keys
* Fix dev doc link in README.rst
* Make sql reporter score null when not set
* Implement getSafeAttributes for other objects
* Remove url\_pattern config parameter
* Consume interface\_ip from nodepool node
* Simplify the log url
* Remove NullChange
* Refactor out Changeish
* Create zuul.executor.hostname ansible variable
* Stop logging git repo rsync output
* Make sure services are running for test-setup.sh
* Create tox-tarball job
* Organize playbooks folder
* Add revoke-sudo role and update tox jobs
* Create zuul\_workspace\_root job variable
* Create extra-test-setup role
* Fix hostname issue with nodepool integration job
* Remove ZooKeeperConnectionConfig class
* Silence command warnings
* Fix testtools.run syntax for README.rst
* Re-enable test\_stuck\_job\_cleanup
* Remove more swift configurations
* Move alembic into sql driver
* Port SQLAlchemy reporter to v3 driver structure
* Improve job dependencies using graph instead of tree
* Close paramiko connections explicitly
* Add run-docs role and tox-docs job
* Create run-cover role
* Revert "Configure regional mirrors for our jobs"
* Replace ssh-keyscan with host keys from node
* Remove irrelevant test\_merging\_queues
* Handle the 'all' group in callback
* Create nodepool inventory variables
* Add entry for ref-replication-scheduled event
* Clean up additional references to launcher
* Rename zuul-launcher to zuul-executor
* Add generic tox job (multiple playbooks)
* Only depend-on open changes
* Remove extra debugging around git repo leaks
* Cap GitPython at 2.1.1 due to performance degradation
* Cap GitPython at 2.1.1 due to performance degradation
* Remove internal Swift support
* Remove layoutvalidator
* Zuul v3 readme updates
* Update hacking dependency
* Clarify Job/Build/BuildSet docstrings
* Provide file locations of config syntax errors
* Add a test for a broken config on startup
* Remove unused mergeChangeQueue method
* Use hostname in Nodepool requests
* Add missing pauses in reconfiguration tests
* Remove spurious with from comment
* Re-enable test\_tags
* Add note about pipelines and dynamic layouts
* Remove inscrutable TODO
* Handle merge mode in repeated project configs
* Remove job trees from pipelines
* Report YAML parse errors
* Switch to yaml.safe\_load
* Catch gear.InterruptedError
* Report layout config errors for config repos
* Report dynamic layout config errors
* Re-enable test\_dependent\_behind\_dequeue
* Re-enable test\_timer\_smtp
* Add extra debugging around git.repo gc leaks
* Update testing doc to reflect unit subdir move
* Re-enable test\_timer
* Re-enable test\_idle
* Document needing zookeeper to run tests
* Add timeout variable to jobs
* Update hacking dependency
* Configure regional mirrors for our jobs
* Plumb job variables through to ansible
* Storyboard: Support invalid tasks in update script
* Publish python-linters jobs to apache
* Copy logs to launcher
* Create python-linters job
* A couple small test improvements
* Fix keyerror with synchronize
* Add more variables to ansible
* Fix synchronize action issue with mode
* Add support for 'repos' job configuration
* Add --safe-links to synchronize invocations
* Add project and branch to ansible zuul vars
* It's \_still\_ FILE not PATH
* Rename work\_dir/git to work\_dir/src
* It's FILE not PATH
* Fully expand path when testing it
* Add working dir to error message
* Clone jobdir git repos from the launcher's cache
* Add log root to work dir
* Minor cleanups in on-node logging
* Subclass rather than copy default Callback plugin
* Reorganize the job dir to include a work dir
* Add daemon subprocess to read remote log content
* Remove color from callback logs
* Add placeholder for doing the actual streaming
* Change 'secure' to 'trusted'
* Consume display\_args\_to\_stdout in zuul\_stream
* Add initial callback plugin to handle log streaming
* Expose the jobdir git root as a variable
* Fix all action plugins to import safely
* Fix infinite recursion on action module import
* Revert "Run everything in secure mode while debugging"
* Fix getInfoRefs call from getProjectBranches
* Add host ssh keys to known hosts
* Run everything in secure mode while debugging
* Fix race in sshwrapper
* Perform ridiculous gymnastics to load base action plugin
* Plumb through keep jobdir option
* Fix ansible inventory
* Import the ansible base module, not self
* Plumb zookeeper config settings into zuul-scheduler
* Remove zk host list parsing
* Support project configs in multiple locations
* Remove in repo .zuul.yaml
* Log reconfiguration errors on startup
* Fix branch-based caching of unparsed config
* Default scheduler pid file path to zuul-scheduler
* Fix spurious configuration log error
* Initial in-repo configuration for zuul.yaml
* Remove layout option, adapt -t option accordingly
* Allow loading logging config from yaml
* Auto-reconfigure after change-merged event
* Remove main.yaml
* Set display\_args\_to\_stdout for secure jobs
* Add support for roles in zuul
* Reload tenant configuration on change merged
* Correct playbook requirement logic
* Add action plugins to restrict untrusted execution
* Rename zuul-server zuul-scheduler
* Remove misleading log statements
* Add (minimal) support for topic-changed event
* Correct getGitwebUrl
* Squelch ref-replication gerrit warnings
* Temporarily disable test\_dependent\_behind\_dequeue
* Remove gearman settled check
* Add Git driver
* Fix missing mutex release when aborting builds
* Add \_\_repr\_\_ to jobtree
* Run zuul v3 launcher
* Remove TODO comment that seems to be done
* Status: apply default style by default
* Re-enable test\_abandoned\_not\_timer
* Reset merger repo when performing an update
* Fix change number extraction on new enough Gerrit master
* Supply label name to Nodes
* Inherit playbooks and modify job variance
* Split merger and launcher git roots
* Fix setting of GIT\_SSH for timer merge jobs
* Implement node equality
* Re-enable test\_footer\_message
* Drop test\_node\_label
* Re-enable multiple gerrit connection test
* Re-enable test\_queue\_names
* Re-enable test\_mutex
* Fix race in waitUntilSettled
* Re-enable test\_client\_enqueue\_ref test
* Add inheritance debugging
* Use ZUUL\_TEST\_ROOT in launcher
* Add some gearman related debugging
* Report exceptions in launcher
* Add SourceContext class
* Run pre and post playbooks
* Set job class attributes in \_\_init\_\_
* Implement job aborting
* Add infrastructure for pre/post playbooks
* Move job running into own class
* Handle multiple playbook extensions
* Tests: store debug logs on error
* Add playbooks needed by merge tests
* Add support for sqlalchemy reporter
* Re-enable test\_json\_status
* Re-enable test\_file\_jobs
* Add playbooks for all test jobs
* Put Zuul vars in an ansible vars file
* Use playbooks defined in repos
* Fix nodeset return on skipped jobs
* Avoid multiple build cancelations
* Coalesce zuul and nodepool images in integration
* Bump post playbook timeout to 30mins
* Fix race in fakenodepool
* Fix test\_live\_configuration
* Increase individual test timeout
* Remove layout.projects
* Cloner: use zuul\_url always when project set
* Re-enable test\_dependent\_behind\_dequeue
* Add zuul->np test for invalid node type
* Rename nodepool integration script
* Move and re-enable test\_build\_configuration\_branch tests
* Add nodepool integration test
* Fix passing labels to Gerrit when they are not defined in All-Projects
* Move tests into test/unit
* Add nodepool integration test script
* Add Drivers to documentation
* Separate driver interfaces and make abstract
* Re-enable zuultrigger test
* Reorganize connections into drivers
* Correct comments in requirement test cases
* Correct comments in requirement test cases
* Spell NodeSet consistently
* Fix copyright date in test\_nodepool
* Handle nodepool allocation failure
* Use constants for state names
* Verify nodes and requests are not leaked
* Remove excess printing from stats test
* Remove unused clasess from zk.py
* Cancel/return nodepool requests on job cancel
* Return nodes after use
* Mark nodes as 'in-use' before launching jobs
* Lock nodes when nodepool request is fulfilled
* Copy nodeset when making node requests
* Re-submit node requests on ZooKeeper disconnect
* Remove link to modindex
* Add nodepool test class
* Add a test printHistory function
* Improve test output
* Fix race condition in test\_success\_url
* Add FakeNodepool test fixture
* Add Zookeeper to tests
* Re-enable test\_webapp\_find\_change
* Fix test\_rerun\_on\_abort
* Remove now-unused ZuulTestCase.resetGearmanServer
* Fix watchdog timeout fix
* Add a log message when ansible times out
* Remove TestScheduler.test\_nonexistent\_job
* Re-enable test\_no\_job\_project
* Re-enable test\_nonvoting\_job
* Don't try to execute \_stop commands
* Add note about redundant file
* Fix retry accounting off-by-one bug
* Remove v3 project template test
* Add reset of watchdog timeout flag
* Add update storyboard script
* Add roadmap to README
* Update storyboard links in README
* Re-enable test\_client\_get\_running\_jobs
* Re-enable test\_rerun\_on\_abort
* Re-enable TestScheduler.test\_rerun\_on\_error
* Re-enable merge-mode config option and add more tests
* Re-enable requirement reject tests
* Re-enable requirement status tests
* Add test for variant override
* Re-enable requirement vote tests
* Correct logic problem with job trees
* Don't merge post-merge items
* Re-enable test\_success\_pattern as test\_success\_url
* Define the internal noop job
* Enable test\_post\*
* Re-enable requirement-email tests
* Re-enable requirement-username tests
* Re-enable requirement-older-than tests
* Re-enable requirement-newer-than tests
* Ignore .idea directory
* Skip individual test\_requirements tests
* Re-model the job auth
* Fix missing mutex release when aborting builds
* Refactor skip-if tests to use irrelevant-files
* Re-enable test\_failed\_change\_at\_head\_with\_queue
* Don't retry when using synchronize module
* Refactor test\_zuul\_refs and FakeBuild.hasChanges
* Update webapp status json to support tenants
* Re-enable test\_crd\_cycle\_join test
* Re-enable test\_noop\_job test
* Re-enable test\_crd\_branch test
* Re-enable test\_merger\_repack\_large\_change test
* Re-enable test\_crd\_check job
* Re-enable test\_head\_is\_dequeued\_once test
* Re-enable test\_crd\_gate / test\_crd\_multiline / test\_crd\_gate\_reverse
* Re-enable test\_crd\_gate\_unknown / test\_crd\_undefined\_project
* Re-enable TestMergerRepo() class for testing
* Re-enable test\_crd\_check\_unknown test
* Re-enable test\_crd\_check\_reconfiguration test
* Re-enable test\_live\_reconfiguration test
* Re-enable test\_disable\_at test
* Re-enable test\_check\_smtp\_pool test
* Re-enable test\_repo\_deleted test
* Remove includes and parameter functions
* Add tenant support to zuul client
* Add attempts logic for jobs
* test\_duplicate\_pipelines messages are also unordered
* Fix race in TestDuplicatePipeline test
* Re-enable test\_queue\_precedence test
* Re-enable test\_file\_head test
* Re-enable test\_merger\_repack test
* Enable test\_two\_failed\_changes\_at\_head test
* Enable 4 CRD unit tests
* Enable test\_statsd test
* Re-enable 4 disable tests
* Enable test\_new\_patchset\_check / test\_abandoned\_check
* Re-enable 3 disabled tests
* Re-enable test\_layered\_templates test
* Re-enable test\_job\_from\_templates\_launched job
* Re-enable test\_one\_job\_project unit test
* Re-enable test\_source\_cache unit test
* Re-enable test\_needed\_changes\_enqueue testing
* Re-enable test\_can\_merge unit test
* Delete test\_single\_nonexistent\_post\_job test
* Re-enable test\_nonvoting\_pipeline
* Enable test\_failed\_change\_in\_middle test
* Re-enable the duplicate\_pipeline test
* Ansible launcher: move AFS publisher into a module
* Use separate library directories for pre and post
* Add extra debugging for AFS rsync
* Add names to post-playbook tasks for debugging
* Stop installing mysql and postgres
* Stop installing mysql and postgres
* Merger: fully update repo on repo update
* Ansible launcher: remove keep\_remote\_files
* Add back timeout\_var logic
* Ansible launcher: don't close stdout in command module
* Ansible launcher: import get\_exception in ansible command
* Ansible launcher: use sequence-uuid in shell scripts
* Generate shell scripts as a sequence
* Revert "Put script string in directly instead of in files"
* Add pillow dependency libjpeg-dev to bindep
* Add pillow dependency libjpeg-dev to bindep
* Default test log level to DEBUG except for testr
* Re-enable 3 unit tests
* Fix confusing debug message in configloader.py
* Add a note to README.rst about contributing to Zuul v3
* Tidy up README.rst
* Add information on how to contribute to Zuulv3
* Tidy up README.rst
* Forward-port v2.5 Ansible launcher improvements
* Re-enable test\_abandoned\_gate
* Implement branch-specific in-repo job config
* Add getProjectBranches to Source
* Ansible launcher: Fix afs publisher root detection
* Strip leading / from afs targets
* Enable pipelining for ansible-playbook
* Split playbook into vars, pre-playbook and playbook
* Stop running commands with async
* Put script string in directly instead of in files
* Use command module instead of zuul\_runner
* Rename zuul\_runner to command
* Ansible launcher: fix afs publisher
* Revert "Remove v2.5 ansiblelaunchserver"

2.5.1
-----

* Ansible launcher: format ipv6 urls [correctly]
* Ansible launcher: run k5start in playbook
* Ansible launcher: add AFS publisher
* Use NodeSet objects in jobs and NodeRequests
* Add nodeset as a top-level configuration item
* Re-enable test\_failed\_change\_at\_head
* bump timeout on ssh commands to 30s
* Handle non-valid HEAD
* Add a python27 job variant to the OpenStack test
* Pass assigned nodes to the launcher
* Add an OpenStack test
* Handle a project-template with no jobs
* Re-enable the shared/independent queue test
* Combine shared queues explicitly
* Revert "Store ssh\_host\_key of remote node"
* Always create foreign projects if needed
* Store ssh\_host\_key of remote node
* Improve debug output from tests
* Set keepalives for gerrit connections
* Simplify zuul\_console port binding logic
* Move other-requirements.txt to bindep.txt
* Re-enable test\_failed\_changes
* Stub out aborting jobs in ansible launcher
* Tests: add an extra debug line when stalled
* Tests: update references from worker to launch\_server
* Re-enable test\_connection tests
* Fix addFailTest
* Update category mapping in tests
* Stop sharing Gerrit event queues in tests
* Ansible launcher: retry publisher sync tasks
* Use {{ ansible\_host }} for ssh-keyscan
* Add some documentation on functional testing tools
* Tests: remove FakeWorker
* Remove unused Inheritable class
* Restore test\_parallel\_changes
* Tests: ensure fake builds recorded in order
* Tests: Improve support in fake builds
* Correct default value for hold-following-changes
* Ansible launcher: re-register functions after disconnect
* Use RecordingLaunchServer to run all tests
* Add utility program to print test fixture configuration
* Move test\_cloner out of its own subdirectory
* Re-enable test\_initial\_pipeline\_gauges
* Re-enable test\_jobs\_launched
* Remove job registration check
* Remove build descriptions
* Rename BasePipelineManager to PipelineManager
* Add an internals doc to the documentation

2.5.0
-----

* Cloner: correct fetch on pre-1.9 git
* Add docstrings to the model
* Add some v3 notes
* Add initial support for jobs authentication config
* Create AnsibleZuulTestCase
* Ansible launcher: set remote\_tmp
* Individually skip all TestScheduler tests
* Remove TestSchedulerConfigParsing
* Remove discover from test-requirements
* Move methods from Pipeline to QueueItem
* Remove pipeline.getJobs
* Ansible launcher: Use port 19885 for console streaming
* Revert "Make job registration with labels optional"
* Prevent jobs from overriding jobs in other repos
* Remove scheduler.getProject
* Add dynamic reconfiguration
* Add nodepool request framework
* Ansible launcher: fail on watchdog timeout
* Remove v2.5 ansiblelaunchserver
* Use fetch instead of update in merger
* Do not contest locks in PythonGit
* Support post jobs by supporting rev checkout
* Ansible launcher: fix pause/unpause accept nodes
* Make job registration with labels optional
* Ansible launcher: clean up result handling
* Lower the log level in tests
* Ansible launcher: add verbose command
* Ansible launcher: move ansible log to ansible root
* Revert "Revert "Enabled host\_key\_checking""
* Remove unused timeout args for \_makeBuilderTask
* Move job timeout into playbook as vars
* Ansible launcher: add support for node revocation
* Enable keep\_remote\_files in ansible.cfg
* Add local\_tmp to ansible.cfg
* Ansible launcher: add '|' to zuul\_log
* Ansible launcher: copy lib/plugins at startup
* Make console log output use deliminator
* highlight the error condition when reporting a config issue
* Include timeout in name of zuul\_runner tasks
* Do timeout calculation in jinja
* Use ftptarget since leading / is stripped
* Revert "Enabled host\_key\_checking"
* Ansible launcher: Fix timeout processing
* Ansible launcher: set timeout env var in ms
* Enabled host\_key\_checking
* Ansible launcher: Log ansible command line
* Ansible launcher: delay node assignment under load
* Set LOGNAME env var to fix Ansible logging
* Make pipeline approval username requirement a regular expression
* Use safe\_dump() for Ansible playbooks
* Ansible launcher: update registration between jobs
* Ansible launcher: use .txt as logfile extension
* Ansible launcher: strip leading / from scp/ftp targets
* Turn off Ansible host fact gathering
* Ansible launcher: set keep-hierarchy on log copying
* Ansible launcher: ensure log publishing always runs
* Ansible launcher: ensure that console/ansible publishing is last
* Upload ansible playbook directory to logs server
* Don't run post\_playbook if ansible-playbook is aborted
* Ansible launcher: move ftp/scp staging out of ansible dir
* Add log\_path to ansible.cfg
* Ansible launcher: Remove unused plugins dir
* Refactor local\_action SCP task into function
* Ansible launcher: fix check of ansible exit code
* Ansible launcher: add private gearman function
* Bootstrap worker logs with zuul information
* Add POST\_FAILURE status
* Fix typo with ansible-playbook process
* Don't create .retry files when our playbooks fail
* Update SCPTask to also use delegate\_to
* Delegate FTP publisher to 127.0.0.1
* Register functions in the RPC listener before running
* Increase the Gerrit trailing delay
* Ansible launcher: be smarter about env quotes
* Ansible launcher: fix timeout var
* Reduce Log Size
* Use pull mode for synchronize in \_makeFTPTask
* Requeue jobs if AnsibleHostUnreachable return
* Implement BUILD\_TIMEOUT env variable
* Fix timeout debug print in tests
* Python 3 Fix: Divide operator returns float
* Ansible launcher: remove deprecated hyphens
* Ansible launcher: Add graceful stop command
* Ansible launcher: initialize pid variables
* Ansible launcher: don't report result on abort
* Ansible launcher: make get\_env safer
* Ansible launcher: use underscores where appropriate
* Make isJobRegistered for gearman optional
* Ansible launcher: register a noop set\_description job
* Fix referenced before assignment for BuildCompletedEvent
* Python 3 Fix: dict().iteritems no longer exists
* Python 3 Fixes: Replace missing builtins
* Python 3 Fixes: use six.moves.configparser
* Python 3 Fix: Absolute Imports
* Python 3 Fix: use proper octal notation
* Python 3 Fix: use bytesIO instead of cStringIO
* Python 3 Fix: use six.reraise
* Python 3 Fix: use six.moves.urillib
* Remove unused git\_root variable
* Remove libselinux-python hack
* Add support for bindep
* Ansible launcher: add watchdog for ansible
* Stream subprocess output for ansible-playbook
* Fix turbohipster git repo
* Ansible launcher: Write console in thread
* Support keep-hierarchy in launcher rsync publisher
* Ansible launcher: add release command
* When a playbook fails, don't succeed in the error\_block
* Python 3 Fixes: Use print() not print
* Ansible launcher: add pause/unpause support
* Ansible launcher: Use threads for workers
* Ansible launcher: use correct ZMQ port
* Ansible launcher: use a socket for reconfiguration
* Ansible launcher: handle JJB with no macros
* Ansible launcher: some ansible fixes
* Ansible launcher: support static workers
* Pass OS\_\*\_CAPTURE env variables
* Move a debug logging line by one
* Ansible launcher: Do not log long ansible lines
* Ansible launcher: remove excess newlines in ansible logs
* Ansible launcher: use console.html
* Ansible launcher: log stdout/stderr one line at a time
* Don't try to create time database dir on config test
* Simplify logic to ensure absolute path
* Ansible launcher: add job result to console log
* Ansible launcher: log exit code from each builder
* Ansible launcher: add option to keep jobdir
* Ansible launcher: install libselinux-python if necessary
* Ansible launcher: log reconfiguration complete
* Ansible launcher: run command in login shell
* Ansible launcher: copy symlinks in publishers
* Ansible launcher: Append to console log, rather than truncating
* Ansible launcher: set $HOME
* Ansible launcher: add -q to rsync ssh command
* Ansible launcher: create parent directories for SCP
* Ansible launcher: include PATH
* Ansible launcher: handle Ant paths in publishers
* Don't take into account commit message for skip-if filter
* Estimate job runtimes internally
* Ansible launcher: several fixes
* Set default\_flow\_style=False for readability
* Ansible launcher: Fix module main calls
* Ansible launcher: Support configurable site roots for ftp/scp
* Add usernname configuration option for launcher
* Add private\_key\_file configuration for launcher
* Ansible launcher: add streaming console support
* Ansible launcher: add zuul\_runner module
* Ansible launcher: support zuul stop commands
* Ansible launcher: support ftp publisher
* Ansible launcher: support scp publisher
* Ansible launcher: support job timeouts
* Ansible launcher: run shell builders defined in JJB
* Ansible launcher: run ansible
* Ansible launcher: send ZMQ start/complete events
* Ansible launcher: register jobs from JJB
* Properly shutdown apscheduler on reconfigure
* Pin paramiko < 2.0.0
* GerritWatcher: add poll\_timeout
* Add extra test for bad url patterns
* Add ansible launch server
* Add report URL to status.json
* Add quick-start guide
* Add additional zuul.conf information
* Don't reload connections on HUP
* Use the new launch client in zuul server
* Detect dependency cycles introduced with new patchsets
* Register connections when testing configuration
* Fix test for new WebOb
* Remove scheduler parameter from connection registry
* Remove status\_url option
* Sever the forward reference from connections to their users
* Move gerrit logic from source to connection
* Make all configuration in-repo configuration
* Split pipeline description by double newlines on status page
* Fix race in tests
* Add job tags
* Cloner: Don't fall back on infrastructure failure
* Update merge status after merge:merge is submitted
* Cloner: use cache if dest exists
* Cloner: use cache if dest exists
* Cache is held and managed by connections
* Fix default merge failure reports
* Add job mutex support
* Try to make test\_idle less racy
* Use high precedence when manually submitting jobs
* Pass ZUUL\_TEST\_ROOT through tox
* Pass ZUUL\_TEST\_ROOT through tox
* Fix memory leak reloading triggers
* Don't require 'commit' attribute in merge event
* Remove argparse from requirements
* Add ansible as a dependency
* Create ansible job launch server
* Log 'Received unrecognized event type' as warning
* Bump pbr minimum version, to avoid testrepository requirement
* Use git.openstack.org everywhere
* Remove webob requirements cap
* Expose webapp listen\_address and port
* Remove boilerplate zuul.conf from test fixtures
* Alter config format to lists of dictionaries
* Refactor pipeline loading
* Support project templates
* Bump APScheduler to >=3.0
* Fix regression in change tracking
* Add exception handler to updateBuildDescriptions
* Clarify zuul-cloner message about missing branch
* Add job inheritance and start refactoring
* Deprecated tox -downloadcache option removed
* Tidy up loggers
* Log a warning when zuul.conf is misconfigured
* Connection names for legacy configs
* Remove metajobs
* Remove stop method from reporters, sources, triggers
* Add vim swap files to .gitignore
* Fix documentation example
* Load in-repo configuration
* Update the test config with a function
* Add tenants
* Disable most tests
* Set default branch to feature/zuulv3
* Move Item formatting into Reporters
* Remove ActionReporters
* Add in extra connections tests
* Tidy up tests/base.py
* Document the new connections in zuul
* Add support for 'connection' concept
* Configure triggers dynamically
* Add base class for triggers
* Add base class for sources
* Add base class for reporters
* Refactor sources out of triggers
* Add support to reject changes from approvals
* Constrain python-daemon < 2.1.0
* Close config\_file after config read out
* Fix newrev comparison for NullChange
* Use 127.0.0.1 rather than localhost for statsd host
* Enhance CRD doc with diagrams
* Simplify wait\_time stats
* Add style for skipped jobs
* Add option to ignore ref-updated events emitted by branch deletions
* Revert "Add Pillow to test-requirements.txt"
* Use default if gearman-plugin None for node\_labels
* Update documentation on statsd metrics generated
* Adds missing statsd counter increment
* Add ref lookup order to the cloner docs
* Add Pillow to test-requirements.txt
* Call parameter\_function prior to creating swift params
* Document CRD
* Dependencies from undefined projects
* Add ZUUL\_VOTING parameter
* Add tests for --cache-dir option
* Add ZUUL\_CACHE\_DIR to zuul-cloner
* Support pagination in simplequery for Gerrit >=2.9
* Report the per-job build wait time to graphite
* Remove ready\_ahead from scheduler
* Log which repo zuul references are created on
* Fix bug with shared jobs in reconfiguration
* Fix typo in argument group
* Add enqueue-ref command to client
* Fix bug with removing a failed job
* Revert "Add support for negative requirements"
* cloner: make more zuul args optional
* Status: Increase width of change-progress-row-left
* Status: Use vertical-align for progress bar instead of margin
* Fix two typos on zuul documentation
* Don't use outdated repo object in reset
* Set build state after timing
* Fix IndexError: No item found with id u'origin/HEAD in tests
* Specify gearman server listen address with separate option
* Set build descriptions less often
* show reconfiguration failures
* Zuul references cleaner
* Handle adding a job to a failing change during reconfig
* Reset repos with files named 'HEAD'
* gerrit: Allow sending data with ssh command
* Add uuid to the launch log record
* Status: Fix JSHint violations and commit settings
* Status: Don't raise "abort" as error to the user
* transpose typo'd characters
* Support external cross-project dependencies in ui
* Update default merge failed error to mention CRD
* Check that empty reports aren't sent
* Gear: bind to a specified address
* Don't send reports without any job
* Add support for negative requirements
* Add gerrit reviews into patchset approvals
* Be more verbose on non-tagged versions
* Ask for commit-message on current-patchset

2.1.0
-----

* Allow 'MAY' in Gerrit submit records
* Allow all zuul args to be set in zuul-cloner
* Fix git prune order in zuul-cloner
* Replace ci.o.o links with docs.o.o/infra
* Simplify cloner required parameters
* Status: Expose $.zuul object in zuul\_start to allow extension
* Fix race condition relating to change updates
* Fix race in test\_crd\_check\_duplicate more
* Fix race in test\_crd\_check\_duplicate
* Update to gear 0.5.7
* Adding doc reference of ZUUL\_CHANGES
* Add support for disabling bad pipelines
* web: Allow clients (browsers, proxies) to cache status.json
* Fix timer jobs getting aborted from abandoning a change
* Update zuul-changes.py doc to match usage
* Fix checking all builds are waiting in tests
* Delay Gerrit events by 5s
* Add commit needed-by
* Status: Move external dependencies into public\_html/lib
* Status: Use $DEST\_DIR instead of $BASE\_DIR/public\_html
* Log merger job uuids
* Improve merge client logging
* Update zuul-changes to use the enqueue command
* Fix race in CRD duplicates test
* Fix int conversion in swift
* Update the description for grey icons on status pg
* Remove job parameters from status.json
* Only format swift string parameters
* Stop metajob application of undefined attributes
* Don't report on non-live changes dequeueing
* Status: only display time on live changes
* Status: only count live changes
* Zuul sometimes fails to update remotes
* Merger: ensure\_cloned() now looks for '.git'
* Reorder settled check in tests
* Add support for a skip-if filter on jobs
* Add ignore-dependencies option
* Avoid leaking dynamic change queues
* Check liveness of changes before removing
* Fix independent pipeline CRD
* Don't show jobs for non-live changes
* Add extra liveness check to queue processor
* Add aditional CRD tests
* Support cross-repo-dependencies in independent pipelines
* Support cross-repo-dependencies in dependent pipelines
* Add a test for enqueuing complex dependencies
* Make needs\_change plural
* Require python-daemon version at least 2.0.4
* Update example gerrit messages for new syntax
* Fix up status page dependencies
* Fix pep8 issues
* Remove lockfile from requirements
* Support stack on Geard embedded server
* Reset & clean workspace repo for better hygiene
* Pin python-daemon<2.0
* Cloner: handle missing ZUUL\_BRANCH/\_REF
* Add daemon test
* Set gearman timeout to 300
* Remove "properly" from error message for clarity
* Document that the "Stream Events" permission is needed
* Document usage of yappi profiler
* Doc: ref links for "approval" requirement
* Fix passing labels to Gerrit when they are not defined in All-Projects
* Fix KeyError: 'sortKey'
* Fix tests for GitPython>0.3.2.RC1
* implement gerrit pagination in simplequery
* Add gerrit owner information to status.json
* Pin GitPython version to prevent test failure
* Include python-file using the real path
* Switched documentation to point to storyboard
* Validate top level of the layout configuration, too
* Scheduler: Reduce log level for non-configured projects
* Remove docutils pin
* Enforce ref only for gerrit events that supply a ref
* Fix docu after config repo split
* add support for getting status of individual changes
* Add precedence to merge jobs
* Make keystone and swift clients optional test reqs
* Display only first 7 chars for git commit id
* Rename doc environment to docs
* Clarify docs for optional template pipelines
* Add cache-dir argument to cloner
* Cloner: add project-specific branch overrides
* Cloner: add upgrade test
* Cloner: default to ZUUL\_BRANCH
* Add check for ref being a string before applying regex
* Fix cloner test
* Handle latest testtools tearDown checks
* Clean up bad layout files in zuul tests
* Handle random PYTHONHASHSEED values
* Fix status page overlap
* Fix zuul javascript cookie load
* BuildSet now has a representation
* Maintain the trigger cache after reconfiguring
* Make smtp test more robust
* Stop removing changes from the cache
* Fix queries for Zuul trigger
* Update gerrit change attributes even if merged
* Add a Zuul trigger
* add support for draft-published event
* Bump Babel requirement to >=1.0
* Add pipeline source
* Report correctly when dequeuing dependent changes
* Revert "Continue reporting on URL format KeyError"
* cloner to easily clone dependent repositories
* Add accessor for Repo.\_initialized
* Merger: support for finding branches in remote
* Merger: support for pruning remotes
* Simplify change reporting to handle errors better
* Bump hacking to 0.9.x series
* Cause the enqueue command to ignore pipeline reqs
* Cause the promote command to ignore pipeline reqs
* Remove push\_change\_refs from documentation
* Continue reporting on URL format KeyError
* Fix LOG\_PATH to use 7char uuid
* Sphinx doc for zuul {promote,show}
* Log matching trigger/change filters
* Deprecate '\_' in YAML
* Drop use of "filter" in test layouts
* Rename "filter" parameters
* Cleanup approval requirement testing
* dequeue abandoned changes
* Make swiftclient an optional dependency
* Fix swift logserver prefixes
* Use import from six.moves to import the ConfigParser module
* Use import from six.moves to import the queue module
* replace dict.iteritems() with six.iteritems(dict)
* Simplified the scheduler very slightly
* Set Last-Modified header when serving status.json
* Cache zuul status.json for one second
* Stop gzipping zuul status json in zuul
* Add toggleable yappi profiling to zuul
* Remove trailing spaces in debug log
* Fix up fetching jquery.visibility
* Use except x as y instead of except x, y
* Add base test class to make subclassing possible
* cleaning up index.rst file
* Move status dom into js app for easy reuse
* Move app.js to jquery.zuul.js to indicate a plugin
* Make zuul javascript app more modular
* Add in sparklines to status page pipelines
* Add pipeline requirement for current-patchset
* Fixed several typos in the codebase
* Provide swift credentials without requiring a connection
* Add in check for successful swift setup
* Drop formatStatusHTML() methods
* Use the full release string when showing version
* Factor out common code between cli utilities
* Add pipeline requirements
* Move status stylesheets into css file
* Fix pep8 issue with test\_scheduler
* Pass pngcrush on status png files
* Remove check that gerrit reporter has params
* Fix races in timer trigger tests
* Adjust change headings on status page
* Tweak job layout css in status page
* Add subway map to status page
* Add require-approvals to EventFilter representation
* Let webapp compress status.json if client supports it
* Fix up filter issues introduced by jshint changes
* Fix jshint linting errors
* Add support to list running jobs to zuul client
* Document zuul generated log paths
* Add de-duplication to periodic triggers
* Add expand by default option to status page
* Add a filter box to status.html
* Shorten update spinner fadeout on status page
* Add support to status page to collapse changesets
* Add a total progress bar to each change
* Format change headers like infra's status page
* Add in progress bars for jobs
* Add demo support for openstack's live zuul feed
* Revert "Allow multiple invocations of the same job"
* Send swift upload instructions to workers
* Update zuul's status page to bootstrap 3.1.1
* Build status page more jquery like
* Add gerrit/smtp port config options to the doc
* Add noop job to config validator
* Tidy up app.js - limit lines to 80chars
* Add queue-name parameter to job
* Allow merge failures to have unique reporters
* Require gear 0.5.4
* zuul.gerrit.Gerrit.isMerged should not return None
* Add internal noop job
* Add turbo-hipster to gearman-launchers
* Make zuul more worker agnostic
* Ensure there's always an http server object
* Cancel a build even if not found
* Shut down the gearman server last in tests
* Add more logging to zuul merger process
* Make zuul-merger default pidfile match init script
* Document the Zuul triggers
* Submitted is \_not\_ necessarily merged in Gerrit
* Increase replication timeout to 5 minutes
* Add configurable footer-message reports
* Fix ZUUL\_COMMIT in certain conditions
* Minor fixes to styling and coherency
* Handle builds without gearman jobs
* Ignore approvals without descriptions
* Use six.moves.urllib.parse instead of urlparse
* Retry jobs after gear disconnect
* Add gear statsd support
* Doc for project dependencies in gate
* Require gear 0.5.1
* Register merge jobs before starting the worker
* Remove double accounting of builds
* Cancel obsolete builds on reconfiguration
* Separate merger/server pidfile/logging better
* Merger: log non Git exceptions on merge
* Split the merger into a separate process
* Make queue processing more efficient
* Fix arg passing to updateRepo
* Move the merger to a JSON-compatible API
* Fix management queue test errors
* Allow workers to send back metadata
* Update trigger script for new zuul url parameter
* Log components starts in Zuul.Server
* Correct the example of zuul enqueue command
* Remove Zuul ref replication
* Remove push refs to gerrit feature
* Fix up \`zuul --version\`
* Gerrit approval records have a 'by' field
* Report queue window in status JSON
* Add require-approval to Gerrit trigger
* Document zuul rate limiting configuration
* Allow zuul to cleanup jobs outside window
* Don't store change\_queue in QueueItem
* Add rate limiting to dependent pipeline queues
* Use venv to build documentation
* make enqueue\_time passable to addChange
* Display last\_reconfigured in zuul status page
* Display zuul\_version in zuul status page
* Add zuul\_version to status.json samples
* Collect and report last reconfigured timestamp
* Move gear import to a safe place
* Add Zuul ref replication
* Update the url for the zuul git repo
* Make smtp tests more robust
* Use forced\_pipeline with timer events
* Make all changes reportable
* Add zuul version to status.json
* Allow pipelines triggers to filter by username
* Use timeout fixture (30 seconds) for tests
* Automatically provide 'name' to project templates
* Allow layered templates
* Pin Sphinx to <1.2
* Add a promote client command
* Refactor reconfiguration into a management event

2.0.0
-----

* Document zuul client
* Remove unecessary debug message
* Document zuul\_url breaking change
* Ignore .venv directory
* Fix merging transitively-connected change queues
* Add a zuul client
* Add the possibility to pass the zuul url
* GC git.Repo objects in merger.Repo operations
* Clone repo if it is not on disk
* Doc: enhance gating reference with diagrams
* register reporters on test config
* test: support voluptuous 7.0+
* doc: fix typos, missing parentheses, upper/lower case
* statsd documentation
* doc: disable intersphinx mapping
* Update trigger-job.py to pass LOG\_PATH
* Allow multiple invocations of the same job
* Better English in failing\_reasons
* doc: point directly to zuul.conf section
* Partial sync with OpenStack requirements
* Remove usage of d2to1
* Update tox.ini to current standards
* Fix NNFI bug with two failing changes at head
* Fix items\_behind error when moving a change
* Add more queue information to status JSON
* Use NNFI scheduler algorithm
* remove --pre option from tox's pip install command
* add forge author identity privilege to support pushing refs to gerrit
* On null changes serialize the id as null
* Add support for emailing results via SMTP
* Separate reporters from triggers
* Fix preprocessing for ref-updated events
* Revert bogus merger optimizations
* Fix checkout when preparing a ref
* Use an OrderedDict for pipelines
* Set merge result correctly on exceptions
* Report item stats when removing a change
* Fix graceful exit
* Don't reset the local repo
* Fetch specific refs on ref-updated events
* Use the 'resolve' merge strategy by default
* Require gear 0.4.0
* Report pipeline queue length on startup to statsd
* Add a graphite key for all jobs in a pipeline
* Re-launch a job if the worker fails to run it
* Ignore builds once they have been canceled
* Add some log lines
* Make updateChange actually update the change
* SIGUSR2 logs stack traces for active threads
* Fix unbound variable re job\_name\_in\_report
* Add option to include job name in report
* Test that custom functions are live-reloaded
* Allow url to be updated
* Add a timer trigger
* Support multiple triggers
* Fix parameter name typo in NEWS.rst
* Make a test more robust
* Stats: break out job runtimes and counts by result
* Pass the Job to the parameter function
* Use the public gear API to iterate over jobs in the queue
* Add option to validate job names
* Delay initialization of local repos
* Report an unknown time if a change ahead has failed
* Make E123 pep8 clean
* Enable warnerrors for pbr to catch Sphinx warnings
* Apply metajobs in order
* Improve precedence test
* Add elapsed and remaining time to job status JSON
* Dequeue changes immediately on merge conflicts
* Include discover in test requirements
* Add more debug logging to a test
* Include internal gearman server in docs
* Use integer comparison for patchsets
* Set build update log level to debug
* Fix trigger cache maintenance
* Add pipeline precedence
* Custom parameter function takes QueueItem
* Make E128 pep8 clean
* Replace assert statements with method calls
* Add manual job triggering script
* Use fixtures.TempDir directly
* Add TESTING file
* Perform live reconfiguration
* Add layout config object to model
* Idempotent scheduler and QueueItems
* Add a JSON status test
* Use daemon threads
* Fix testr configuration
* Add ability to skip log capture
* Migrate to testrepository
* Rename requirements files to standard names
* Migrate to pbr
* Use flake8/hacking instead of pep8/pyflakes
* Fix signal handler
* Require gear 0.3.1
* Handle failed jobs with no results

1.3.0
-----

* Add doc for jobs voting parameter
* Add enqueue\_time to JSON output for a change
* Update to gear 0.2.0
* Wait for internal gearman server to settle
* Update to new zuul-gearman protocol
* Add optional internal gearman server
* Use gear release version 0.1.1
* Update to new Gear API
* Add a test for changes that trigger multiple pipelines
* Use a relative URL for status.json
* doc: rename manpage from \`zuul\` to \`zuul-server\`
* Add the ability to set git user.email and user.name
* Revert "report message even if no action is specified"
* Switch the launcher to Gearman
* Sync from oslo-incubator
* fix message report when no action is given
* Ignore pep8 E123
* make report times a little more user friendly
* Drop Jenkins.getBestBuildURL() method
* report message even if no action is specified
* In FakeStatsd, use select() rather than poll()
* Zuul status page: Redesign and fix bugs
* project templating system
* Fix config test interaction with report\_times
* Add option to report elapsed build times
* soften statsd version requirement to allow v2
* doc: sync usage with recent changes
* Test statsd
* fix WebOb dependency
* Convert README to reStructuredText
* Update to latest openstack.common.setup code
* Fix import error for zuul version with docs

1.2.0
-----

* zuul-server learned --version
* Add ability to restrict jobs to specific files
* Pin voluptuous <0.7
* Document zuul-changes.py tool script
* Add a utility script for mass-comments
* Fix test race condition
* Treat any non-success result as a failure
* Give the result event queue priority
* Gerrit 2.5/2.6 stream-events has new event types
* update remote on ref-update
* support to update a repository
* Make trigger/result queue lengths available to status page
* Restart jobs behind a removed change
* Remember merges to save time
* Correct two links
* Test that Zuul refs end up in the correct repos
* Update Voluptuous requirement to version 0.6
* Make canceling a queue item a POST request
* Revert "Dequeue changes if they have no hope of merging."
* isUpdateOf check field presence before comparison
* Dequeue changes if they have no hope of merging
* Dequeue changes when new patchset created
* Update URL for openstack zuul example
* Update zuul doc to cover SIGUSR1 behavior
* Add basic status HTML/JS
* representation for Ref objects
* Report pipeline stats
* Add layout validation env to tox.ini
* sphinx is now stricter
* Make report message introduction configurable
* Add layout file validation
* Remove the scheduler queue lock
* Treat LOST jobs as failures in didAnyJobFail()
* Be more cautious with stats calculations
* Fix exception calculating run time for lost builds
* precision on email\_filter
* Output comment and email filters in debugging
* Add statsd
* Set change url to gitweb URL
* Add JSON status endpoint
* Add per-job URL patterns
* reset on origin/HEAD not master
* filter events by user email
* Update README for project move
* Updated .gitreview location
* Pin docutils

1.1.0
-----

* Support sshkey in merger
* Really use try\_imports
* Use try\_imports rather for conditional imports
* Use entrypoints for zuul-server
* let us specify Gerrit root URL
* document Jenkins user permissions
* Import oslo-incubator for versioning
* Reinitialize the repo object after a fetch
* Log merge errors (at level DEBUG)
* Retry git fetches to work around GitPython bug
* doc about a post-merge pipeline
* Fix typo with log\_config in zuul.conf-sample
* honor ZUUL\_UUID where UUID is used
* raise exception when info reference cant be found
* Fix non-deterministic test
* Add ZUUL\_COMMIT
* Make tests more deterministic (hopefully)
* Handle branches or refs in job specification
* Add documentation about serving Zuul refs
* Fix ref comparison
* Provide link to status page in Gerrit comments
* log exception on invalid jenkins notifications
* Remove pep8 ignores
* Fix gerrit port number setting
* Fix pep8 E127 violations
* Revert "Fix pep8 E127 violations"
* handle KeyboardInterrupt
* \`git\_dir\` parameter in zuul.conf sample
* fix back compat issues with python modules
* update pip dependencies
* Fix pep8 E127 violations
* update github URLs in documentation
* Move terminology from "queue" to "pipeline"
* Switch to smart HTTP mode
* Fix deadlock with nonexistent jobs
* Clear the git repo cache on update
* Restrict test coverage to the zuul package
* Don't set ahead/behind on independent queues
* Refactor change queue
* Fix problem with dependent changes
* Make url\_pattern optional
* Change build URLs
* Add non-voting jobs
* Make test root configurable
* Dequeue failed change at head early
* Dequeue changes that depend on a dequeued change
* Add test case for projects with one job
* Run jobs for change behind after builds complete
* Track and work around erroneously lost builds
* Add nosehtmloutput as a test dependency
* Add more parameters to launcher
* Make pushing zuul refs upstream optional
* Fix merger handling of branches
* Push zuul-merged refs to gerrit
* Have zuul handle merge failures
* Add merging capability
* Fix status output for ref changes
* Log exceptions formatting HTML status
* Return correct pipeline name in str method
* Fix problems with ref pipelines
* Fix HTML status for dependend change queue
* Fix typo in status format
* Fix bug with looking up a job tree
* Just check that ref has changed when merging
* Add pipelines to data model
* Fix the zuul-coverage job (test-requires update)
* Wait for a commit to appear in the repo
* Add more tests
* Add more tests
* Add Sphinx to test-requires
* Add more tests
* Add functional tests
* Test changes in dependency order
* scheduler.py cleanup
* Add Clark Boylan to the authors file
* jenkins.py cleanup
* Fix typo related to post merge jobs
* Fix using failure as success message
* Set change\_behind to None when change is deleted
* Fix problem with duplicate change suppression
* Cancel jobs behind a failed change
* Don't enqueue changes that are already in the queue
* Add job option to hold following changes
* Don't report changes that have already been reported
* Add more debugging around lost builds
* Add parameter function and job branch specs
* Use default state\_dir
* Add graceful exit
* Add build descriptions to Jenkins
* Keep build information around longer
* Fix debug message when waiting for reconfiguration
* Add ability to filter patchset comments
* Add links to change pages on /zuul/status page
* Add links to jobs in zuul status page
* Report more useful Jenkins URLs
* Use pep8 1.2
* Fix matching events without approvals
* Fix exception querying for lost builds
* Add a really basic status page
* Add start actions
* Fix some logging issues
* Handle Jenkins not launching a job
* Add documentation
* Don't set the wake event if reconfiguring
* Add sample configs
* Use paramiko for stream-events
* Don't report changes without actions
* Ensure a change's project is relevant
* Fix lost build detection
* Update README
* Change queue to queues in config
* Add meta-jobs
* Add support for ref-updated events
* Setup logging inside of the daemon context
* Daemonize zuul
* Fix missing build warning
* Add dynamic reconfiguration
* Add Jenkins cleanup thread
* Remove stray print statements
* Fix logic error in reporting
* Use GERRIT\_CHANGES
* Add missing params to launcher
* Change default jenkins port
* Change port for jenkins listener
* Add .pyc to gitignore
* Add package to setup.py
* Initial commit
