A set of Bazel rules to build common mgIT projects.
This repository depends on various other Bazel repositories like rules_go, rules_proto and rules_pkg,
which are typically needed for projects by mgIT. Rarely used dependencies (e.g. Scala) are outside the scope of
this repository and should be used directly. All dependencies have been tested to work well together and are
updated regularly.
The configuration of the repositories is rather opinionated. For example, various linter rules and gofmt checks are enforced. This repository also contains common rules for working with Gazelle and comes with an opinionated Gazelle config as well.
Create a WORKSPACE file at the top of your repository and add the snipped below. Please use the
latest GIT_COMMIT and the correct SHA256_SUM.
workspace(name = "my_project")
load("@bazel_tools//tools/build_defs/repo:http.bzl", "http_archive")
http_archive(
name = "rules_mgit",
url = "https://github.com/mgit-at/rules_mgit/archive/GIT_COMMIT.zip",
sha256 = "SHA256_SUM",
strip_prefix = "rules_mgit-GIT_COMMIT",
type = "zip",
)
load("@rules_mgit//:deps.bzl", "rules_mgit_dependencies")
rules_mgit_dependencies()
load("@rules_mgit//:setup.bzl", "rules_mgit_setup", "rules_mgit_setup_stage2")
rules_mgit_setup(stage2=False)
load("//:go_deps.bzl", "go_repositories")
go_repositories()
rules_mgit_setup_stage2()
The go_deps.bzl is updated by Gazelle and might look like this at the beginning:
def go_repositories():
pass
The top-level BUILD.bazel file should contain the following snippet:
load("@rules_mgit//:def.bzl", "mgit_repo_rules")
mgit_repo_rules(
go_prefix = "mgit.at/prometheus-mgit-exporter",
)
Whenever a new dependency has been added to the go.mod file, run the following command in order to update
the go_deps.bzl file appropriately:
bazel run //:gazelle-update-repos
After adding a new Go file or import statement, run the following command. It will automatically generate
and update BUILD.bazel files for the whole project:
bazel run //:gazelle