Our devcontainers pin versions of all of the tools we need to build &
test the project, but these tools are not necessarily kept in sync with
those in our devcontainer.
This change introduces new variants of our devcontainer image that can
be pre-bundled with Go or Rust tooling (with fairly minimal container
images). Various CI workflows are updated to use the same tooling
versions that are used by our devcontainer, and a CI workflow is added
to ensure that these versions stay in sync. Some workflows are NOT
updated--especially those that invoke `docker`--since the docker
environment is severely limited when running inside of a container.
Furthermore, this change does the following:
* Update shellcheck to v0.8.0;
* Update `bin/shellcheck-all` to exclude irrelevant files (that are not
part of the project);
* Add `helm` and `helm-docs` to the devcontainer;
* Update `helm` to v3.9.1
* Update `helm-docs` to v1.11.0
* Include tools like `just`, `cargo-action-fmt`, and `cargo-nextest` in
our Rust image
* Add a `just` recipe that builds (and optionally publish) the
appropriate devcontainer images
Signed-off-by: Oliver Gould <ver@buoyant.io>
* rust v1.62.0
* golangci-lint v1.46.2
* k3d v5.4.4
* just 1.2.0
* cargo-nextest v0.9.24
Furthermore, the build will update the development Go version to the
latest v1.17 release.
Signed-off-by: Oliver Gould <ver@buoyant.io>
VS Code [devcontainers][dc] provide a way to define a reproducible,
customizable developer environment. This should lower the barrier to
entry for contributors and reduce the maintenance burden for existing
developers, as a docker daemon is now basically all that's needed to get
up and running.
This change adds a devcontainer for the Linkerd2 project. Its container
starts in the host's network so that it can easily access k3d clusters
running on the host's docker daemon.
[dc]: https://code.visualstudio.com/docs/remote/containers
Signed-off-by: Oliver Gould <ver@buoyant.io>
Various development tools (including Rust Analyzer and some reusable
actions) expect the root of the project to define a Cargo workspace.
In order to work more naturally with these tools, this change moves the
`Cargo.lock`, `rust-toolchain`, and `deny.toml` files to the root of the
project. A `Cargo.toml` is factored out of `policy-controller` to define
the top-level workspace.