Elaborate on how firmware updates work

pull/1102/head
Connor Rigby 2019-12-31 11:05:06 -08:00
parent 1c9b8dbd7c
commit 6fbb0c6ac8
No known key found for this signature in database
GPG Key ID: 29A88B24B70456E0
1 changed files with 70 additions and 10 deletions

View File

@ -1,14 +1,62 @@
# Publishing OTAs
## Beta
## Beta OTA channel
Publish an OTA to the `beta` channel can be done by:
Beta updates are simply tags matching the following semver string:
```
vMajor.Minor.Tiny-rcRC
```
for example:
```
v10.5.6-rc30
```
To publish an OTA, just tag a release matching that
string.
```bash
cd $FARMBOT_OS_ROOT_DIRECTORY
git checkout staging
git fetch --all && git reset --hard origin/staging
echo 10.5.6-rc30 > VERSION
# update the CHANGELOG, but DO NOT put the `rc`
# on the semver string.
$EDITOR CHANGELOG.md
git add CHANGELOG.md VERSION
git commit -m "Release v10.5.6-rc30"
git tag v$(cat VERSION)
git push origin staging v$(cat VERSION)
```
or call the helper script:
`./scripts/release_candidate.sh`
### NOTE about release candidate script
the helper script only **increments** the
RC version. Calling the `release-candidate` script
from a non rc version will fail. Example:
This will fail:
```bash
$ cat VERSION
10.5.6
./scripts/release_candidate.sh
```
## QA
This will succeed:
```bash
$ cat VERSION
10.5.6-rc44
./scripts/release_candidate.sh
```
## QA OTA channel
Publish an OTA to the `qa` channel can be done by pushing a new branch
to github with `qa/` prefix.
@ -18,17 +66,29 @@ git checkout -b qa/<some-name>
git push origin qa/<some-name>
```
## Production
Publish an OTA to the `stable` channel can be done by:
or to build a QA image from an existing branch:
```bash
git checkout -b some-feature
git commit -am "build out some feature"
git push origin some-feature some-feature:qa/some-featuer
```
## Stable OTA channel
Publish an OTA to the `stable` OTA channel can be
done by pushing anything to the master branch:
```bash
git checkout -b rel-<version>
# update VERSION
echo $NEW_VERSION > VERSION
# update CHANGELOG.md
# update README.md
git commit -am "Release v<version>"
git push origin rel-<version>
$EDITOR CHANGELOG.md
# update the download link in the readme
$EDITOR README.md
git checkout -b rel-$(cat VERSION)
git commit -am 'Release v$(cat VERSION)'
git push origin rel-$(cat VERSION)
# open pull request
# merge pull request
# publish release once CI has completed