Skip to content

Deployment Documentation

Peter Herbst edited this page Jul 4, 2021 · 5 revisions

How to set up the Deployment of Frontend and Backend?

Frontend

To build the Frontend one can simply follow the steps stated here. For example I used the following code line in the code directory of the repository:

expo build:ios -t simulator --release-channel staging

Expo then handles the whole building process by itself. Depending on the current workload of the Expo Building-Engine the setup of the build takes around 20 minutes. The current workload of the Building-Engine can be seen here. The building status can be followed in the Expo dashboard of the respective user account.

Automatic Deployment via GitHub Action

To automate this we use Expo GitHub Actions provided here. The used action in our case can be found here. After each published release, the action is triggered and starts to build the frontend app for Android and iOS. As soon as the build-process is finished, the builds (.apk for Android or .app for iOS) can be downloaded via the Expo.io dashboard of the organisation "Bikenest". The organisation was created to manage the Expo publishing without dependence on personal accounts, though anyone can be added or removed from the organisation (see also here).

Based on the current stage of the project, the build will not be published automatically to any of the app stores. To do that the documentation here will help. Another option could be to change the Expo project from private (currently) to public, then users could access the builds too and download them.

Backend

The Backend services are all containerized and can therefore be deployed either by using the available docker-compose file after changing some configuration or can be deployed with Kubernetes. Basic Kubernetes config files are also already available. The container images are build and pushed to our public dockerhub repositories using Github Actions. From there they can be pulled by the deployment server. We successfully tested the deployment with a Hetzner Cloud Server. Further information can be found inside the Backend README.md.

Clone this wiki locally