[EPIC] Fix how we handle updates to components
Problem
-
The old model of an automatic updater:
- detected an updated component.;
- Downloaded the update;
- Committed it directly to the `master` branch ;
- Updated the `.version_code` of the component.
This is no longer appropriate because some components
- are too big to be stored in git, even using `git-lfs` (see #53 )
- need additional changes - e.g. to permissions files - in order to work (see #36 )
Some issues have already been raised, and fixes implemented to deal with some of these issue,
- [Change updater action to not commit direct to master branch #48 ](#48) was raised, and (partially fixed) to stop updates being committed to `master` until they had been checked / tested
- [Get microg GmsCore & FakeStore direct from GitHub not from this repo #65 ](#65) introduced the `vendorsetup.sh` script, which, for the microG components, pulls the version of the component specified in `.version_code` directly from the component's github `releases` page, at build time.
Solution requirements
-
For all of the components included in this project:
1. the need for an update is detected automatically;
2. the new component can be tested ***before*** the repository code is changed to use the updated component;
3. the number of times a component is downloaded is minimised: github imposes bandwidth limits on projects it hosts (including the projects / components we use), and our use of those components should minimise how much of that bandwith we use.
Solution implementation
-
1. A 'Check for Updates` action checks whether new versions are available. If they are, for each compnent with an update, it creates an ***issue*** with the title 'Update <component-name> to version <version-code>'.
2. A project maintainer will 'fix' the issue, by trying the new component: if the new component is OK, the maintainer will commit a change to the `.version_code` file for the component, causing the `vendorsetup.sh` script to download the updated component at build time.
3. The issue will be closed, once a monthly build run is completed that includes the updated components.
2 条评论