commit | 052af2dce813dba9f74ffc05ffd760e60a37c23b | [log] [tgz] |
---|---|---|
author | Leopold Schabel <leo@nexantic.com> | Wed Nov 06 02:21:53 2019 +0000 |
committer | Leopold Schabel <leo@nexantic.com> | Wed Nov 06 02:21:53 2019 +0000 |
tree | e0c5dac8c237ad4e92a6c2d91427678d8a4e1691 | |
parent | b51b4171390ec52433f8c06faef46ef5eccf91d4 [diff] |
Simple CI pipeline for Smalltown Core Since we run as root on the build server, we can properly mount a tmpfs as the shared build volume with exec support (this is still broken for unprivileged create_container.sh). We'll have to see when and if this blows up, and whether we want to use a disk-backed volume instead. The pipeline has two stages that run the following commands: - `scripts/run_ci.sh ${build.id} ${target.phid} bazel build //core/scripts:launch` - `timeout 30 scripts/run_ci.sh ${build.id} ${target.phid} bazel run //core/scripts:launch; true` (for visual inspection) Those are placeholders - we will want to integrate any and all tests in Bazel, only trigger tests whose dependencies have been modified in a given build step, and report individual results back to Habormaster. What works: - Persistent working copies on the build server. Drydocks caches a number of persistent repository copies to avoid a full clone on each build, and uses a leasing mechanism to allocate them. Of course, this means we have to be careful about not polluting the repo, but Bazel takes care of that. - Shared build cache with fast incremental rebuilds (a build with no changes takes ~15s including the podman build step). - Full rebuild after volume deletion takes ~4m. - Build output shows up in Phabricator in real time. - Aborting a build properly cancels the running build and clean up the pod. - Launching the QEMU VM. - Reporting build status back to Harbormaster (noop at the moment, can be used to report unit test states later). This uses the awesome undocumented SSH conduit transport so we don't have to deploy a separate token on the host. - Phabricator revisions are drafts until all tests complete successfully. Test Plan: See tests :-) Bug: T483 X-Origin-Diff: phab/D242 GitOrigin-RevId: 64eca996c8704cb0cd4f1cbb4f88f71a6fdca1eb
This is the monorepo storing all of nexantic's internal projects and libraries.
All builds should be executed using the shipped nexantic-dev
container which is automatically built by the create script.
The container contains all necessary dependencies and env configurations necessary to get started right away.
Spinning up: scripts/create_container.sh
Spinning down: scripts/destroy_container.sh
Running commands: scripts/run_in_container.sh @
Using bazel: scripts/bin/bazel @