lifecycle: better pre release test (#12806)
* move pre-release docker test to script Signed-off-by: Jens Langhammer <jens@goauthentik.io> * set pipefail in ak Signed-off-by: Jens Langhammer <jens@goauthentik.io> * don't reinstall wheels since they don't exist anymore Signed-off-by: Jens Langhammer <jens@goauthentik.io> * fix image Signed-off-by: Jens Langhammer <jens@goauthentik.io> * fix config error on startup Signed-off-by: Jens Langhammer <jens@goauthentik.io> --------- Signed-off-by: Jens Langhammer <jens@goauthentik.io>
This commit is contained in:
11
.github/workflows/release-tag.yml
vendored
11
.github/workflows/release-tag.yml
vendored
@ -14,16 +14,7 @@ jobs:
|
|||||||
- uses: actions/checkout@v4
|
- uses: actions/checkout@v4
|
||||||
- name: Pre-release test
|
- name: Pre-release test
|
||||||
run: |
|
run: |
|
||||||
echo "PG_PASS=$(openssl rand 32 | base64 -w 0)" >> .env
|
make test-docker
|
||||||
echo "AUTHENTIK_SECRET_KEY=$(openssl rand 32 | base64 -w 0)" >> .env
|
|
||||||
docker buildx install
|
|
||||||
mkdir -p ./gen-ts-api
|
|
||||||
docker build -t testing:latest .
|
|
||||||
echo "AUTHENTIK_IMAGE=testing" >> .env
|
|
||||||
echo "AUTHENTIK_TAG=latest" >> .env
|
|
||||||
docker compose up --no-start
|
|
||||||
docker compose start postgresql redis
|
|
||||||
docker compose run -u root server test-all
|
|
||||||
- id: generate_token
|
- id: generate_token
|
||||||
uses: tibdex/github-app-token@v2
|
uses: tibdex/github-app-token@v2
|
||||||
with:
|
with:
|
||||||
|
|||||||
12
Makefile
12
Makefile
@ -45,15 +45,6 @@ help: ## Show this help
|
|||||||
go-test:
|
go-test:
|
||||||
go test -timeout 0 -v -race -cover ./...
|
go test -timeout 0 -v -race -cover ./...
|
||||||
|
|
||||||
test-docker: ## Run all tests in a docker-compose
|
|
||||||
echo "PG_PASS=$(shell openssl rand 32 | base64 -w 0)" >> .env
|
|
||||||
echo "AUTHENTIK_SECRET_KEY=$(shell openssl rand 32 | base64 -w 0)" >> .env
|
|
||||||
docker compose pull -q
|
|
||||||
docker compose up --no-start
|
|
||||||
docker compose start postgresql redis
|
|
||||||
docker compose run -u root server test-all
|
|
||||||
rm -f .env
|
|
||||||
|
|
||||||
test: ## Run the server tests and produce a coverage report (locally)
|
test: ## Run the server tests and produce a coverage report (locally)
|
||||||
coverage run manage.py test --keepdb authentik
|
coverage run manage.py test --keepdb authentik
|
||||||
coverage html
|
coverage html
|
||||||
@ -263,6 +254,9 @@ docker: ## Build a docker image of the current source tree
|
|||||||
mkdir -p ${GEN_API_TS}
|
mkdir -p ${GEN_API_TS}
|
||||||
DOCKER_BUILDKIT=1 docker build . --progress plain --tag ${DOCKER_IMAGE}
|
DOCKER_BUILDKIT=1 docker build . --progress plain --tag ${DOCKER_IMAGE}
|
||||||
|
|
||||||
|
test-docker:
|
||||||
|
./scripts/test_docker.sh
|
||||||
|
|
||||||
#########################
|
#########################
|
||||||
## CI
|
## CI
|
||||||
#########################
|
#########################
|
||||||
|
|||||||
@ -283,7 +283,8 @@ class ConfigLoader:
|
|||||||
def get_optional_int(self, path: str, default=None) -> int | None:
|
def get_optional_int(self, path: str, default=None) -> int | None:
|
||||||
"""Wrapper for get that converts value into int or None if set"""
|
"""Wrapper for get that converts value into int or None if set"""
|
||||||
value = self.get(path, default)
|
value = self.get(path, default)
|
||||||
|
if value is UNSET:
|
||||||
|
return default
|
||||||
try:
|
try:
|
||||||
return int(value)
|
return int(value)
|
||||||
except (ValueError, TypeError) as exc:
|
except (ValueError, TypeError) as exc:
|
||||||
|
|||||||
@ -1,4 +1,5 @@
|
|||||||
#!/usr/bin/env -S bash -e
|
#!/usr/bin/env -S bash
|
||||||
|
set -e -o pipefail
|
||||||
MODE_FILE="${TMPDIR}/authentik-mode"
|
MODE_FILE="${TMPDIR}/authentik-mode"
|
||||||
|
|
||||||
function log {
|
function log {
|
||||||
@ -87,7 +88,6 @@ elif [[ "$1" == "bash" ]]; then
|
|||||||
elif [[ "$1" == "test-all" ]]; then
|
elif [[ "$1" == "test-all" ]]; then
|
||||||
prepare_debug
|
prepare_debug
|
||||||
chmod 777 /root
|
chmod 777 /root
|
||||||
pip install --force-reinstall /wheels/*
|
|
||||||
check_if_root "python -m manage test authentik"
|
check_if_root "python -m manage test authentik"
|
||||||
elif [[ "$1" == "healthcheck" ]]; then
|
elif [[ "$1" == "healthcheck" ]]; then
|
||||||
run_authentik healthcheck $(cat $MODE_FILE)
|
run_authentik healthcheck $(cat $MODE_FILE)
|
||||||
|
|||||||
18
scripts/test_docker.sh
Executable file
18
scripts/test_docker.sh
Executable file
@ -0,0 +1,18 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
set -e -x -o pipefail
|
||||||
|
|
||||||
|
export PG_PASS=$(openssl rand -base64 36 | tr -d '\n')
|
||||||
|
export AUTHENTIK_SECRET_KEY=$(openssl rand -base64 60 | tr -d '\n')
|
||||||
|
export AUTHENTIK_IMAGE="xghcr.io/goauthentik/server"
|
||||||
|
export AUTHENTIK_TAG=$(git rev-parse HEAD | cut -c1-15)
|
||||||
|
export COMPOSE_PROJECT_NAME="authentik-test-${AUTHENTIK_TAG}"
|
||||||
|
|
||||||
|
# Ensure buildx is installed
|
||||||
|
docker buildx install
|
||||||
|
# For release builds we have an empty client here as we use the NPM package
|
||||||
|
mkdir -p ./gen-ts-api
|
||||||
|
docker build -t ${AUTHENTIK_IMAGE}:${AUTHENTIK_TAG} .
|
||||||
|
docker compose up --no-start
|
||||||
|
docker compose start postgresql redis
|
||||||
|
docker compose run -u root server test-all
|
||||||
|
docker compose down -v
|
||||||
Reference in New Issue
Block a user