services/README.asciidoc

87 lines
2.6 KiB
Text
Raw Normal View History

= Flow Services
2023-12-16 17:20:48 +00:00
== Overview
The repository manages the services hosted on Flow Platform with the use of https://go.dev[Go] and https://magefile.org/[Mage].
== Currently hosted services
[%header,cols=3*]
|===
|Name
|Description
|Link
|Landing
|The front page of the Flow Platform.
|https://dananglin.me.uk
|Free Flow
|A single-user ActivityPub instance powered by https://docs.gotosocial.org/en/latest/[GoToSocial].
|https://freeflow.dananglin.me.uk
|Code Flow
|The Flow Platform's software forge powered by https://forgejo.org/[Forgejo].
|https://codeflow.dananglin.me.uk
|Work Flow
|A simple CI engine powered by https://woodpecker-ci.org/[Woodpecker].
|https://workflow.dananglin.me.uk
|===
== Mage targets
[source,console]
----
$ mage -l
Targets:
backup creates a backup of the specified service.
2023-12-16 17:20:48 +00:00
clean cleans the workspace.
deploy deploys the service(s) to the Flow Platform.
2023-12-16 17:20:48 +00:00
prepare prepares the service's build directory.
shutdown shuts down the Flow Platform in a given environment.
stop stops a running service within the Flow Platform.
----
== Deployment guide
The `config` directory contains the Flow Platform's configuration (e.g. versions of hosted software, etc). It is a submodule of a hidden repository due to the sensitive nature of the configuration.
1. _(Optional)_ Run `mage prepare <environment> <service>` to run preparations before deployment. Here the relevant files to run the service are downloaded, templates are rendered and static assets are copied to the build directory (if required). Step is optional because the 'deploy' stage automatically runs 'prepare' as a dependency. For example:
+
[source,console]
----
mage prepare production forgejo
----
2. To deploy changes to Platform, run `mage deploy <environment> <service>`. The deploy target runs the prepare target as a dependency. For example:
+
[source,console]
----
mage deploy production forgejo
----
== Backup Guide
There is support for backing up the data for some of the services, e.g. `forgejo`. You can use mage to run the backup for a specific service.
[source,console]
----
mage backup production forgejo
----
Here mage will stop the running service and recreate the container running the specific backup script for that service. If there is no backup support for a particular service mage will inform you of this.
[source,console]
----
$ mage backup production traefik
Backup is not supported for "traefik".
----
Currently the service will not automatically resume after the backup is completed but you can achieve this with a chain command.
[source,console]
----
mage backup production forgejo && mage deploy production forgejo
----