website: revise full development environment instructions (#12638)
* website: revise full development environment instructions Updates the full development environment instructions to make it clear you *will* need both Docker and Golangci-Lint installed. Adds the `poetry-plugin-shell` requirement, now that Poetry requires it. Updates the per-platform development environment requirements to have a Linux-specific section, and update the MacOS section to include poetry-plugin-shell and golangci-lint Moves the instructions on what to do before committing to the bottom of the document; its location was confusing and didn't clarify what steps were to be taken in what order. Includes the instruction that, for a first-time run, you must run `make migrate` and `make gen` or the TS-API won't be built, and in turn the WebUI build would otherwise fail. We still need instructions for Windows. * Prettier had opinions. * Format error: "macOS," not "MacOS" * Fixed some typos and cleaned up some prompts. * Fixed 'under windows' -> 'on Windows'
This commit is contained in:
@ -2,14 +2,20 @@
|
||||
title: Full development environment
|
||||
---
|
||||
|
||||
import Tabs from '@theme/Tabs';
|
||||
import TabItem from '@theme/TabItem';
|
||||
import ExecutionEnvironment from '@docusaurus/ExecutionEnvironment';
|
||||
|
||||
## Requirements
|
||||
|
||||
- Python 3.12
|
||||
- Poetry, which is used to manage dependencies
|
||||
- Go 1.23 or newer
|
||||
- Node.js 21 or newer
|
||||
- PostgreSQL 14 or newer
|
||||
- Redis (any recent version will do)
|
||||
- [Python](https://www.python.org/) 3.12
|
||||
- [Poetry](https://python-poetry.org/), which is used to manage dependencies
|
||||
- Poetry 2.0 or higher also requires the [poetry-plugin-shell](https://github.com/python-poetry/poetry-plugin-shell) extension.
|
||||
- [Go](https://go.dev/) 1.23 or newer
|
||||
- [Node.js](https://nodejs.org/en) 21 or newer
|
||||
- [PostgreSQL](https://www.postgresql.org/) 14 or newer
|
||||
- [Redis](https://redis.io/) (any recent version will do)
|
||||
- [Docker](https://www.docker.com/) (Community Edition will do)
|
||||
|
||||
## Services Setup
|
||||
|
||||
@ -23,7 +29,51 @@ If you use locally installed databases, the PostgreSQL credentials given to auth
|
||||
## Backend Setup
|
||||
|
||||
:::info
|
||||
Depending on your platform, some native dependencies might be required. On macOS, run `brew install libxmlsec1 libpq krb5`, and for the CLI tools `brew install postgresql redis node@20`.
|
||||
Depending on your platform, some native dependencies might be required.
|
||||
|
||||
<Tabs
|
||||
defaultValue={ (ExecutionEnvironment.canUseDOM) ? (() => {
|
||||
const ua = window.navigator.userAgent.toLowerCase();
|
||||
return ["linux", "windows", "mac"].find((p) => ua.includes(p)) || "mac";
|
||||
})() : "mac" }
|
||||
|
||||
values={[
|
||||
{label: "macOS", value: "mac"},
|
||||
{label: "Linux", value: "linux"},
|
||||
{label: "Windows", value: "windows"},
|
||||
]}>
|
||||
|
||||
<TabItem value="mac">
|
||||
To install the native dependencies on macOS, run:
|
||||
|
||||
```sh
|
||||
$ pip install poetry poetry-plugin-shell
|
||||
$ brew install libxmlsec1 libpq krb5 # Required development libraries,
|
||||
$ brew install postgresql redis node@22 golangci-lint # Required CLI tools
|
||||
```
|
||||
|
||||
</TabItem>
|
||||
|
||||
<TabItem value="linux">
|
||||
To install native dependencies on Debian or Ubuntu, run:
|
||||
|
||||
```sh
|
||||
$ pip install poetry poetry-plugin-shell
|
||||
$ sudo apt-get install libgss-dev krb5-config libkrb5-dev postgresql-server-dev-all
|
||||
$ sudo apt-get install postresql redis
|
||||
```
|
||||
|
||||
Adjust your needs as required for other distributions such as Red Hat, SUSE, or Arch.
|
||||
|
||||
Install golangci-lint locally [from the site
|
||||
instructions](https://golangci-lint.run/welcome/install/#other-ci).
|
||||
|
||||
</TabItem>
|
||||
|
||||
<TabItem value="windows">[We request community input on running the full dev environment on Windows]</TabItem>
|
||||
|
||||
</Tabs>
|
||||
|
||||
:::
|
||||
|
||||
1. Create an isolated Python environment. To create the environment and install dependencies, run the following commands in the same directory as your local authentik git repository:
|
||||
@ -43,17 +93,20 @@ Generally speaking, authentik is a Django application, ran by gunicorn, proxied
|
||||
|
||||
Most functions and classes have type-hints and docstrings, so it is recommended to install a Python Type-checking Extension in your IDE to navigate around the code.
|
||||
|
||||
Before committing code, run the following commands in the same directory as your local authentik git repository:
|
||||
|
||||
```shell
|
||||
make lint # Ensures your code is well-formatted
|
||||
make gen # Generates an updated OpenAPI Docs for any changes you make
|
||||
```
|
||||
|
||||
## Frontend Setup
|
||||
|
||||
By default, no compiled bundle of the frontend is included so this step is required even if you're not developing for the UI.
|
||||
|
||||
The UI requires the authentik API files for Typescript be built and installed:
|
||||
|
||||
```
|
||||
$ make migrate # On a fresh install, ensures the API schema file is available
|
||||
$ make gen # Generates the API based on the schema file
|
||||
```
|
||||
|
||||
If you make changes to the authentik API, you must re-run `make gen` so that the corresponding
|
||||
changes are made to the API library that is used by the UI.
|
||||
|
||||
To build the UI once, run the following command in the same directory as your local authentik git repository:
|
||||
|
||||
```shell
|
||||
@ -87,3 +140,13 @@ To define a password for the default admin (called **akadmin**), you can manuall
|
||||
|
||||
In case of issues in this process, feel free to use `make dev-reset` which drops and restores the Authentik PostgreSQL instance to a "fresh install" state.
|
||||
:::
|
||||
|
||||
## Submitting Pull Requests
|
||||
|
||||
Before submitting a pull request, run the following commands in the same directory as your local authentik git repository:
|
||||
|
||||
```shell
|
||||
make lint # Ensures your code is well-formatted
|
||||
make gen # Generates an updated OpenAPI Docs for any changes you make
|
||||
make web # Formats the front-end code
|
||||
```
|
||||
|
Reference in New Issue
Block a user