matthewkmayer / release-party-br Goto Github PK
View Code? Open in Web Editor NEWRelease party automation
License: MIT License
Release party automation
License: MIT License
Clean up formatting.
Clippy will help by using better patterns.
A wild bug report:
RP_GITHUBTOKEN=ghtoken release-party-br --org "https://api.github.com/orgs/ORG-HERE/repos"
thread 'main' panicked at 'expected repos: "Couldn\'t deserialize repos from github: invalid type: map, expected a sequence at line 1 column 1"', src/libcore/result.rs:860:4
note: Run with `RUST_BACKTRACE=1` for a backtrace.
Proposal: check if the org
argument has http
or api.github.com
in it and gracefully exit with something like "please supply just the org name."
https://developer.github.com/v3/#rate-limiting has the details.
reqwest and hyper should both be updated to the latest version.
Requires some refactoring due to breaking changes.
https://github.com/travis-ci/travis.rb#setup should be helpful.
Right now we need to specify something like --org_url "https://api.github.com/orgs/MY_ORG_HERE/repos"
when we should be able to switch to --org-name MY_ORG_HERE
and create the URL ourselves
Inspect commit messages for ticket numbers and add them as a bulleted list in the release PR.
EG:
release partay!
* blah-1234
* foo-333
* baz-99999
No need for links to tracking software at the moment.
It's not clear why running release-party fails if a token is given with insufficient permissions or it's just wrong:
RP_GITHUBTOKEN=foo cargo run -- --org a-real-org
thread 'main' panicked at 'expected repos:
"Couldn\'t deserialize repos from github: invalid type: map, expected a sequence at
line 1 column 1"', src/libcore/result.rs:906:4
note: Run with `RUST_BACKTRACE=1` for a backtrace.
Desired behavior would be to report the GH response back to the user. If they return a 401, let the user know that and suggest they double check the token.
Report back what PRs would be created without actually creating them.
https://github.com/kbknapp/clap-rs .
Creds (github token) should stay in env vars, but RP_ORGURL
could be a command line arg as well as the pending dry-run and yolo behavior.
Right now we fetch the top 100 repos and hope that's enough to get all repos for an org. There are some notes in the source on how to get the next page of repos. This will be required when we need to look at more repos than we can get in a single page. The limit is 100 repos per page.
The github api docs has more details on pagination.
Something shiny like https://github.com/mitsuhiko/indicatif . ๐ฏ
Add a changelog. See http://keepachangelog.com/en/1.0.0/ for more details.
Reqwest docs state we should reuse the Client for keep-alive connection pooling
. This will give a slight performance boost.
Seen in the wild on 0.5.0:
thread 'main' panicked at 'Couldn't deserialize repos from github: invalid type: map, expected a sequence at line 1 column 0', src/github/mod.rs:285:19
Commit shape changed?
https://github.com/matthewkmayer/release-party-BR/blob/v0.5.0/src/github/mod.rs#L285
Unable to reproduce on my machine. ๐ฟ
The github module has a few unwrap
s in it. We should check those and fail gracefully instead of falling over.
Time for a new release!
What do we need for public repos? Private repos?
No tests and this should have tests.
Right now the list of repositories to check is visited sequentially. We could speed things up considerably by parallelizing it. Rayon may be a good fit. Out of the box it will use one thread per CPU core and we could use more.
Make sure code conforms to styling guides.
Being a library we should include Cargo.lock for reproducible builds.
README is still all about compiling the project yourself. It should contain instructions for "regular" use of downloading a precompiled binary with extra bits on how to compile from source.
Actually reviewing the release to prod PRs too much work? Use release-party-br --yolo
to find existing PRs from master to release and merge them with a PR comment of LEEROY JENKINS
.
The Github personal access token is an integral part of release-party but it's not documented in the CLI args.
Should it be a CLI arg instead of an env var?
How about putting information in the CLI description so it's displayed when run with --help
?
cargo outdated
shows a few outdated deps, upgrade those.
Get clippy running on the project.
Make this run on TravisCI for Linux and OSX, Appveyor for Windows.
Let's publish binaries for OSX and Linux on tagged releases.
Right now we require users to have Rust installed. Let's ditch that requirement.
#63 adds some panicking if things aren't right. However the new behavior of suggesting an org to use is in a bit of an ugly panic message.
Desired behavior: exit cleanly after printing why we're bailing.
There's both --dry-run
and --org_url
. Let's go with spinal case, so switch org_url
to org-url
.
https://github.com/mgattozzi/github-rs instead of rolling our own.
Add a link to included PRs in the master
-> release
pull request for easier review of changes.
A declarative, efficient, and flexible JavaScript library for building user interfaces.
๐ Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. ๐๐๐
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google โค๏ธ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.