Treehub implements an ostree repository storage for over the air
updates. This project is part of ota-community-edition.
This project implements an HTTP api that ostree can use to natively
pull objects and revisions to update an ostree repository.
An HTTP api is provided to receive ostree repository objects and
refs from command line tools such as garage-push, included with
sota-tools.
Edit application.conf and run sbt run.
Check ota-community-edition for documentation on how to run this project as part of ota-community-edition.
To test the current implementation, the following steps can be followed:
-
Install
ostreeThis can be done with your package manager, for example:
apt install ostree -
Create a ostree repository
ostree --repo=myrepo-developer init --mode=archive-z2 -
Commit a filesystem tree to the repository
mkdir developer-files echo "This is my file. There are many files like this, but this one is mine." > developer-files/myfile.txt ostree --repo=myrepo-developer commit --subject 'created my new shiny file' \ --branch=master --tree=dir=developer-files -
Push your local
ostreerepository to treehub using thegarage-pushtool. Please follow the instructions for installation in the aktualizr repository. It will suffice to only build garage-push withmake garage-pushinstead of all default targets withmake. Then run garage-push:./src/sota_tools/garage-push --repo myrepo-developer --ref master --credentials <credentials.zip> -
For versions of aktualizr/garage-push before 6d025cf17d1600a780a13a7624f8e287c9aaf94c, you will also need to manually push the OSTree ref to treehub:
curl -XPOST https://treehub.ota.api.here.com/api/v3/refs/heads/master \ -H "Authorization: Bearer $DEVICE_TOKEN" \ -d $(cat myrepo-developer/refs/heads/master) -
You can now pull your changes in another machine, acting as the client, or the same machine, to test the changes.
ostree --repo=myrepo-client init --mode=archive-z2 ostree --repo=myrepo-client remote add \ --no-gpg-verify garage \ https://treehub.ota.api.here.com/api/v3/ master ostree --repo=myrepo-client pull \ --http-header="Authorization=Bearer $DEVICE_TOKEN" garage -
You now have your changes locally and you can checkout the files:
ostree --repo=myrepo-client checkout master checkout cat checkout/myfile.txt This is my file. There are many files like this, but this one is mine.