Need for manual review loses intent to release to channel
Affects | Status | Importance | Assigned to | Milestone | |
---|---|---|---|---|---|
Launchpad itself |
Fix Released
|
High
|
Tom Wardill | ||
Snap Store Server |
Fix Released
|
Undecided
|
Tom Wardill |
Bug Description
Steps to reproduce:
- Push a classic snap to the edge channel
What happens:
- The snap is flagged for manual review
- After successful review the snap is not published to edge
What should happen:
- The snap is flagged for manual review
- After successful review the snap is published to edge
Demonstrated here:
☻ snapcraft push --release=edge awscli_
Preparing to push 'awscli_
Pushing awscli_
Processing...|
Will need manual review...
Publishing checks failed.
To release this to stable channel please request a review on the snapcraft list.
Use devmode in the edge or beta channels to disable confinement.
- (NEEDS REVIEW) confinement 'classic' not allowed
☻ snapcraft status awscli
Track Arch Channel Version Revision
☻ snapcraft revisions awscli
Rev. Uploaded Arch Version Channels
1 2017-04-
☻ snapcraft release awscli 1 edge
Track Arch Channel Version Revision
latest amd64 stable - -
The 'edge' channel is now open.
Related branches
- Colin Watson (community): Approve
-
Diff: 679 lines (+52/-351)9 files modifiedlib/lp/snappy/emailtemplates/snapbuild-manualreview.txt (+0/-5)
lib/lp/snappy/emailtemplates/snapbuild-releasefailed.txt (+0/-7)
lib/lp/snappy/interfaces/snapbuild.py (+3/-0)
lib/lp/snappy/interfaces/snapstoreclient.py (+0/-15)
lib/lp/snappy/mail/snapbuild.py (+0/-28)
lib/lp/snappy/model/snapbuildjob.py (+4/-21)
lib/lp/snappy/model/snapstoreclient.py (+8/-41)
lib/lp/snappy/tests/test_snapbuildjob.py (+2/-122)
lib/lp/snappy/tests/test_snapstoreclient.py (+35/-112)
Changed in snapstore: | |
status: | New → Won't Fix |
tags: | added: snap-releases snap-reviews |
Changed in snapstore: | |
assignee: | Colin Watson (cjwatson) → Tom Wardill (twom) |
Changed in snapstore: | |
status: | New → In Progress |
Changed in launchpad: | |
status: | New → In Progress |
importance: | Undecided → High |
assignee: | nobody → Tom Wardill (twom) |
tags: |
added: qa-ok removed: qa-needstesting |
Changed in snapstore-server: | |
status: | In Progress → Fix Released |
While snapcraft provides the --release flag as a convenience, in reality the process happens in distinct stages:
- First the snap is pushed to the store
- Once pushed, it undergoes review. Snapcraft waits to hear from the store on the result.
- If the store says the snap is ready to publish (passed automated review) then snapcraft issues a publish API request to the specified channel.
But note that if the store says the snap is NOT ready to publish (held for manual review, held behind another upload pending review or outright failed automated review) then snapcraft exits and doesn't have a chance to issue the publish request. Like you observed, an explicit snapcraft release is required in order to publish at this point.
Keeping these steps separated store-side makes sense since, for instance, there's no guarantee about how long the snap will take to complete its review. If, hypothetically, the snap were pushed with some bit saying "publish to stable when it's reviewed", and it gets held for review, it could end up being published hours or days after being uploaded, a behavior which could be surprising for developers or users.
Also, we've seen cases of developers changing their snaps in response to automated review error messages, this suggests sometimes the automated review did catch problems which the developer prefers not having published. If a reviewer happens to miss one of those errors, approves the snap and it gets auto-published from under the developer, an undesirable snap may end up being published. Halting the publishing process in the face of automated review failure makes sense in this context.
To be clear, the behavior you describe can be implemented, though it will require design and implementation with some consideration of the above and other possible scenarios.