mirror of
https://github.com/goauthentik/authentik.git
synced 2026-06-17 19:09:11 +03:00
9543b3c9f6
* core: add .npmrc baseline to block dependency lifecycle scripts Set ignore-scripts=true at the repo root, plus engine-strict, save-exact, audit, and prefer-offline. This neutralizes the dominant npm supply-chain attack vector — postinstall scripts in transitive dependencies — at the cost of requiring an explicit rebuild for the handful of packages that legitimately need install scripts (esbuild, chromedriver, tree-sitter, tree-sitter-json). The next commit wires that rebuild into the Makefile. Co-Authored-By: Playpen Agent <279763771+playpen-agent@users.noreply.github.com> * core: route node installs through make to retire website preinstall hook Make docs-install depend on a new root-node-install so the root deps are guaranteed before the website install runs, removing the need for the website/preinstall lifecycle script. Rebuild the small audited list of trusted packages (esbuild, chromedriver, tree-sitter, tree-sitter-json) after the web install so ignore-scripts=true remains the only path that needs maintenance. web/README documents the new workflow. Co-Authored-By: Playpen Agent <279763771+playpen-agent@users.noreply.github.com> * Clean up install scripts. * Track .npmrc in CODEOWNERS * Fix formatter config. Reformat. * Fix mounted references. * Flesh out node scripts. * Bump engines. * Prep containers. * Update makefile. * Flesh out github actions. * Clean up docs container. * lint. Bump. Lint. Bump NPM version. * Add limits. * collapse the composite's three setup-node calls to one cache restore * Add SHA. * Bump NPM range. * Run formatter. * Bump NPM. * Remove extra install. * Fix website deps. * Use local prettier. Fix drift in CI. * ci: build frontend in CI with node_env production Signed-off-by: Jens Langhammer <jens@goauthentik.io> * Install docusaurus config. * Fix linter warning, order. * Add linter commands. * Add timeout. * Remove pre install check. --------- Signed-off-by: Jens Langhammer <jens@goauthentik.io> Co-authored-by: Playpen Agent <279763771+playpen-agent@users.noreply.github.com> Co-authored-by: Jens Langhammer <jens@goauthentik.io>
110 lines
4.4 KiB
YAML
110 lines
4.4 KiB
YAML
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@08807647e7069bb48b6ef5acd8ec9567f424441b # 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@ec28e287910af896fd98e04056d31fa68607e7ad # 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@0fe76702a40db986d9663c24954fc14c6a6031b7
|
|
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,
|
|
)
|