66 lines
2.5 KiB
Markdown
66 lines
2.5 KiB
Markdown
# Bazel Rules Mongo
|
|
|
|
This directory is a bazel rule we use to ship common code between bazel repos
|
|
|
|
# Using in your repo
|
|
|
|
1. Look at the latest version in [this](https://github.com/mongodb/mongo/blob/master/buildscripts/bazel_rules_mongo/pyproject.toml) file
|
|
|
|
2. Get the sha of the latest release at https://mdb-build-public.s3.amazonaws.com/bazel_rules_mongo/{version}/bazel_rules_mongo.tar.gz.sha256
|
|
|
|
3. Get the link to the latest version at https://mdb-build-public.s3.amazonaws.com/bazel_rules_mongo/{version}/bazel_rules_mongo.tar.gz
|
|
|
|
4. Add this as a http archive to your repo and implement the dependencies listed in the [WORKSPACE](https://github.com/mongodb/mongo/blob/master/buildscripts/bazel_rules_mongo/WORKSPACE.bazel) file. It will look something like this
|
|
|
|
```
|
|
# Poetry rules for managing Python dependencies
|
|
http_archive(
|
|
name = "rules_poetry",
|
|
sha256 = "533a0178767be4d79a67ae43890970485217f031adf090ef28c5c18e8fd337d8",
|
|
strip_prefix = "rules_poetry-092d43107d13e711ac4ac92050d8b570bcc8ef43",
|
|
urls = [
|
|
"https://github.com/mongodb-forks/rules_poetry/archive/092d43107d13e711ac4ac92050d8b570bcc8ef43.tar.gz",
|
|
],
|
|
)
|
|
|
|
load("@rules_poetry//rules_poetry:poetry.bzl", "poetry")
|
|
|
|
http_archive(
|
|
name = "bazel_rules_mongo",
|
|
repo_mapping = {"@poetry": "@poetry_bazel_rules_mongo"},
|
|
sha256 = "bb2c2dafc82d905422a12ebef41637b0a1160adffc8a5009dcd1c3d1f81b4056",
|
|
strip_prefix = "bazel_rules_mongo",
|
|
urls = [
|
|
"https://mdb-build-public.s3.amazonaws.com/bazel_rules_mongo/0.1.1/bazel_rules_mongo.tar.gz",
|
|
],
|
|
)
|
|
|
|
load("@bazel_rules_mongo//codeowners:codeowners_validator.bzl", "codeowners_validator")
|
|
|
|
codeowners_validator()
|
|
|
|
load("@bazel_rules_mongo//codeowners:codeowners_binary.bzl", "codeowners_binary")
|
|
|
|
codeowners_binary()
|
|
|
|
poetry(
|
|
name = "poetry_bazel_rules_mongo",
|
|
lockfile = "@bazel_rules_mongo//:poetry.lock",
|
|
pyproject = "@bazel_rules_mongo//:pyproject.toml",
|
|
)
|
|
```
|
|
|
|
5. Use the rule however you see fit! For example to add `bazel run codeowners` to your repo you can add the following to your root `BUILD.bazel` file
|
|
|
|
```
|
|
alias(
|
|
name = "codeowners",
|
|
actual = "@bazel_rules_mongo//codeowners:codeowners",
|
|
)
|
|
```
|
|
|
|
# Deploying
|
|
|
|
When you are ready for a new version to be released, bump the version in the [pyproject.toml](https://github.com/mongodb/mongo/blob/master/buildscripts/bazel_rules_mongo/pyproject.toml) file.
|
|
This will be deployed the next time the `package_bazel_rules_mongo` task runs (nightly). You can schedule this earlier in the waterfall when your pr is merged if you want it quicker.
|