name: "Setup authentik testing environment" description: "Setup authentik testing environment" inputs: dependencies: description: "List of dependencies to setup" default: "system,python,rust,node,go,runtime" postgresql_version: description: "Optional postgresql image tag" default: "16" working-directory: description: | Optional working directory if this repo isn't in the root of the actions workspace. When set, needs to contain a trailing slash default: "" runs: using: "composite" steps: - name: Cleanup apt if: ${{ contains(inputs.dependencies, 'system') || contains(inputs.dependencies, 'python') }} shell: bash run: sudo apt-get remove --purge man-db - name: Install apt deps if: ${{ contains(inputs.dependencies, 'system') || contains(inputs.dependencies, 'python') }} uses: gerlero/apt-install@f4fa5265092af9e750549565d28c99aec7189639 with: packages: libpq-dev openssl libxmlsec1-dev pkg-config gettext libclang-dev libkadm5clnt-mit12 libkadm5clnt7t64-heimdal libkrb5-dev krb5-kdc krb5-user krb5-admin-server update: true upgrade: false install-recommends: false - name: Make space on disk if: ${{ contains(inputs.dependencies, 'system') || contains(inputs.dependencies, 'python') }} shell: bash run: | sudo mkdir -p /tmp/empty/ sudo rsync -a --delete /tmp/empty/ /usr/local/lib/android/ - name: Install uv if: ${{ contains(inputs.dependencies, 'python') }} uses: astral-sh/setup-uv@fac544c07dec837d0ccb6301d7b5580bf5edae39 # v5 with: enable-cache: true - name: Setup python if: ${{ contains(inputs.dependencies, 'python') }} uses: actions/setup-python@a309ff8b426b58ec0e2a45f0f869d46889d02405 # v5 with: python-version-file: "${{ inputs.working-directory }}pyproject.toml" - name: Install Python deps if: ${{ contains(inputs.dependencies, 'python') }} shell: bash working-directory: ${{ inputs.working-directory }} run: uv sync --all-extras --dev --locked - name: Setup rust (stable) if: ${{ contains(inputs.dependencies, 'rust') && !contains(inputs.dependencies, 'rust-nightly') }} uses: actions-rust-lang/setup-rust-toolchain@46268bd060767258de96ed93c1251119784f2ab6 # v1 with: rustflags: "" - name: Setup rust (nightly) if: ${{ contains(inputs.dependencies, 'rust-nightly') }} uses: actions-rust-lang/setup-rust-toolchain@46268bd060767258de96ed93c1251119784f2ab6 # v1 with: toolchain: nightly components: rustfmt rustflags: "" - name: Setup rust dependencies if: ${{ contains(inputs.dependencies, 'rust') }} uses: taiki-e/install-action@7a79fe8c3a13344501c80d99cae481c1c9085912 # v2 with: tool: cargo-deny cargo-machete cargo-llvm-cov nextest - name: Setup node (root, web) if: ${{ contains(inputs.dependencies, 'node') }} uses: ./.github/actions/setup-node with: working-directory: web - name: Setup go if: ${{ contains(inputs.dependencies, 'go') }} uses: actions/setup-go@4a3601121dd01d1626a1e23e37211e3254c1c06c # v5 with: go-version-file: "${{ inputs.working-directory }}go.mod" - name: Setup docker cache if: ${{ contains(inputs.dependencies, 'runtime') }} uses: AndreKurait/docker-cache@7a3887908bdb97935395833df69b060cfcca0f7f with: key: docker-images-${{ runner.os }}-${{ hashFiles('.github/actions/setup/compose.yml', 'Makefile') }}-${{ inputs.postgresql_version }} - name: Setup dependencies if: ${{ contains(inputs.dependencies, 'runtime') }} shell: bash working-directory: ${{ inputs.working-directory }} run: | export PSQL_TAG=${{ inputs.postgresql_version }} docker compose -f .github/actions/setup/compose.yml up -d --wait corepack npm ci --prefix web - name: Generate config if: ${{ contains(inputs.dependencies, 'python') }} shell: uv run python {0} working-directory: ${{ inputs.working-directory }} run: | from authentik.lib.generators import generate_id from yaml import safe_dump with open("local.env.yml", "w") as _config: safe_dump( { "log_level": "debug", "secret_key": generate_id(), }, _config, default_flow_style=False, )