mkdocs-material/docs/insiders/getting-started.md

227 lines
8.5 KiB
Markdown
Raw Normal View History

2021-03-21 16:04:29 +03:00
---
2021-11-07 20:59:18 +03:00
title: Getting started with Insiders
2021-03-21 16:04:29 +03:00
---
2021-11-07 20:59:18 +03:00
# Getting started with Insiders
2021-03-21 16:04:29 +03:00
2021-11-07 20:59:18 +03:00
Material for MkDocs Insiders is a compatible drop-in replacement for Material
2023-02-16 18:21:11 +03:00
for MkDocs, and can be installed similarly using [`pip`][pip],
2021-11-07 20:59:18 +03:00
[`docker`][docker] or [`git`][git]. Note that in order to access the Insiders
repository, you need to [become an eligible sponsor] of @squidfunk on GitHub.
2021-03-21 16:04:29 +03:00
2021-10-10 23:32:32 +03:00
[pip]: #with-pip
[docker]: #with-docker
[git]: #with-git
2021-11-07 20:23:01 +03:00
[become an eligible sponsor]: index.md#how-to-become-a-sponsor
2021-03-21 16:04:29 +03:00
2021-03-21 19:14:32 +03:00
## Requirements
2021-03-21 16:04:29 +03:00
2021-11-07 20:23:01 +03:00
After you've been added to the list of collaborators and accepted the
2021-11-07 20:59:18 +03:00
repository invitation, the next step is to create a [personal access token] for
your GitHub account in order to access the Insiders repository programmatically
(from the command line or GitHub Actions workflows):
2021-03-21 16:04:29 +03:00
2021-10-10 13:19:14 +03:00
1. Go to https://github.com/settings/tokens
2021-11-07 20:23:01 +03:00
2. Click on [Generate a new token]
3. Enter a name and select the [`repo`][scopes] scope
2021-10-10 13:19:14 +03:00
4. Generate the token and store it in a safe place
2021-03-21 16:04:29 +03:00
2021-11-07 20:23:01 +03:00
[personal access token]: https://docs.github.com/en/github/authenticating-to-github/creating-a-personal-access-token
[Generate a new token]: https://github.com/settings/tokens/new
[scopes]: https://docs.github.com/en/developers/apps/scopes-for-oauth-apps#available-scopes
2021-03-21 16:04:29 +03:00
2021-03-21 19:14:32 +03:00
## Installation
2021-03-21 16:04:29 +03:00
2021-03-21 19:14:32 +03:00
### with pip
2021-03-21 16:04:29 +03:00
2021-03-21 19:14:32 +03:00
Material for MkDocs Insiders can be installed with `pip`:
2021-03-21 16:04:29 +03:00
2021-03-21 19:14:32 +03:00
``` sh
pip install git+https://${GH_TOKEN}@github.com/squidfunk/mkdocs-material-insiders.git
```
2021-03-21 16:04:29 +03:00
2021-03-21 19:14:32 +03:00
The `GH_TOKEN` environment variable must be set to the value of the personal
access token you generated in the previous step. Note that the personal access
token must be kept secret at all times, as it allows the owner to access your
private repositories.
2021-03-21 16:04:29 +03:00
### with docker
2021-06-01 09:51:54 +03:00
In case you want to use Material for MkDocs Insiders from within Docker, some
additional steps are necessary. While we cannot provide a hosted Docker image
2021-11-07 20:23:01 +03:00
for Insiders[^2], [GitHub Container Registry] allows for simple and
2021-03-21 19:14:32 +03:00
comfortable self-hosting:
2021-11-07 20:23:01 +03:00
1. [Fork the Insiders repository]
2. Enable [GitHub Actions] on your fork[^3]
3. Create a new personal access token[^4]
2021-10-10 13:19:14 +03:00
1. Go to https://github.com/settings/tokens
2021-11-07 20:23:01 +03:00
2. Click on [Generate a new token]
3. Enter a name and select the [`write:packages`][scopes] scope
2021-10-10 13:19:14 +03:00
4. Generate the token and store it in a safe place
2021-11-07 20:23:01 +03:00
4. Add a [GitHub Actions secret] on your fork
2021-10-10 13:19:14 +03:00
1. Set the name to `GHCR_TOKEN`
2. Set the value to the personal access token created in the previous step
2021-11-07 20:23:01 +03:00
5. [Create a new release] to build and publish the Docker image
6. Install [Pull App] on your fork to stay in-sync with upstream
2021-03-21 19:14:32 +03:00
2021-11-07 20:23:01 +03:00
The [`publish`][publish] workflow[^5] is automatically run when a new tag
(release) is created. When a new Insiders version is released on the upstream
repository, the [Pull App] will create a pull request with the changes and
pull in the new tag, which is picked up by the [`publish`][publish] workflow
that builds and publishes the Docker image automatically to your private
registry.
2021-03-21 19:14:32 +03:00
Now, you should be able to pull the Docker image from your private registry:
2021-03-21 16:04:29 +03:00
2021-03-21 19:14:32 +03:00
```
docker login -u ${GH_USERNAME} -p ${GHCR_TOKEN} ghcr.io
docker pull ghcr.io/${GH_USERNAME}/mkdocs-material-insiders
```
2021-03-21 16:04:29 +03:00
Should you wish to add additional plugins to the insiders container image, follow the steps
outlined in the [Getting Started guide](../getting-started.md#with-docker).
2021-11-07 20:23:01 +03:00
[^2]:
2021-03-21 19:14:32 +03:00
Earlier, Insiders provided a dedicated Docker image which was available to
all sponsors. On March 21, 2021, the image was deprecated for the reasons
outlined and discussed in #2442. It was removed on June 1, 2021.
2021-03-21 16:04:29 +03:00
2021-11-07 20:23:01 +03:00
[^3]:
When forking a repository, GitHub will disable all workflows. While this
2021-03-21 19:14:32 +03:00
is a reasonable default setting, you need to enable GitHub Actions to be
able to automatically build and publish a Docker image on
2021-11-07 20:23:01 +03:00
[GitHub Container Registry].
2021-03-21 16:04:29 +03:00
2021-11-07 20:23:01 +03:00
[^4]:
2021-03-21 19:14:32 +03:00
While you could just add the `write:packages` scope to the personal access
token created to access the Insiders repository, it's safer to create a
dedicated token which you'll only use for publishing the Docker image.
2021-03-21 16:04:29 +03:00
2021-11-07 20:23:01 +03:00
[^5]:
2022-09-11 20:25:40 +03:00
The Insiders repository contains two GitHub Actions workflows:
2021-03-21 16:04:29 +03:00
2021-03-21 19:14:32 +03:00
- `build.yml` Build and lint the project (disabled on forks)
- `publish.yml` Build and publish the Docker image
2021-03-21 16:04:29 +03:00
### with git
2021-03-21 19:14:32 +03:00
Of course, you can use Material for MkDocs Insiders directly from `git`:
2021-03-21 16:04:29 +03:00
2021-03-21 19:14:32 +03:00
```
git clone git@github.com:squidfunk/mkdocs-material-insiders.git mkdocs-material
```
2021-03-21 16:04:29 +03:00
The theme will reside in the folder `mkdocs-material/material`. When cloning
2021-05-30 17:01:48 +03:00
from `git`, the theme must be installed, so MkDocs can find the built-in
plugins:
2021-03-21 16:04:29 +03:00
```
2021-05-30 17:01:48 +03:00
pip install -e mkdocs-material
2021-03-21 16:04:29 +03:00
```
2021-11-07 20:23:01 +03:00
[GitHub Container Registry]: https://docs.github.com/en/packages/guides/about-github-container-registry
[Fork the Insiders repository]: https://github.com/squidfunk/mkdocs-material-insiders/fork
[GitHub Actions]: https://docs.github.com/en/github/administering-a-repository/disabling-or-limiting-github-actions-for-a-repository
[packages scope]: https://docs.github.com/en/developers/apps/scopes-for-oauth-apps#available-scopes
[GitHub Actions secret]: https://docs.github.com/en/actions/reference/encrypted-secrets#creating-encrypted-secrets-for-a-repository
[Create a new release]: https://docs.github.com/en/github/administering-a-repository/managing-releases-in-a-repository#creating-a-release
[Pull App]: https://github.com/apps/pull
[publish]: https://github.com/squidfunk/mkdocs-material-insiders/blob/master/.github/workflows/publish.yml
2021-12-27 20:10:44 +03:00
## Upgrading
When upgrading Insiders, you should always check the version of Material for
MkDocs which makes up the first part of the version qualifier, e.g.Insiders
`4.x.x` is currently based on `8.x.x`:
```
8.x.x-insiders-4.x.x
```
If the major version increased, it's a good idea to consult the [upgrade
guide] and go through the steps to ensure your configuration is up to date and
all necessary changes have been made. If you installed Insiders via `pip`, you
can upgrade your installation with the following command:
```
pip install --upgrade git+https://${GH_TOKEN}@github.com/squidfunk/mkdocs-material-insiders.git
```
[upgrade guide]: ../upgrade.md
2023-09-11 18:18:58 +03:00
## Built-in plugins
2021-11-07 20:59:18 +03:00
2023-09-11 18:18:58 +03:00
When you're using built-in plugins that are solely available via Insiders,
outside contributors won't be able to build your documentation project on their
local machine. This is the reason why we developed the [built-in group plugin]
that allows to conditionally load plugins.
2021-11-07 20:59:18 +03:00
2023-09-11 18:18:58 +03:00
[^1]:
Previously we recommended to use [configuration inheritance] to work around
this limitations, but the brand new [built-in group plugin] is a much better
approach, as it allows you to use a single configuration file for building
your project with the community edition and Insiders version of Material
for MkDocs.
2021-11-07 20:59:18 +03:00
2023-09-11 18:18:58 +03:00
[built-in group plugin]: #built-in-group-plugin
[configuration inheritance]: https://www.mkdocs.org/user-guide/configuration/#configuration-inheritance
2021-11-07 20:59:18 +03:00
2023-09-11 18:18:58 +03:00
### Built-in group plugin
2021-11-07 20:59:18 +03:00
2023-09-11 18:18:58 +03:00
[:octicons-tag-24: 9.3.0][Group plugin support] ·
:octicons-cpu-24: Plugin ·
:octicons-beaker-24: Experimental
2021-11-07 20:59:18 +03:00
2023-09-11 18:18:58 +03:00
The built-in group plugin adds support for conditionally loading plugins based
on environments. This makes enabling and disabling of multiple plugins much
simpler, as you can group them into logical units and enable or disable them
with an [environment variable]:
2021-11-07 20:59:18 +03:00
2023-09-11 18:18:58 +03:00
``` yaml
plugins:
- group:
enabled: !ENV CI
plugins:
- optimize
- minify
```
2021-11-07 20:59:18 +03:00
2023-09-11 18:18:58 +03:00
[`enabled`](#+group.enabled){ #+group.enabled }
2021-11-07 20:59:18 +03:00
2023-09-11 18:18:58 +03:00
: :octicons-milestone-24: Default: `false` This option specifies whether
the plugin is enabled when building your project. By default, the plugin is
disabled, so you can use an [environment variable]:
2021-11-07 20:59:18 +03:00
2023-09-11 18:18:58 +03:00
``` yaml
plugins:
- group:
enabled: !ENV CI
```
2022-04-06 21:59:11 +03:00
2023-09-11 18:18:58 +03:00
Now, If you invoke MkDocs with that environment variable (or export the
environment variable before invoking MkDocs), the plugin will be enabled:
2022-04-06 21:59:11 +03:00
2023-09-11 18:18:58 +03:00
``` sh
CI=true mkdocs build
```
2023-09-11 18:18:58 +03:00
[`plugins`](#+group.plugins){ #+group.plugins }
2023-09-11 18:18:58 +03:00
: :octicons-milestone-24: Default: _none_ This option specifies the plugins
that the group plugin should load when enabled. Note that the plugins must
be specified as a list, even if there's only one plugin:
2023-09-11 18:18:58 +03:00
``` yaml
plugins:
- group:
plugins:
- optimize
- minify
```
2023-09-11 18:18:58 +03:00
The syntax is exactly the same as for all other plugins.
2023-09-11 18:18:58 +03:00
[Group plugin support]: https://github.com/squidfunk/mkdocs-material/releases/tag/9.3.0
[environment variable]: https://www.mkdocs.org/user-guide/configuration/#environment-variables