[snowpatch] Announcing snowpatch 0.2
Russell Currey
ruscur at russell.cc
Fri Aug 10 19:33:29 AEST 2018
It has been over two years, but we finally went from snowpatch 0.1 to 0.2, marking
us completing all the things we needed to in order to be deployed in production
running on upstream Patchwork. A lot of changes were necessary in Patchwork in
order to introduce the features we needed, which was a large blocker.
In terms of snowpatch itself, the codebase has matured a lot - we now have
automatic linting and have done a lot of tidying up (though there's much more to
do). We had to change HTTP libraries (from hyper to reqwest), serialisation
frameworks (from rustc_serialize to serde), and implement support for a completely
different Patchwork API to what we originally used.
It has been worth it, though, because now we are running in production for
multiple projects on patchwork.ozlabs.org, most notably linuxppc-dev where
snowpatch runs 4 different kernel builds, with intelligent sparse diffs, on every
complete series. This has already found bugs and most notably, caused submitters
to send a v2 before any human involvement told them they should.
There's still more to do in snowpatch, but there is certainly less to do than
there was, so we will most likely be tagging releases much more frequently. The
primary next objective is to expand what we use snowpatch for, and hopefully
expand its use - now that things have been running in production with no
disasters, I plan to announce snowpatch's existence on the mailing lists for
Patchwork and all the projects it's currently testing.
In addition to this, we need to do a better job of documentation and making it
simple for others to get snowpatch going - we're pretty sure the only production
instance of snowpatch out there is the one I'm running - and now that kernel.org
in particular has updated their Patchwork, there's the possibility that a heap of
projects could use snowpatch if they wanted to, so getting the word out and making
it easy is what we need to do.
I plan to release a blog post soon going over the snowpatch workflow which will
hopefully be a good reference point.
Special thanks to Andrew, without whom nothing would get done because we would
probably both procrastinate, but seeing each other helps remind us to do things.
Anyway, since snowpatch-0.1 we have had the following giant pile of commits:
Andrew Donnellan (55):
Initial support for testing from multiple base branches
docs: add new contribution guidelines document
jenkins: add wait_build() method to poll Jenkins build status at intervals
jenkins: get_build_status(): give a better error when JSON decoding fails
settings: print better errors when config deserialisation fails
docs: add details about patch tracking on patchwork.ozlabs.org
settings: remove unnecessary import and associated warning
Include branch name in test results sent to Patchwork
patchwork: refactor GET request boilerplate into private method
jenkins: refactor HTTP boilerplate
Cargo.toml: add additional crate metadata
Cargo.lock: update dependencies
jenkins: refactor to get rid of lifetime specifiers
Allow use of the --project flag in polling mode, not just with --mbox
jenkins: support token authentication
examples: fix authentication details in example config
README: document dependencies better
Cargo.lock: update dependencies
patchwork: replace unneeded extern crate with use
Add documentation on clippy, fix clippy warnings
Cargo.toml: update dependencies
Cargo.toml: update yup-hyper-mock
Make TestState less horrible
jenkins: get build result
Cargo.toml: update dependencies
Migrate from rustc_serialize to serde
clippy warnings: use of assert_eq!()
examples: update/improve openpower.toml
settings: add basic tests
settings: improve parsing of jobs
git: remove empty test
Update dependencies
main: Use SSL connector for non-proxied connections
Update Cargo.lock
patchwork: Get rid of dummy URL for test results
Cargo.toml: Update url, mime dependencies
Cargo.toml: Update docopt dependency
Cargo.toml: Update log, env_logger dependencies
Use up-to-date commit ID when creating new test branch
CONTRIBUTING.md: Update references, add rustfmt information
README.md: Update copyright date
README.md: Overview of snowpatch philosophy
README.md: Update installation instructions
README.md: Add information about project status and documentation
docs: Add configuration documentation
snowpatch 0.2.0-beta.0
snowpatch 0.2.0-beta.1
README.md: Add Crates.io badge
Don't test pull requests
Fix --series option
Support pagination when using --count
Fix clippy warnings
Update Cargo.lock
jenkins: rustfmt style fixes
snowpatch 0.2.0
Joel Stanley (1):
Add Travis CI
Russell Currey (39):
Update README to look prettier on GitHub
Move the Travis build status into the header
Treat build warnings as failures
Use patchwork "linkname" instead of "name"
Don't retest patches that have already been tested
Update dependencies
Update deps, bumping url crate to 1.1
HTTP proxy support
Add env_logger and update dependencies
Enable env_logger logging, use logging macros
docs: Add documentation for logging
Fix bad markdown in logging.md
args: Fix (-v | --version)
Update dependencies: git2 0.4, url 1.2 and more
jenkins: retry when Jenkins doesn't give us a build URL
hyper: Always follow redirects
utils: add additional characters to path sanitiser
git: Use 3-way merge when applying patches
patchwork: fix polling sleep time
git: print info when apply fails
Replace ssh agent authentication with explicit key
git: force reset + clean the repository before applying patches
jenkins: post URL to test results
Allow specifying a title for each job
Upstream Patchwork support
Hefty tests
Add warn-on-fail for non-critical tests
Remove jenkins_test and explicit [[bin]] section
Cargo.lock minor point updates
Style changes from rustfmt
Add script to set up running rustfmt on commit
Convert from hyper to reqwest
Require project argument to be specified for daemon mode
Delete remote branch after tests are done
Jenkins: Try again instead of panic if API call fails
Don't link to job console output, link to job instead
Clean up an unnecessary clone
Implement sending results to Patchwork for --patch
Improve "context" sent in Patchwork checks
More information about the snowpatch
mailing list