CHANGES
=======

* Revert "Store ssh_host_key of remote node"
* Always create foreign projects if needed
* Store ssh_host_key of remote node
* Simplify zuul_console port binding logic
* Move other-requirements.txt to bindep.txt
* Ansible launcher: retry publisher sync tasks

2.5.0
-----

* Cloner: correct fetch on pre-1.9 git
* Ansible launcher: set remote_tmp
* Ansible launcher: Use port 19885 for console streaming
* Revert "Make job registration with labels optional"
* Ansible launcher: fail on watchdog timeout
* Use fetch instead of update in merger
* 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
* 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
* 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
* Detect dependency cycles introduced with new patchsets
* Register connections when testing configuration
* Fix test for new WebOb
* Split pipeline description by double newlines on status page
* 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
* 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
* Fix memory leak reloading triggers
* Don't require 'commit' attribute in merge event
* Remove argparse from requirements
* 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
* Bump APScheduler to >=3.0
* Fix regression in change tracking
* Add exception handler to updateBuildDescriptions
* Clarify zuul-cloner message about missing branch
* Deprecated tox -downloadcache option removed
* Connection names for legacy configs
* Add vim swap files to .gitignore
* Fix documentation example
* 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
