Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

feat: support of partial rollouts of patches #783

Closed
eseidel opened this issue Jul 7, 2023 · 5 comments
Closed

feat: support of partial rollouts of patches #783

eseidel opened this issue Jul 7, 2023 · 5 comments
Assignees
Labels
blocks customer Known to block at least one large customer bug Something isn't working customer: maple

Comments

@eseidel
Copy link
Contributor

eseidel commented Jul 7, 2023

This is related to #110, but #110 was closed after the infrastructure was landed, but before we actually released a fully working feature.

What blocked our release of a fully working feature, was that we realized we had no way to know which devices were/weren't in a specific test group from Google/Apple.

However upon further discussion with customers, simply disabling automatic update behavior e.g. #716 may be sufficient for them to implement this themselves, but making their own call to their servers and then choosing based on the user/device whether to install a patch via package:shorebird_code_push apis.

This bug covers completing the work to make partial rollouts of packages work (via whatever mechanism).

Some customers may also wish to use this for A/B testing (which may imply additional analytics work).

@eseidel eseidel added the bug Something isn't working label Jul 7, 2023
@bryanoltman bryanoltman added this to 1.0 Sep 13, 2023
@bryanoltman bryanoltman moved this to Customers in 1.0 Sep 13, 2023
@bryanoltman bryanoltman added blocks customer Known to block at least one large customer customer: maple labels Sep 13, 2023
@bryanoltman
Copy link
Contributor

Implementing this would allow for customers to test/verify patches before releasing them to their full user base.

@felangel felangel self-assigned this Sep 28, 2023
@felangel felangel moved this from Customers to In Progress in 1.0 Sep 28, 2023
@eseidel
Copy link
Contributor Author

eseidel commented Oct 2, 2023

I think what the customer is asking for is just a way to test a patch locally on their device, before going live.

So something as simple as:

shorebird patch android --staging

Which then says at the end:

This patch is not yet live.  Preview it with:
shorebird preview --app_id=abcd --release_version=1.0+1 --staging

You can make it live at the release page with "make live":
https://console.shorebird.dev/app_id/abcd/releases/1234

@eseidel
Copy link
Contributor Author

eseidel commented Oct 2, 2023

Another way might be:

shorebird patch android --stage-to=test
This patch is staged to `test`.  Preview it with:
shorebird preview --app_id=abcd --release_version=1.0+1 --channel=test

You can make it live at the release page with "make live":
https://console.shorebird.dev/app_id/abcd/releases/1234

@eseidel
Copy link
Contributor Author

eseidel commented Oct 2, 2023

Another proposal from Felix is to just make shorebird patch default to non-live (which I think we want eventually anyway).

So the flow would be:

% shorebird patch android
This patch is staged.  Preview it with:
shorebird preview --app-id=abcd --release-version=1.0.0+1 --include-staged

You can make it live from the console:
https://console.shorebird.dev/app_id/abcd/releases/1234

You could imagine having a flag:
shorebird patch android --make-live which did the old behavior.

@felangel
Copy link
Contributor

felangel commented Oct 5, 2023

This should be done now 🎉

@felangel felangel closed this as completed Oct 5, 2023
@github-project-automation github-project-automation bot moved this from In Progress to Done in 1.0 Oct 5, 2023
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
blocks customer Known to block at least one large customer bug Something isn't working customer: maple
Projects
No open projects
Status: Done
Development

No branches or pull requests

3 participants