bazel: command to prepare development workspace (#1425)

This command symlinks all binaries into the current working directory (or the path specified by the first argument)

* bazel: command to prepare development workspace
* bazel: set malt3 as codeowner
This commit is contained in:
Malte Poll 2023-03-14 13:57:39 +01:00 committed by GitHub
parent e4b5ef0ed4
commit a73cdb9b14
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
8 changed files with 86 additions and 3 deletions

View File

@ -16,6 +16,11 @@ alias(
actual = "//bazel/ci:check",
)
alias(
name = "devbuild",
actual = "//bazel/devbuild:devbuild",
)
# These magic Gazelle commands need to be in the top-level BUILD file.
# gazelle:map_kind go_test go_test //bazel/go:go_test.bzl
# gazelle:prefix github.com/edgelesssys/constellation/v2

View File

@ -1,6 +1,7 @@
/.github @katexochen
/3rdparty/gcp-guest-agent @malt3
/apko @katexochen
/bazel @malt3
/bootstrapper @3u13r
/cli @katexochen
/cli/internal/helm @derpsteb

View File

@ -47,6 +47,7 @@ sh_library(
srcs = [
"lib.bash",
],
visibility = ["//visibility:public"],
)
sh_template(

View File

@ -0,0 +1,21 @@
load("//bazel/ci:def.bzl", "sh_template")
sh_template(
name = "devbuild",
data = [
"//bazel/ci:base_lib",
"//bootstrapper/cmd/bootstrapper",
"//cli:cli_oss_host",
"//debugd/cmd/cdbg:cdbg_host",
"//upgrade-agent/cmd",
],
substitutions = {
"@@BASE_LIB@@": "$(rootpath //bazel/ci:base_lib)",
"@@BOOTSTRAPPER@@": "$(rootpath //bootstrapper/cmd/bootstrapper)",
"@@CLI@@": "$(rootpath //cli:cli_oss_host)",
"@@CDBG@@": "$(rootpath //debugd/cmd/cdbg:cdbg_host)",
"@@UPGRADE_AGENT@@": "$(rootpath //upgrade-agent/cmd)",
},
template = "prepare_developer_workspace.sh.in",
visibility = ["//visibility:public"],
)

View File

@ -0,0 +1,29 @@
#!/usr/bin/env bash
# This script is run from the user's Constellation workspace (BUILD_WORKING_DIRECTORY).
# It prepares the workspace by symlinking all required binaries into folder.
lib=$(realpath @@BASE_LIB@@) || exit 1
bootstrapper=$(realpath @@BOOTSTRAPPER@@) || exit 1
upgrade_agent=$(realpath @@UPGRADE_AGENT@@) || exit 1
cli=$(realpath @@CLI@@) || exit 1
cdbg=$(realpath @@CDBG@@) || exit 1
# shellcheck source=../ci/lib.bash
if ! source "${lib}"; then
echo "Error: could not find import"
exit 1
fi
cd "${BUILD_WORKING_DIRECTORY}" || exit 1
if [[ $# -eq 0 ]] ; then
workdir="."
else
workdir="$1"
fi
ln -sf "${bootstrapper}" "${workdir}/bootstrapper"
ln -sf "${upgrade_agent}" "${workdir}/upgrade-agent"
ln -sf "${cli}" "${workdir}/constellation"
ln -sf "${cdbg}" "${workdir}/cdbg"

View File

@ -43,3 +43,16 @@ go_binary(
"enterprise",
]
]
[
go_cross_binary(
name = "cli_%s_host" % edition,
platform = "@local_config_platform//:host",
target = ":cli_%s" % edition,
visibility = ["//visibility:public"],
)
for edition in [
"oss",
"enterprise",
]
]

View File

@ -30,3 +30,10 @@ go_binary(
"linux_arm64",
]
]
go_cross_binary(
name = "cdbg_host",
platform = "@local_config_platform//:host",
target = ":cdbg",
visibility = ["//visibility:public"],
)

View File

@ -21,13 +21,19 @@ Prerequisites:
sudo dnf install @development-tools pkg-config cmake openssl-devel cryptsetup-libs cryptsetup-devel
```
CMake wrapper:
Developer workspace:
```sh
mkdir build
cd build
cmake ..
make
# build required binaries for a dev build
# and symlink them into the current directory
bazel run //:devbuild
./constellation ...
# modify code
# rerun to ensure that all binaries are up to date
bazel run //:devbuild
./constellation ...
```
Bazel build: