CHANGES
=======


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
* 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
* Include zookeeper.hosts in ZFS example zuul.conf
* OpenDev Migration Patch
* web: add triggers information to pipeline list
* Clarify .zuul.d directory
* Fix for yappi output

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 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
* 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
* 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
* 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

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
* 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
* 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
