diff --git a/RELEASE_NOTES.md b/RELEASE_NOTES.md index 0215809f..bb4fe8a1 100644 --- a/RELEASE_NOTES.md +++ b/RELEASE_NOTES.md @@ -2,10 +2,7 @@ ## Summary -This release migrates lightweight GitHub Actions workflow jobs to use the new cost-effective `ubuntu-slim` runner. -It also updates cookiecutter pyproject license metadata to SPDX expressions to avoid setuptools deprecation warnings. -The auto-dependabot workflow now uses a GitHub App installation token instead of `GITHUB_TOKEN` to fix merge queue and auto-merge failures. -Finally, it adds an automated repo-config migration workflow that runs migration scripts on Dependabot PRs. +This release reduces CI cost by moving lightweight GitHub Actions jobs to the new `ubuntu-slim` runner, fixes Dependabot auto-merge/merge-queue issues by switching to a GitHub App installation token, and introduces an automated repo-config migration workflow (including updating existing repos' version-branch protection defaults). ## Upgrading @@ -16,7 +13,7 @@ Finally, it adds an automated repo-config migration workflow that runs migration All upgrading should be done via the migration script or regenerating the templates. ```bash -curl -sSL https://raw.githubusercontent.com/frequenz-floss/frequenz-repo-config-python/v0.14.0/cookiecutter/migrate.py | python3 +curl -sSL https://raw.githubusercontent.com/frequenz-floss/frequenz-repo-config-python/v0.15.0/cookiecutter/migrate.py | python3 ``` But you might still need to adapt your code: diff --git a/cookiecutter/{{cookiecutter.github_repo_name}}/pyproject.toml b/cookiecutter/{{cookiecutter.github_repo_name}}/pyproject.toml index c80046f6..ab04ff5a 100644 --- a/cookiecutter/{{cookiecutter.github_repo_name}}/pyproject.toml +++ b/cookiecutter/{{cookiecutter.github_repo_name}}/pyproject.toml @@ -5,7 +5,7 @@ requires = [ "setuptools == 80.9.0", "setuptools_scm[toml] == 8.1.0", - "frequenz-repo-config[{{cookiecutter.type}}] == 0.14.0", + "frequenz-repo-config[{{cookiecutter.type}}] == 0.15.0", {%- if cookiecutter.type == "api" %} # We need to pin the protobuf, grpcio and grpcio-tools dependencies to make # sure the code is generated using the minimum supported versions, as older @@ -104,7 +104,7 @@ dev-mkdocs = [ "mkdocs-material == 9.6.18", "mkdocstrings[python] == 1.0.0", "mkdocstrings-python == 2.0.1", - "frequenz-repo-config[{{cookiecutter.type}}] == 0.14.0", + "frequenz-repo-config[{{cookiecutter.type}}] == 0.15.0", ] dev-mypy = [ "mypy == 1.9.0", @@ -117,7 +117,7 @@ dev-mypy = [ ] dev-noxfile = [ "nox == 2025.5.1", - "frequenz-repo-config[{{cookiecutter.type}}] == 0.14.0", + "frequenz-repo-config[{{cookiecutter.type}}] == 0.15.0", ] dev-pylint = [ # dev-pytest already defines a dependency to pylint because of the examples @@ -127,7 +127,7 @@ dev-pylint = [ dev-pytest = [ "pytest == 8.4.1", "pylint == 3.3.8", # We need this to check for the examples - "frequenz-repo-config[extra-lint-examples] == 0.14.0", + "frequenz-repo-config[extra-lint-examples] == 0.15.0", {%- if cookiecutter.type != "api" %} "pytest-mock == 3.14.0", "pytest-asyncio == 1.1.0", diff --git a/tests_golden/integration/test_cookiecutter_generation/actor/frequenz-actor-test/pyproject.toml b/tests_golden/integration/test_cookiecutter_generation/actor/frequenz-actor-test/pyproject.toml index 36475c9c..9f52533f 100644 --- a/tests_golden/integration/test_cookiecutter_generation/actor/frequenz-actor-test/pyproject.toml +++ b/tests_golden/integration/test_cookiecutter_generation/actor/frequenz-actor-test/pyproject.toml @@ -5,7 +5,7 @@ requires = [ "setuptools == 80.9.0", "setuptools_scm[toml] == 8.1.0", - "frequenz-repo-config[actor] == 0.14.0", + "frequenz-repo-config[actor] == 0.15.0", ] build-backend = "setuptools.build_meta" @@ -61,7 +61,7 @@ dev-mkdocs = [ "mkdocs-material == 9.6.18", "mkdocstrings[python] == 1.0.0", "mkdocstrings-python == 2.0.1", - "frequenz-repo-config[actor] == 0.14.0", + "frequenz-repo-config[actor] == 0.15.0", ] dev-mypy = [ "mypy == 1.9.0", @@ -71,7 +71,7 @@ dev-mypy = [ ] dev-noxfile = [ "nox == 2025.5.1", - "frequenz-repo-config[actor] == 0.14.0", + "frequenz-repo-config[actor] == 0.15.0", ] dev-pylint = [ # dev-pytest already defines a dependency to pylint because of the examples @@ -81,7 +81,7 @@ dev-pylint = [ dev-pytest = [ "pytest == 8.4.1", "pylint == 3.3.8", # We need this to check for the examples - "frequenz-repo-config[extra-lint-examples] == 0.14.0", + "frequenz-repo-config[extra-lint-examples] == 0.15.0", "pytest-mock == 3.14.0", "pytest-asyncio == 1.1.0", "async-solipsism == 0.8", diff --git a/tests_golden/integration/test_cookiecutter_generation/api/frequenz-api-test/pyproject.toml b/tests_golden/integration/test_cookiecutter_generation/api/frequenz-api-test/pyproject.toml index ec88d9ca..12bd3c24 100644 --- a/tests_golden/integration/test_cookiecutter_generation/api/frequenz-api-test/pyproject.toml +++ b/tests_golden/integration/test_cookiecutter_generation/api/frequenz-api-test/pyproject.toml @@ -5,7 +5,7 @@ requires = [ "setuptools == 80.9.0", "setuptools_scm[toml] == 8.1.0", - "frequenz-repo-config[api] == 0.14.0", + "frequenz-repo-config[api] == 0.15.0", # We need to pin the protobuf, grpcio and grpcio-tools dependencies to make # sure the code is generated using the minimum supported versions, as older # versions can't work with code that was generated with newer versions. @@ -72,7 +72,7 @@ dev-mkdocs = [ "mkdocs-material == 9.6.18", "mkdocstrings[python] == 1.0.0", "mkdocstrings-python == 2.0.1", - "frequenz-repo-config[api] == 0.14.0", + "frequenz-repo-config[api] == 0.15.0", ] dev-mypy = [ "mypy == 1.9.0", @@ -83,7 +83,7 @@ dev-mypy = [ ] dev-noxfile = [ "nox == 2025.5.1", - "frequenz-repo-config[api] == 0.14.0", + "frequenz-repo-config[api] == 0.15.0", ] dev-pylint = [ # dev-pytest already defines a dependency to pylint because of the examples @@ -93,7 +93,7 @@ dev-pylint = [ dev-pytest = [ "pytest == 8.4.1", "pylint == 3.3.8", # We need this to check for the examples - "frequenz-repo-config[extra-lint-examples] == 0.14.0", + "frequenz-repo-config[extra-lint-examples] == 0.15.0", ] dev = [ "frequenz-api-test[dev-mkdocs,dev-flake8,dev-formatting,dev-mkdocs,dev-mypy,dev-noxfile,dev-pylint,dev-pytest]", diff --git a/tests_golden/integration/test_cookiecutter_generation/app/frequenz-app-test/pyproject.toml b/tests_golden/integration/test_cookiecutter_generation/app/frequenz-app-test/pyproject.toml index e61f9665..a92bc7d5 100644 --- a/tests_golden/integration/test_cookiecutter_generation/app/frequenz-app-test/pyproject.toml +++ b/tests_golden/integration/test_cookiecutter_generation/app/frequenz-app-test/pyproject.toml @@ -5,7 +5,7 @@ requires = [ "setuptools == 80.9.0", "setuptools_scm[toml] == 8.1.0", - "frequenz-repo-config[app] == 0.14.0", + "frequenz-repo-config[app] == 0.15.0", ] build-backend = "setuptools.build_meta" @@ -60,7 +60,7 @@ dev-mkdocs = [ "mkdocs-material == 9.6.18", "mkdocstrings[python] == 1.0.0", "mkdocstrings-python == 2.0.1", - "frequenz-repo-config[app] == 0.14.0", + "frequenz-repo-config[app] == 0.15.0", ] dev-mypy = [ "mypy == 1.9.0", @@ -70,7 +70,7 @@ dev-mypy = [ ] dev-noxfile = [ "nox == 2025.5.1", - "frequenz-repo-config[app] == 0.14.0", + "frequenz-repo-config[app] == 0.15.0", ] dev-pylint = [ # dev-pytest already defines a dependency to pylint because of the examples @@ -80,7 +80,7 @@ dev-pylint = [ dev-pytest = [ "pytest == 8.4.1", "pylint == 3.3.8", # We need this to check for the examples - "frequenz-repo-config[extra-lint-examples] == 0.14.0", + "frequenz-repo-config[extra-lint-examples] == 0.15.0", "pytest-mock == 3.14.0", "pytest-asyncio == 1.1.0", "async-solipsism == 0.8", diff --git a/tests_golden/integration/test_cookiecutter_generation/lib/frequenz-test-python/pyproject.toml b/tests_golden/integration/test_cookiecutter_generation/lib/frequenz-test-python/pyproject.toml index b850b555..5a00d86a 100644 --- a/tests_golden/integration/test_cookiecutter_generation/lib/frequenz-test-python/pyproject.toml +++ b/tests_golden/integration/test_cookiecutter_generation/lib/frequenz-test-python/pyproject.toml @@ -5,7 +5,7 @@ requires = [ "setuptools == 80.9.0", "setuptools_scm[toml] == 8.1.0", - "frequenz-repo-config[lib] == 0.14.0", + "frequenz-repo-config[lib] == 0.15.0", ] build-backend = "setuptools.build_meta" @@ -57,7 +57,7 @@ dev-mkdocs = [ "mkdocs-material == 9.6.18", "mkdocstrings[python] == 1.0.0", "mkdocstrings-python == 2.0.1", - "frequenz-repo-config[lib] == 0.14.0", + "frequenz-repo-config[lib] == 0.15.0", ] dev-mypy = [ "mypy == 1.9.0", @@ -67,7 +67,7 @@ dev-mypy = [ ] dev-noxfile = [ "nox == 2025.5.1", - "frequenz-repo-config[lib] == 0.14.0", + "frequenz-repo-config[lib] == 0.15.0", ] dev-pylint = [ # dev-pytest already defines a dependency to pylint because of the examples @@ -77,7 +77,7 @@ dev-pylint = [ dev-pytest = [ "pytest == 8.4.1", "pylint == 3.3.8", # We need this to check for the examples - "frequenz-repo-config[extra-lint-examples] == 0.14.0", + "frequenz-repo-config[extra-lint-examples] == 0.15.0", "pytest-mock == 3.14.0", "pytest-asyncio == 1.1.0", "async-solipsism == 0.8", diff --git a/tests_golden/integration/test_cookiecutter_generation/model/frequenz-model-test/pyproject.toml b/tests_golden/integration/test_cookiecutter_generation/model/frequenz-model-test/pyproject.toml index 892b7d0f..0226762b 100644 --- a/tests_golden/integration/test_cookiecutter_generation/model/frequenz-model-test/pyproject.toml +++ b/tests_golden/integration/test_cookiecutter_generation/model/frequenz-model-test/pyproject.toml @@ -5,7 +5,7 @@ requires = [ "setuptools == 80.9.0", "setuptools_scm[toml] == 8.1.0", - "frequenz-repo-config[model] == 0.14.0", + "frequenz-repo-config[model] == 0.15.0", ] build-backend = "setuptools.build_meta" @@ -61,7 +61,7 @@ dev-mkdocs = [ "mkdocs-material == 9.6.18", "mkdocstrings[python] == 1.0.0", "mkdocstrings-python == 2.0.1", - "frequenz-repo-config[model] == 0.14.0", + "frequenz-repo-config[model] == 0.15.0", ] dev-mypy = [ "mypy == 1.9.0", @@ -71,7 +71,7 @@ dev-mypy = [ ] dev-noxfile = [ "nox == 2025.5.1", - "frequenz-repo-config[model] == 0.14.0", + "frequenz-repo-config[model] == 0.15.0", ] dev-pylint = [ # dev-pytest already defines a dependency to pylint because of the examples @@ -81,7 +81,7 @@ dev-pylint = [ dev-pytest = [ "pytest == 8.4.1", "pylint == 3.3.8", # We need this to check for the examples - "frequenz-repo-config[extra-lint-examples] == 0.14.0", + "frequenz-repo-config[extra-lint-examples] == 0.15.0", "pytest-mock == 3.14.0", "pytest-asyncio == 1.1.0", "async-solipsism == 0.8",