Skip to content

Commit ea2920e

Browse files
v-HaripriyaCv-HaripriyaCmchammer01
authored
Add supported versioning tags for Bazel, Bun, Deno, GitHub Actions, Hex, Julia, Nix, NuGet, OpenTofu, Rust toolchain, and Terraform (#61647)
Co-authored-by: v-HaripriyaC <v-haripriyac@microsoft.com> Co-authored-by: mc <42146119+mchammer01@users.noreply.github.com>
1 parent 6e36c6a commit ea2920e

1 file changed

Lines changed: 53 additions & 7 deletions

File tree

data/reusables/dependabot/dependabot-updates-supported-versioning-tags.md

Lines changed: 53 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -24,15 +24,61 @@ The `dependabot.yml` file doesn't control the versioning tags that you can use,
2424
| Docker | `docker` | `alpha`, `beta`, `rc`, `dev`, `preview`, `pre`, `nightly`, `snapshot`, `canary`, `unstable` (heuristic detection) | `nginx@1.25.0-rc1`, `node@20.0.0-alpha.1`, `redis@7.0.0-nightly`, `alpine@3.18.0-dev`, `ubuntu@22.04-preview` |
2525
| git submodule | `gitsubmodule` | None—pins to commit SHAs or git tags (no versioning scheme) | `my-lib@abc1234`, `shared-utils@v1.2.0` |
2626
| Go modules | `gomod` | `alpha`, `beta`, `rc` (SemVer prerelease after `-`) | `github.com/go-chi/chi@v5.0.0-rc1`, `google.golang.org/grpc@v1.60.0-beta.1`, `github.com/octo-org/octo-module@v0.17.0-alpha.1` |
27+
| {% ifversion dependabot-bazel-support %} |
28+
| Bazel | `bazel` | Any SemVer prerelease identifier (commonly `alpha`, `beta`, `rc`) | `rules_go@0.46.0-rc1`, `rules_rust@0.40.0-beta`, `bazel_skylib@1.5.0-alpha` |
29+
| {% endif %} |
30+
| Bun | `bun` | `alpha`, `beta`, `rc`, `canary` (SemVer prerelease after `-`) | `bun@1.0.0-beta.1`, `elysia@1.0.0-rc.3`, `hono@4.0.0-canary.1` |
31+
| {% ifversion dependabot-deno-support %} |
32+
| Deno | `deno` | Any SemVer prerelease identifier (commonly `alpha`, `beta`, `rc`) | `oak@13.0.0-alpha`, `fresh@2.0.0-rc.1`, `std@0.220.0-beta.2` |
33+
| {% endif %} |
34+
| {% data variables.product.prodname_actions %} | `github-actions` | Any SemVer prerelease identifier (commonly `alpha`, `beta`, `rc`) | `my-org/my-action@v1.0.0-beta.1`, `my-org/deploy@v2.0.0-rc1`, `my-org/lint@v3.0.0-alpha` |
35+
| Hex | `mix` | Any SemVer prerelease identifier (commonly `alpha`, `beta`, `rc`, `dev`) | `phoenix/phoenix@1.7.0-rc.0`, `elixir-ecto/ecto@3.11.0-beta.1`, `elixir-plug/plug@1.15.0-alpha.1` |
36+
| {% ifversion dependabot-julia-support %} |
37+
| Julia | `julia` | Any SemVer prerelease identifier (commonly `rc`, `DEV`, `beta`) | `HTTP@1.10.0-rc1`, `Plots@2.0.0-DEV`, `DataFrames@1.6.0-beta.1` |
38+
| {% endif %} |
39+
| {% ifversion dependabot-nix-support %} |
40+
| Nix | `nix` | None—tracks flake input commits (no versioning scheme) | `nixpkgs@a1b2c3d`, `devenv@e4f5a6b`, `flake-utils@c7d8e9f` |
41+
| {% endif %} |
42+
| NuGet | `nuget` | Any SemVer prerelease identifier (commonly `alpha`, `beta`, `rc`, `preview`) | `Newtonsoft.Json@13.0.0-rc1`, `Microsoft.Extensions.Hosting@8.0.0-preview.7`, `Serilog@3.0.0-beta.1` |
43+
| {% ifversion dependabot-opentofu-support %} |
44+
| OpenTofu | `opentofu` | Any SemVer prerelease identifier (commonly `alpha`, `beta`, `rc`) | `opentofu/aws@5.0.0-alpha`, `opentofu/google@5.0.0-rc1`, `opentofu/azurerm@4.0.0-beta1` |
45+
| {% endif %} |
46+
| {% ifversion dependabot-rust-toolchain-support %} |
47+
| Rust toolchain | `rust-toolchain` | Channel-based: `stable`, `beta`, `nightly` (not SemVer prerelease) | `rust@1.78.0`, `rust@beta`, `rust@nightly`, `rust@nightly-2024-01-15` |
48+
| {% endif %} |
49+
| Terraform | `terraform` | Any SemVer prerelease identifier (commonly `alpha`, `beta`, `rc`) | `hashicorp/aws@5.0.0-rc1`, `hashicorp/google@4.0.0-alpha`, `hashicorp/azurerm@3.0.0-beta1` |
2750

2851
#### Ecosystem-specific versioning details
2952

3053
The following details describe how {% data variables.product.prodname_dependabot %} interprets versioning for specific ecosystems.
3154

32-
* **Bundler:** Bundler does not use a fixed set of prerelease tags. Any version segment containing a letter is treated as a prerelease (for example, `.alpha`, `.beta1`, `.rc2`). Hyphens in version strings are normalized to `.pre.` internally (for example, `1.0.0-beta` becomes `1.0.0.pre.beta`).
33-
* **Cargo:** Follows SemVer 2.0.0 prerelease conventions. Anything after `-` is a prerelease identifier (dot-separated, `[0-9A-Za-z-]`). Build metadata (`+...`) is allowed but ignored for version precedence.
34-
* **Gradle:** Aliases are also recognized: `pr`/`pre`/`preview``rc`, `eap`/`ea``alpha`. Additional prerelease qualifiers include `dev`, `experimental`, and `unstable`. Qualifiers are ordered by precedence: `alpha`/`a` < `beta`/`b` < `milestone`/`m` < `rc`/`cr` < `snapshot` < (empty/`ga`/`final`/`release`) < `sp`. Free-form identifiers not in this list are treated as stable.
35-
* **pip/pipenv/pip-compile/poetry (PEP 440):** The table lists canonical prerelease and postrelease suffixes per PEP 440. Aliases are also recognized and normalized to their canonical forms (`alpha``a`, `beta``b`, `c`/`pre`/`preview``rc`, `rev`/`r``post`). Epoch versions (`N!...`) and local versions (`+local`) are supported; local version segments are used only to break ties when the public version is identical.
36-
* **Elm:** The Elm package registry enforces strict SemVer (`MAJOR.MINOR.PATCH` integers only) and does not allow publishing pre-release versions. Dependabot compares versions numerically.
37-
* **Go modules:** Follows SemVer with a mandatory `v` prefix. Pseudo-versions (`v0.0.0-YYYYMMDDHHMMSS-commithash`) are used for unreleased commits and are always treated as pre-release. The `+incompatible` suffix marks modules at major version 2+ without a `go.mod` file and does not affect version ordering.
38-
* **git submodule:** Dependabot tracks the latest commit on the configured branch. There is no version comparison—updates always move the pinned SHA forward. If the submodule tracks a tag, Dependabot follows the tag's commit.
55+
* **Bundler:** Does not use a fixed set of prerelease tags. Any version segment containing a letter is treated as prerelease (for example, `.alpha`, `.beta1`, `.rc2`). Hyphens are normalized to `.pre.` internally (for example, `1.0.0-beta` becomes `1.0.0.pre.beta`).
56+
* **Cargo:** Follows SemVer 2.0.0 conventions. Anything after `-` is a prerelease identifier (dot-separated, `[0-9A-Za-z-]`). Build metadata (`+...`) is allowed but ignored for precedence.
57+
* **Gradle:** In addition to the qualifiers listed in the table, these aliases are recognized: `pr`/`pre`/`preview``rc`, `eap`/`ea``alpha`. Additional prerelease qualifiers include `dev`, `experimental`, and `unstable`. Qualifiers are ordered by precedence: `alpha`/`a` < `beta`/`b` < `milestone`/`m` < `rc`/`cr` < `snapshot` < (empty/`ga`/`final`/`release`) < `sp`. Free-form identifiers not in this list are treated as stable.
58+
* **pip/pipenv/pip-compile/poetry (PEP 440):** The table lists canonical prerelease and postrelease suffixes. Aliases are also recognized and normalized (`alpha``a`, `beta``b`, `c`/`pre`/`preview``rc`, `rev`/`r``post`). Epoch versions (`N!...`) and local versions (`+local`) are supported; local segments are used only to break ties when the public version is identical.
59+
* **Elm:** Enforces strict SemVer (`MAJOR.MINOR.PATCH` integers only). The Elm package registry does not allow publishing prerelease versions. {% data variables.product.prodname_dependabot %} compares versions numerically.
60+
* **Go modules:** Follows SemVer with a mandatory `v` prefix. Pseudo-versions (`v0.0.0-YYYYMMDDHHMMSS-commithash`) represent unreleased commits and are always treated as prerelease. The `+incompatible` suffix marks modules at major version 2+ without a `go.mod` file and does not affect version ordering.
61+
* **git submodule:** {% data variables.product.prodname_dependabot %} tracks the latest commit on the configured branch. There is no version comparison—updates always move the pinned SHA forward. If the submodule tracks a tag, {% data variables.product.prodname_dependabot %} follows the tag's commit.
62+
{% ifversion dependabot-bazel-support %}
63+
* **Bazel:** Follows SemVer prerelease conventions. The Bazel Central Registry (BCR) `.bcr.N` suffix is stripped before comparison and does not affect prerelease detection.
64+
{% endif %}
65+
* **Bun:** Follows npm-style SemVer prerelease conventions. Build metadata (`+...`) is supported but ignored for version precedence.
66+
{% ifversion dependabot-deno-support %}
67+
* **Deno:** Follows SemVer prerelease conventions. Build metadata (`+...`) is supported but ignored for version precedence.
68+
{% endif %}
69+
* **{% data variables.product.prodname_actions %}:** {% data variables.product.prodname_dependabot %} resolves action versions from git tags. Any tag with a SemVer prerelease identifier (anything after `-`) is treated as prerelease. Additionally, releases marked as prerelease via the GitHub Release API are recognized regardless of tag format.
70+
* **Hex:** Follows SemVer prerelease conventions. Any identifier after `-` is treated as prerelease.
71+
{% ifversion dependabot-julia-support %}
72+
* **Julia:** Follows SemVer prerelease conventions. Prerelease identifiers are case-sensitive (for example, `DEV` and `dev` are distinct).
73+
{% endif %}
74+
{% ifversion dependabot-nix-support %}
75+
* **Nix:** {% data variables.product.prodname_dependabot %} tracks flake input commits, similar to git submodules. The table shows user-facing commit SHAs; internally, versions are represented as pseudo-versions (`0.0.0-0.N`). There is no traditional version comparison—updates move forward to the latest upstream commit.
76+
{% endif %}
77+
* **NuGet:** Follows SemVer 2.0.0 prerelease conventions. Build metadata (`+...`) is supported but ignored for version precedence.
78+
{% ifversion dependabot-opentofu-support %}
79+
* **OpenTofu:** Follows SemVer prerelease conventions (same as Terraform). Build metadata (including the `+backport` suffix) is stripped before comparison and does not affect prerelease detection.
80+
{% endif %}
81+
{% ifversion dependabot-rust-toolchain-support %}
82+
* **Rust toolchain:** Uses channel-based versioning (`stable`, `beta`, `nightly`) rather than SemVer prerelease identifiers. {% data variables.product.prodname_dependabot %} updates the pinned channel or date-stamped nightly (for example, `nightly-2024-01-15`) to the latest available.
83+
{% endif %}
84+
* **Terraform:** Follows SemVer prerelease conventions. The `v` prefix is stripped before comparison. Build metadata (`+...`) is ignored for version precedence.

0 commit comments

Comments
 (0)