Skip to content

Release Process

Sitaktif edited this page Nov 24, 2025 · 14 revisions

Prerequisites

  • CI main builds are green
  • Update pkl/private/constants.bzl with the new pkl version and the new SHAs
  • Update pkl/repositories.bzl with the new default pkl version
  • Update MODULE.bazel with the new pkl version(s)
  • You can run bazel run @rules_pkl_deps//:outdated to check for outdate versions
  • Run bazel run @unpinned_rules_pkl_deps//:pin and bazel run @unpinned_custom_pkl_java_library_maven_deps//:pin to update the maven lock file
  • Create a PR targeting main with the message Add Pkl X.Y.Z and make it the default version and merge
  • Bump rules_pkl version in MODULE.bazel and README.md
  • Create a PR targeting main with the message Bump module to X.Y.Z and merge
  • Wait for the main build to be green

Release

  • Create and merge a PR to update the version number in MODULE.bazel and README.md
  • Create a tag on current main: git tag -a vX.Y.Z -m "Release version vX.Y.Z"
  • Push to upstream (git push upstream refs/tags/vX.Y.Z)
  • Create a draft release on github
    • Make sure to click Generate release notes to auto generate the contributors and changelog
  • Copy and paste the following text and edit the release version
## Pkl Rules

[Pkl] is an embeddable configuration language with rich support for data templating and
validation. It can be used from the command line, integrated in a build pipeline, or embedded in a
program. Pkl scales from small to large, simple to complex, ad-hoc to repetitive configuration
tasks.

For further information about Pkl, check out the [official Pkl documentation].

[official Pkl documentation]: https://pkl-lang.org/main/current/index.html
[pkl]: https://pkl-lang.org


## Quick Start

### Setup

To use `rules_pkl`, enable `bzlmod` within your project, and then add the following to your `MODULE.bazel`:

```starlark
# Please check the releases page on GitHub for the latest released version
bazel_dep(name = "rules_pkl", version = "X.Y.Z")
```

## Examples

See the `examples/` directory for complete examples of how to use `rules_pkl`.

## Ruleset Docs

For further information on the rules provided, check out the [`rules_pkl` documentation].

[`rules_pkl` documentation]: https://github.com/apple/rules_pkl/blob/main/docs/rules_pkl_docs.md
  • Make sure that all PRs by people who are not on the team are mentioned.
  • Bazel uses integrity hashes to ensure that the dependency requested is the dependency you get, but GitHub occasionally changes how auto-generated source archives are created. To avoid this, we create and upload our own source archive as an asset on the release. To do this run ./scripts/push-release-artifacts.sh X.Y.Z (notice there's no v before the tag). You will need gh installed locally for this to work
  • In the GitHub UI, mark the release as the latest release

Release to Bazel Central Registry (BCR)

  • Make sure you have the bcr repo up to date locally
  • In the rules_pkl repo run ./scripts/prep-bcr-pr.sh <path_to_bcr_repo> <version> where <version> is the version being released, without the v prefix.
  • In the bcr repo run
git checkout -b release-rules-pkl
git add modules/rules_pkl
git commit -am "Release rules_pkl <version>"
  • Push this branch to your fork
  • Create a PR in the bcr repo with the title "rules_pkl@<version>"
  • Wait for it to be merged

Clone this wiki locally