4.6 KiB
title | description | summary | date | draft | images | weight | toc | aliases | seo | |||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Building and Testing | Building and Testing Authelia. | This section covers the build process and how to perform tests in development. | 2022-06-15T17:51:47+10:00 | false | 240 | true |
|
|
Authelia is built a React frontend user portal bundled in a Go application which acts as a basic web server for the React assets and a dedicated API.
The GitHub repository comes with a CLI dedicated to developers called authelia-scripts which can be setup by looking at Reference: authelia-scripts.
In order to build and contribute to Authelia, you need to make sure that you have looked at the Environment guide to configure your development environment.
Get started
In order to ease development, Authelia uses the concept of suites to run Authelia from source code so that your patches are included. This is a kind of virtual environment running Authelia in a complete ecosystem (LDAP, Redis, SQL server). Note that Authelia is hot-reloaded in the environment so that your patches are instantly included.
The next command starts the suite called Standalone:
authelia-scripts suites setup Standalone
Most of the suites are using docker-compose to bootstrap the environment. Therefore, you can check the logs of all application by running the following command on the component you want to monitor.
docker logs authelia_authelia-backend_1 -f
Then, edit the code and observe how Authelia is automatically reloaded.
Unit tests
To run the unit tests, run:
authelia-scripts unittest
Integration tests
Integration tests are located under the internal/suites
directory and are based on Selenium. A suite is a combination
of environment and tests. Executing a suite therefore means starting the environment, running the tests and tearing down
the environment. Each step can be run independently:
authelia-scripts suites list
Standalone
DuoPush
LDAP
Traefik
authelia-scripts suites setup Standalone
authelia-scripts suites test
authelia-scripts suites teardown Standalone
In order to test all suites (approx 30 minutes), you need to make sure there is no currently running sui te and then you should run:
authelia-scripts suites test
Also, you don't need to start the suite before testing it. Given you're not running any suite, just use the following command to test the Standalone suite.
authelia-scripts suites test Standalone
The suite will be spawned, tests will be run and then the suite will be torn down automatically.
Manually Building
Binary
If you want to manually build the binary from source you will require the open source software described in the Development Environment documentation. Then you can follow the below steps on Linux (you may have to adapt them on other systems).
Clone the Repository:
git clone https://github.com/authelia/authelia.git
Download the Dependencies:
cd authelia && go mod download
cd web && pnpm install
cd ..
Build the Web Frontend:
cd web && pnpm build
cd ..
cp -r api internal/server/public_html/api
Build the Binary (with debug symbols):
CGO_ENABLED=1 CGO_CPPFLAGS="-D_FORTIFY_SOURCE=2 -fstack-protector-strong" CGO_LDFLAGS="-Wl,-z,relro,-z,now" \
go build -ldflags "-linkmode=external" -trimpath -buildmode=pie -o authelia ./cmd/authelia
Build the Binary (without debug symbols):
CGO_ENABLED=1 CGO_CPPFLAGS="-D_FORTIFY_SOURCE=2 -fstack-protector-strong" CGO_LDFLAGS="-Wl,-z,relro,-z,now" \
go build -ldflags "-linkmode=external -s -w" -trimpath -buildmode=pie -o authelia ./cmd/authelia