2023-09-25 20:15:59 +00:00
|
|
|
.PHONY: gen dev-reset all clean test web website
|
|
|
|
|
2021-05-11 18:02:17 +00:00
|
|
|
.SHELLFLAGS += -x -e
|
|
|
|
PWD = $(shell pwd)
|
2021-05-16 21:14:51 +00:00
|
|
|
UID = $(shell id -u)
|
|
|
|
GID = $(shell id -g)
|
2021-08-23 08:09:56 +00:00
|
|
|
NPM_VERSION = $(shell python -m scripts.npm_version)
|
2023-04-18 11:28:19 +00:00
|
|
|
PY_SOURCES = authentik tests scripts lifecycle
|
2021-05-11 18:02:17 +00:00
|
|
|
|
2023-03-23 23:24:55 +00:00
|
|
|
CODESPELL_ARGS = -D - -D .github/codespell-dictionary.txt \
|
|
|
|
-I .github/codespell-words.txt \
|
|
|
|
-S 'web/src/locales/**' \
|
|
|
|
authentik \
|
|
|
|
internal \
|
|
|
|
cmd \
|
|
|
|
web/src \
|
|
|
|
website/src \
|
|
|
|
website/blog \
|
|
|
|
website/developer-docs \
|
|
|
|
website/docs \
|
|
|
|
website/integrations \
|
|
|
|
website/src
|
|
|
|
|
2023-09-25 20:34:59 +00:00
|
|
|
all: lint-fix lint test gen web ## Lint, build, and test everything
|
|
|
|
|
|
|
|
help: ## Show this help
|
|
|
|
@echo "\nSpecify a command. The choices are:\n"
|
|
|
|
@grep -E '^[0-9a-zA-Z_-]+:.*?## .*$$' $(MAKEFILE_LIST) | \
|
|
|
|
awk 'BEGIN {FS = ":.*?## "}; {printf " \033[0;36m%-24s\033[m %s\n", $$1, $$2}'
|
|
|
|
@echo ""
|
2020-09-02 22:04:12 +00:00
|
|
|
|
2022-01-24 19:50:13 +00:00
|
|
|
test-go:
|
2022-01-24 20:41:15 +00:00
|
|
|
go test -timeout 0 -v -race -cover ./...
|
2022-01-24 19:50:13 +00:00
|
|
|
|
2022-05-07 19:22:33 +00:00
|
|
|
test-docker:
|
|
|
|
echo "PG_PASS=$(openssl rand -base64 32)" >> .env
|
|
|
|
echo "AUTHENTIK_SECRET_KEY=$(openssl rand -base64 32)" >> .env
|
|
|
|
docker-compose pull -q
|
|
|
|
docker-compose up --no-start
|
|
|
|
docker-compose start postgresql redis
|
|
|
|
docker-compose run -u root server test
|
|
|
|
rm -f .env
|
|
|
|
|
2023-09-25 20:34:59 +00:00
|
|
|
test: ## Run the server tests and produce a coverage report
|
2022-09-17 11:16:53 +00:00
|
|
|
coverage run manage.py test --keepdb authentik
|
2020-09-02 22:04:12 +00:00
|
|
|
coverage html
|
|
|
|
coverage report
|
|
|
|
|
2023-09-25 20:34:59 +00:00
|
|
|
lint-fix: ## Lint and automatically fix errors in the python source code. Reports spelling errors.
|
2023-04-18 11:28:19 +00:00
|
|
|
isort authentik $(PY_SOURCES)
|
|
|
|
black authentik $(PY_SOURCES)
|
|
|
|
ruff authentik $(PY_SOURCES)
|
2023-03-23 23:24:55 +00:00
|
|
|
codespell -w $(CODESPELL_ARGS)
|
2020-09-02 22:04:12 +00:00
|
|
|
|
2023-09-25 20:34:59 +00:00
|
|
|
lint: ## Lint the python and golang sources
|
2023-04-18 11:28:19 +00:00
|
|
|
pylint $(PY_SOURCES)
|
|
|
|
bandit -r $(PY_SOURCES) -x node_modules
|
2021-12-22 09:33:21 +00:00
|
|
|
golangci-lint run -v
|
2020-09-02 22:04:12 +00:00
|
|
|
|
2023-09-25 20:34:59 +00:00
|
|
|
migrate: ## Run the Authentik Django server's migrations
|
2022-09-11 21:01:26 +00:00
|
|
|
python -m lifecycle.migrate
|
|
|
|
|
2023-09-25 20:34:59 +00:00
|
|
|
i18n-extract: i18n-extract-core web-i18n-extract ## Extract strings that require translation into files to send to a translation service
|
2021-11-19 09:20:31 +00:00
|
|
|
|
|
|
|
i18n-extract-core:
|
2022-08-05 06:39:00 +00:00
|
|
|
ak makemessages --ignore web --ignore internal --ignore web --ignore web-api --ignore website -l en
|
2021-10-09 18:07:28 +00:00
|
|
|
|
2022-09-11 21:01:26 +00:00
|
|
|
#########################
|
|
|
|
## API Schema
|
|
|
|
#########################
|
|
|
|
|
2023-09-25 20:34:59 +00:00
|
|
|
gen-build: ## Extract the schema from the database
|
2022-08-05 06:39:00 +00:00
|
|
|
AUTHENTIK_DEBUG=true ak make_blueprint_schema > blueprints/schema.json
|
|
|
|
AUTHENTIK_DEBUG=true ak spectacular --file schema.yml
|
2021-05-16 19:07:01 +00:00
|
|
|
|
2023-03-28 10:05:44 +00:00
|
|
|
gen-changelog:
|
|
|
|
git log --pretty=format:" - %s" $(shell git describe --tags $(shell git rev-list --tags --max-count=1))...$(shell git branch --show-current) | sort > changelog.md
|
2023-04-13 12:11:46 +00:00
|
|
|
npx prettier --write changelog.md
|
2023-03-28 10:05:44 +00:00
|
|
|
|
2022-09-11 21:01:26 +00:00
|
|
|
gen-diff:
|
2023-03-28 10:05:44 +00:00
|
|
|
git show $(shell git describe --tags $(shell git rev-list --tags --max-count=1)):schema.yml > old_schema.yml
|
2022-09-11 21:01:26 +00:00
|
|
|
docker run \
|
|
|
|
--rm -v ${PWD}:/local \
|
|
|
|
--user ${UID}:${GID} \
|
2023-04-01 16:10:52 +00:00
|
|
|
docker.io/openapitools/openapi-diff:2.1.0-beta.6 \
|
2022-09-11 21:01:26 +00:00
|
|
|
--markdown /local/diff.md \
|
|
|
|
/local/old_schema.yml /local/schema.yml
|
|
|
|
rm old_schema.yml
|
2023-04-13 12:11:46 +00:00
|
|
|
npx prettier --write diff.md
|
2022-09-11 21:01:26 +00:00
|
|
|
|
2021-05-20 20:06:55 +00:00
|
|
|
gen-clean:
|
|
|
|
rm -rf web/api/src/
|
2021-06-16 10:02:02 +00:00
|
|
|
rm -rf api/
|
2021-05-20 20:06:55 +00:00
|
|
|
|
2023-09-25 20:34:59 +00:00
|
|
|
gen-client-ts: ## Build and install the Authentik API for Typescript into the Authentik UI Application
|
2021-05-11 18:02:17 +00:00
|
|
|
docker run \
|
|
|
|
--rm -v ${PWD}:/local \
|
2021-05-16 21:14:51 +00:00
|
|
|
--user ${UID}:${GID} \
|
2023-04-01 16:10:52 +00:00
|
|
|
docker.io/openapitools/openapi-generator-cli:v6.5.0 generate \
|
2021-05-15 21:57:28 +00:00
|
|
|
-i /local/schema.yml \
|
2021-05-11 18:02:17 +00:00
|
|
|
-g typescript-fetch \
|
2022-05-08 14:48:53 +00:00
|
|
|
-o /local/gen-ts-api \
|
2022-10-21 07:08:25 +00:00
|
|
|
-c /local/scripts/api-ts-config.yaml \
|
|
|
|
--additional-properties=npmVersion=${NPM_VERSION} \
|
2022-09-14 22:05:21 +00:00
|
|
|
--git-repo-id authentik \
|
|
|
|
--git-user-id goauthentik
|
2021-08-23 08:32:37 +00:00
|
|
|
mkdir -p web/node_modules/@goauthentik/api
|
2022-05-08 14:48:53 +00:00
|
|
|
cd gen-ts-api && npm i
|
2022-06-30 20:18:21 +00:00
|
|
|
\cp -rfv gen-ts-api/* web/node_modules/@goauthentik/api
|
2020-09-10 14:58:25 +00:00
|
|
|
|
2022-05-08 14:48:53 +00:00
|
|
|
gen-client-go:
|
2023-04-01 16:10:52 +00:00
|
|
|
mkdir -p ./gen-go-api ./gen-go-api/templates
|
|
|
|
wget https://raw.githubusercontent.com/goauthentik/client-go/main/config.yaml -O ./gen-go-api/config.yaml
|
|
|
|
wget https://raw.githubusercontent.com/goauthentik/client-go/main/templates/README.mustache -O ./gen-go-api/templates/README.mustache
|
|
|
|
wget https://raw.githubusercontent.com/goauthentik/client-go/main/templates/go.mod.mustache -O ./gen-go-api/templates/go.mod.mustache
|
|
|
|
cp schema.yml ./gen-go-api/
|
2021-05-16 19:07:01 +00:00
|
|
|
docker run \
|
2023-04-01 16:10:52 +00:00
|
|
|
--rm -v ${PWD}/gen-go-api:/local \
|
2021-05-16 21:14:51 +00:00
|
|
|
--user ${UID}:${GID} \
|
2023-04-01 16:10:52 +00:00
|
|
|
docker.io/openapitools/openapi-generator-cli:v6.5.0 generate \
|
2021-05-16 19:07:01 +00:00
|
|
|
-i /local/schema.yml \
|
|
|
|
-g go \
|
2023-04-01 16:10:52 +00:00
|
|
|
-o /local/ \
|
2021-11-05 09:37:30 +00:00
|
|
|
-c /local/config.yaml
|
2022-05-08 14:48:53 +00:00
|
|
|
go mod edit -replace goauthentik.io/api/v3=./gen-go-api
|
2023-04-01 16:10:52 +00:00
|
|
|
rm -rf ./gen-go-api/config.yaml ./gen-go-api/templates/
|
2021-05-16 19:07:01 +00:00
|
|
|
|
2022-08-01 21:05:58 +00:00
|
|
|
gen-dev-config:
|
|
|
|
python -m scripts.generate_config
|
|
|
|
|
2022-09-11 21:01:26 +00:00
|
|
|
gen: gen-build gen-clean gen-client-ts
|
2021-11-18 20:01:58 +00:00
|
|
|
|
2022-05-10 19:05:22 +00:00
|
|
|
#########################
|
|
|
|
## Web
|
|
|
|
#########################
|
2021-12-06 20:13:04 +00:00
|
|
|
|
2023-09-25 20:34:59 +00:00
|
|
|
web-build: web-install ## Build the Authentik UI
|
2022-06-05 21:26:08 +00:00
|
|
|
cd web && npm run build
|
|
|
|
|
2023-01-01 22:32:05 +00:00
|
|
|
web: web-lint-fix web-lint web-check-compile
|
2021-11-18 20:01:58 +00:00
|
|
|
|
2023-09-25 20:34:59 +00:00
|
|
|
web-install: ## Install the necessary libraries to build the Authentik UI
|
2022-05-10 19:05:22 +00:00
|
|
|
cd web && npm ci
|
|
|
|
|
2023-09-25 20:34:59 +00:00
|
|
|
web-watch: ## Build and watch the Authentik UI for changes, updating automatically
|
2022-06-25 22:46:40 +00:00
|
|
|
rm -rf web/dist/
|
|
|
|
mkdir web/dist/
|
|
|
|
touch web/dist/.gitkeep
|
2022-05-10 19:05:22 +00:00
|
|
|
cd web && npm run watch
|
|
|
|
|
2023-09-25 20:34:59 +00:00
|
|
|
web-storybook-watch: ## Build and run the storybook documentation server
|
2023-08-03 15:27:58 +00:00
|
|
|
cd web && npm run storybook
|
|
|
|
|
2023-09-25 20:34:59 +00:00
|
|
|
web-lint-fix: ## Automatically fix formatting issues in the Authentik UI source code
|
2021-11-18 20:01:58 +00:00
|
|
|
cd web && npm run prettier
|
|
|
|
|
|
|
|
web-lint:
|
|
|
|
cd web && npm run lint
|
2023-08-30 10:46:58 +00:00
|
|
|
cd web && npm run lit-analyse
|
2021-11-19 09:20:31 +00:00
|
|
|
|
2023-01-01 22:32:05 +00:00
|
|
|
web-check-compile:
|
|
|
|
cd web && npm run tsc
|
|
|
|
|
2023-06-06 10:32:32 +00:00
|
|
|
web-i18n-extract:
|
2023-06-12 13:41:44 +00:00
|
|
|
cd web && npm run extract-locales
|
2021-11-21 21:47:10 +00:00
|
|
|
|
2022-05-10 19:05:22 +00:00
|
|
|
#########################
|
|
|
|
## Website
|
|
|
|
#########################
|
|
|
|
|
2023-09-25 20:34:59 +00:00
|
|
|
website: website-lint-fix website-build ## Build the documentation website
|
2022-05-10 19:05:22 +00:00
|
|
|
|
|
|
|
website-install:
|
|
|
|
cd website && npm ci
|
|
|
|
|
|
|
|
website-lint-fix:
|
|
|
|
cd website && npm run prettier
|
|
|
|
|
2022-10-18 19:38:01 +00:00
|
|
|
website-build:
|
|
|
|
cd website && npm run build
|
|
|
|
|
2023-09-25 20:34:59 +00:00
|
|
|
website-watch: ## Build and watch the documentation website, updating automatically
|
2022-05-10 19:05:22 +00:00
|
|
|
cd website && npm run watch
|
|
|
|
|
2023-09-13 13:00:51 +00:00
|
|
|
#########################
|
|
|
|
## Docker
|
|
|
|
#########################
|
|
|
|
|
|
|
|
docker:
|
|
|
|
DOCKER_BUILDKIT=1 docker build . --progress plain --tag authentik:test
|
|
|
|
|
|
|
|
#########################
|
|
|
|
## CI
|
|
|
|
#########################
|
2021-11-21 21:47:10 +00:00
|
|
|
# These targets are use by GitHub actions to allow usage of matrix
|
|
|
|
# which makes the YAML File a lot smaller
|
2023-09-13 13:00:51 +00:00
|
|
|
|
2021-12-24 22:25:38 +00:00
|
|
|
ci--meta-debug:
|
|
|
|
python -V
|
|
|
|
node --version
|
|
|
|
|
|
|
|
ci-pylint: ci--meta-debug
|
2022-09-06 22:23:25 +00:00
|
|
|
pylint $(PY_SOURCES)
|
2021-11-21 21:47:10 +00:00
|
|
|
|
2021-12-24 22:25:38 +00:00
|
|
|
ci-black: ci--meta-debug
|
2022-09-06 22:23:25 +00:00
|
|
|
black --check $(PY_SOURCES)
|
2021-11-21 21:47:10 +00:00
|
|
|
|
2023-04-18 11:28:19 +00:00
|
|
|
ci-ruff: ci--meta-debug
|
|
|
|
ruff check $(PY_SOURCES)
|
|
|
|
|
2023-03-23 23:24:55 +00:00
|
|
|
ci-codespell: ci--meta-debug
|
|
|
|
codespell $(CODESPELL_ARGS) -s
|
|
|
|
|
2021-12-24 22:25:38 +00:00
|
|
|
ci-isort: ci--meta-debug
|
2022-09-06 22:23:25 +00:00
|
|
|
isort --check $(PY_SOURCES)
|
2021-11-21 21:47:10 +00:00
|
|
|
|
2021-12-24 22:25:38 +00:00
|
|
|
ci-bandit: ci--meta-debug
|
2022-09-06 22:23:25 +00:00
|
|
|
bandit -r $(PY_SOURCES)
|
2021-11-21 21:47:10 +00:00
|
|
|
|
2021-12-24 22:25:38 +00:00
|
|
|
ci-pyright: ci--meta-debug
|
2022-09-06 22:23:25 +00:00
|
|
|
./web/node_modules/.bin/pyright $(PY_SOURCES)
|
2021-12-03 09:05:21 +00:00
|
|
|
|
2021-12-24 22:25:38 +00:00
|
|
|
ci-pending-migrations: ci--meta-debug
|
2022-08-05 06:39:00 +00:00
|
|
|
ak makemigrations --check
|
2022-03-02 23:13:06 +00:00
|
|
|
|
2022-05-10 19:05:22 +00:00
|
|
|
install: web-install website-install
|
2022-03-02 23:13:06 +00:00
|
|
|
poetry install
|
2022-08-02 22:05:49 +00:00
|
|
|
|
2023-09-25 20:05:44 +00:00
|
|
|
|
|
|
|
|
|
|
|
dev-drop-db:
|
2023-09-25 19:50:59 +00:00
|
|
|
dropdb -U $${PG_USER:-postgres} -h $${PG_HOST:-localhost} $${PG_DB:-authentik}
|
2023-05-08 13:34:43 +00:00
|
|
|
# Also remove the test-db if it exists
|
2023-09-25 19:50:59 +00:00
|
|
|
dropdb -U $${PG_USER:-postgres} -h $${PG_HOST:-localhost} test_authentik || true
|
2022-08-02 22:05:49 +00:00
|
|
|
redis-cli -n 0 flushall
|
2023-09-25 20:05:44 +00:00
|
|
|
|
|
|
|
dev-create-db:
|
|
|
|
createdb -U $${PG_USER:-postgres} -h $${PG_HOST:-localhost} $${PG_DB:-authentik}
|
|
|
|
|
|
|
|
dev-reset: dev-drop-db dev-create-db migrate ## Drop and restore the Authentik PostgreSQL instance to a "fresh install" state.
|