Skip to content

Commit

Permalink
docs: add documentation for latest changes to the update manager
Browse files Browse the repository at this point in the history
Signed-off-by: Eric Callahan <[email protected]>
  • Loading branch information
Arksine committed Jul 8, 2021
1 parent dacd9f7 commit d60b852
Show file tree
Hide file tree
Showing 2 changed files with 97 additions and 16 deletions.
48 changes: 38 additions & 10 deletions docs/configuration.md
Original file line number Diff line number Diff line change
Expand Up @@ -394,10 +394,22 @@ enable_auto_refresh: False
# When set to False Moonraker will only fetch update state on startup
# and clients will need to request that Moonraker updates state. The
# default is False.
distro: debian
# The disto in which moonraker has been installed. Currently the
# update manager only supports "debian", which encompasses all of
# its derivatives. The default is debain.
enable_system_updates: True
# A boolean value that can be used to toggle system package updates.
# Currently Moonraker only supports updating packages via APT, so
# this option is useful for users that wish to experiment with linux
# distros that use other package management applications, or users
# that prefer to manage their packages directly. Note that if this
# is set to False users will be need to make sure that all system
# dependencies are up to date. The default is True.
channel: dev
# The update channel applied to Klipper and Moonraker. May be 'dev'
# which will fetch updates using git, or 'beta' which will fetch
# zipped beta releases. Note that this channel does not apply to
# client updates, a client's update channel is determined by its
# 'type' option. When this option is changed the next "update" will
# swap channels, any untracked files in the application's path will be
# removed during this process. The default is dev.
```

### Client Configuration
Expand All @@ -412,8 +424,9 @@ service restart such as Fluidd/Mainsail.
```ini
# moonraker.conf

[update_manager client client_name]
[update_manager client_name]
type: web
# Indicates that this is a web client.
repo:
# This is the GitHub repo of the client, in the format of user/client.
# For example, this could be set to cadriel/fluidd to update Fluidd or
Expand All @@ -426,22 +439,29 @@ persistent_files:
# themes. The default is no persistent files.
```

This second example is for git repositories that have a service that need
updating. Note that git repos must have at least one tag for Moonraker
This second example is for "applications". These may be git repositories
or zipped distributions.

Note that git repos must have at least one tag for Moonraker
to identify its version.

```ini
# moonraker.conf

# service_name must be the name of the systemd service
[update_manager client service_name]
[update_manager service_name]
type: git_repo
# Can be git_repo, zip, or zip_beta. See your the client's documentation
# for recommendations on which value to use. Generally a git_repo is
# an applications "dev" channel, zip_beta is its "beta" channel, and zip
# is its "stable" channel. This parameter must be provided.
path:
# The absolute path to the client's files on disk. This parameter must be provided.
# The absolute path to the client's files on disk. This parameter must be
# provided.
# Example:
# path: ~/service_name
origin:
# The full GitHub URL of the "origin" remote for the repository. This can
# The full git URL of the "origin" remote for the repository. This can
# be be viewed by navigating to your repository and running:
# git remote -v
# This parameter must be provided.
Expand All @@ -468,6 +488,14 @@ enable_node_updates:
# to package-lock.json. Note that if your project does not have a
# package-lock.json in its root directory then the plugin will fail to load.
# Default is False.
host_repo:
# The GitHub repo in which zipped releases are hosted. Note that this does
# not need to match the repository in the "origin" option, as it is possible
# to use a central GitHub repository to host multiple client builds. As
# an example, Moonraker's repo hosts builds for both Moonraker and Klipper.
# This option defaults to the repo extracted from the "origin" option,
# however if the origin is not hosted on GitHub then this parameter must
# be provided.
```

## `[mqtt]`
Expand Down
65 changes: 59 additions & 6 deletions docs/web_api.md
Original file line number Diff line number Diff line change
Expand Up @@ -2057,6 +2057,10 @@ and `fluidd` are present as clients configured in `moonraker.conf`
]
},
"moonraker": {
"type": "zip_beta",
"channel": "beta",
"need_channel_update": false,
"pristine": true,
"remote_alias": "origin",
"branch": "master",
"owner": "Arksine",
Expand Down Expand Up @@ -2084,6 +2088,10 @@ and `fluidd` are present as clients configured in `moonraker.conf`
"remote_version": "v1.10.0"
},
"klipper": {
"type": "zip_beta",
"channel": "beta",
"need_channel_update": false,
"pristine": true,
"remote_alias": "origin",
"branch": "master",
"owner": "KevinOConnor",
Expand Down Expand Up @@ -2133,9 +2141,23 @@ Below is an explanation for each field:
reported as seconds since the epoch (aka Unix Time).

The `moonraker`, `klipper` packages, along with and clients configured
as git repos have the following fields:

- `owner`: the owner of the repo
as applications have the following fields:

- `configured_type`: the application type configured by the user
- `detected_type`: the applicaiton type as detected by Moonraker.
- `channel`: the currently configured update channel. For Moonraker
and Klipper this is set in the `[update_manager]` configuration.
For clients the channel is determined by the configured type
- `need_channel_update`: This will be set to `true` if Moonraker has
detected that a channel swap is necessary (ie: the configured type does
not match the detected type). The channel swap will be performed on the
next update.
- `pristine`: For `zip` and `zip_beta` types this is set to `true` if an
applications source checksum matches the one generated when the app was
built. This value will be set to the opposite of "dirty" for git repos.
Note that a zip application can still be updated if the repo is not
pristine.
- `owner`: the owner of the repo / application
- `branch`: the name of the current git branch. This should typically
be "master".
- `remote_alias`: the alias for the remote. This should typically be
Expand All @@ -2146,9 +2168,14 @@ as git repos have the following fields:
- `current_hash`: hash of the most recent commit on disk
- `remote_hash`: hash of the most recent commit pushed to the remote
- `is_valid`: true if installation is a valid git repo on the master branch
and an "origin" set to the official remote
- `is_dirty`: true if the repo has been modified
- `detached`: true if the repo is currently in a detached state
and an "origin" set to the official remote. For `zip` and `zip_beta`
types this will report false if Moonraker is unable to fetch the
current repo state from GitHub.
- `is_dirty`: true if the repo has been modified. This will always be false
for `zip` and `zip_beta` types.
- `detached`: true if the repo is currently in a detached state. For `zip`
and `zip_beta` types it is considered detached if the local release info
does not match what is present on the remote.
- `debug_enabled`: True when `enable_repo_debug` has been configured. This
will bypass repo validation allowing detached updates, and updates from
a remote/branch other than than the primary (typically origin/master).
Expand All @@ -2175,6 +2202,32 @@ The `system` package has the following fields:
- `package_list`: an array containing the names of packages available
for update

### Perform a full update
Attempts to update all configured items in Moonraker. Updates are
performed in the following order:

- `system` if enabled
- All configured clients
- Klipper
- Moonraker

HTTP request:
```http
POST /machine/update/full
```
JSON-RPC request:
```json
{
"jsonrpc": "2.0",
"method": "machine.update.full",
"id": 4645
}
```
Returns:

`ok` when complete


#### Update Moonraker
Pulls the most recent version of Moonraker from GitHub and restarts
the service. If an update is requested while a print is in progress then
Expand Down

0 comments on commit d60b852

Please sign in to comment.