This repo contains a bunch of software maintained by the buildbtw team.
To follow current project progress, you can check the milestones and the issue board.
Information on prior art, technical background, feedback from user interviews and other notes are gathered in the notes folder.
This is covered in great detail in the infrastructure operations but the short of it is:
*.buildbtw.dev.archlinux.orgfor review apps on merge requests (spawned dynamically, one per merge request)buildbtw.staging.archlinux.orgfor staging/pre-production continuous deployment for every passedmainbuild (static environment)buildbtw.archlinux.orgfor manual production deployments, controlled by Arch Linux DevOps (static environment)
- Install Rust. It's recommended to work with the stable toolchain. With rustup:
rustup install stable
rustup default stable
- Install
just(pacman -S justorcargo install just) - Install
watchexec(pacman -S watchexecorcargo install watchexec) - Install
sea-orm-cli(pacman -S sea-orm-cli) - For license checking: Install
reuse(pacman -S reuse) - For security auditing: Install
cargo-deny(pacman -S cargo-denyorcargo install cargo-deny) - For releasing: Install
cargo-release(pacman -S cargo-releaseorcargo install cargo-release) - For running the tests and running a local OIDC provider:
pacman -S cargo-nextest mkcert jq podman geckodriver firefox. See Arch Wiki Podman Page for podman configuration. Rootless podman is recommended.
There are a bunch of commands you can run at this level. Run just to view all of them.
just ci-devto check whether the repo as a whole would pass CIjust licensesto check license compliancejust check-dependenciesto audit dependencies, e.g. for security vulnerabilities.just lintto runcargo fmtandcargo clippyjust lint-fixto automatically fix lints and formattingjust formatto format the source codejust testto run testsjust watch-testto run tests and auto-rerun on code changes
just buildto build in debug modejust build-releaseto build in release modejust build-release-container-imageto put the release binary into a container imagejust benchto run performance benchmarksjust cleanto remove build artifacts, caches, and temporary filesjust run-clientto run the clientjust run-workerto run the workerjust run-serverto run the serverjust run-server --run-authelia-containerto run the server together with a container running Authelia for manually testing OIDC workflows
Once you've installed the dependencies listed in the development setup section, running just test should work. There's a lot going on behind the scenes, though:
- An authelia container with a testing configuration is started to test our server's OIDC implementation
- mkcert is called to generate a TLS certificate for the authelia container and install it in your browser's allowlist
- A geckodriver process listening on port 4444 is started, allowing the tests to drive a headless firefox instance
For debugging (or fun), you can watch the firefox window open and interact with webpages by disabling the set_headless() call in any given test.
- Make sure the Unreleased section in
CHANGELOG.mdis up to date. - Run
cargo release <version>and check that the output e cargo release --execute <version>- Releases will automatically be deployed by GitLab CI.
- Manually update Arch packages.
- Go to the infra repo and bump the version of buildbtw.