From 8f8bc0488505c730b2b02ad2b411cb87b8c68778 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bence=20Horn=C3=A1k?= Date: Mon, 2 Jun 2025 21:56:05 +0200 Subject: [PATCH 1/3] Configure Release-please MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Bence HornΓ‘k --- .github/workflows/release_please.yaml | 81 +++++++++++++++++++++++++++ .release-please-manifest.json | 1 + README.md | 4 ++ build.gradle.kts | 2 + providers/env-var/README.md | 4 ++ release-please-config.json | 72 ++++++++++++++++++++++++ 6 files changed, 164 insertions(+) create mode 100644 .github/workflows/release_please.yaml create mode 100644 .release-please-manifest.json create mode 100644 release-please-config.json diff --git a/.github/workflows/release_please.yaml b/.github/workflows/release_please.yaml new file mode 100644 index 0000000..23b6e0c --- /dev/null +++ b/.github/workflows/release_please.yaml @@ -0,0 +1,81 @@ +on: + push: + branches: + - main + +name: Run Release Please +jobs: + release-please: + runs-on: ubuntu-latest + + # Release-please creates a PR that tracks all changes + steps: + - uses: google-github-actions/release-please-action@v3 + id: release + with: + release-type: simple + command: manifest + token: ${{secrets.GITHUB_TOKEN}} + default-branch: main + + - name: Dump Release Please Output + env: + RELEASE_PLEASE_OUTPUT: ${{ toJson(steps.release.outputs) }} + run: | + echo "$RELEASE_PLEASE_OUTPUT" + + outputs: + release_created: ${{ steps.release.outputs.release_created }} + + kotlin-release: + needs: release-please + runs-on: ubuntu-latest + if: ${{ needs.release-please.outputs.release_created }} + steps: + # The logic below handles the github release: + - name: Cache Gradle and wrapper + uses: actions/cache@v3 + with: + path: | + ~/.gradle/caches + ~/.gradle/wrapper + key: ${{ runner.os }}-gradle-${{ hashFiles('**/*.gradle*') }} + restore-keys: | + ${{ runner.os }}-gradle- + + - uses: actions/checkout@v4 + + - name: Configure GPG Key + run: | + echo -n "$GPG_SIGNING_KEY" | gpg --import + gpg --pinentry-mode=loopback --export-secret-key 08C5EC5C > ~/.gnupg/secring.gpg + env: + GPG_SIGNING_KEY: ${{ secrets.GPG_SIGNING_KEY }} + + - name: Add signing secrets to gradle.properties + run: | + mkdir -p ~/.gradle/ + echo "signing.keyId=08C5EC5C" >> ~/.gradle/gradle.properties + echo "signing.secretKeyRingFile=/home/runner/.gnupg/secring.gpg" >> ~/.gradle/gradle.properties + echo "signing.password=$GPG_SIGNING_KEY_PASSWORD" >> ~/.gradle/gradle.properties + env: + GPG_SIGNING_KEY_ID: ${{ secrets.GPG_SIGNING_KEY_ID }} + GPG_SIGNING_KEY_PASSWORD: ${{ secrets.GPG_SIGNING_KEY_PASSWORD }} + + - name: Set up JDK 11 + uses: actions/setup-java@v3 + with: + java-version: 11 + distribution: 'zulu' + + - name: Grant Permission for Gradlew to Execute + run: chmod +x gradlew + + - name: Publish to Sonatype + env: + OSSRH_USERNAME: ${{ secrets.OSSRH_USERNAME }} + OSSRH_PASSWORD: ${{ secrets.OSSRH_PASSWORD }} + run: ./gradlew publishToSonatype closeAndReleaseSonatypeStagingRepository --no-daemon --stacktrace + + - name: Clean up signing secrets + run: rm ~/.gradle/gradle.properties \ No newline at end of file diff --git a/.release-please-manifest.json b/.release-please-manifest.json new file mode 100644 index 0000000..b881a39 --- /dev/null +++ b/.release-please-manifest.json @@ -0,0 +1 @@ +{".":"0.1.0"} diff --git a/README.md b/README.md index add0962..fc83472 100644 --- a/README.md +++ b/README.md @@ -10,6 +10,10 @@ The project includes: - [Providers](./providers) - [Hooks](./hooks) +## Releases + +This repo uses _Release Please_ to release packages. Release Please sets up a running PR that tracks all changes for the library components, and maintains the versions according to [conventional commits](https://www.conventionalcommits.org/en/v1.0.0/), generated when [PRs are merged](https://github.com/amannn/action-semantic-pull-request). When Release Please's running PR is merged, any changed artifacts are published. + ### Software Bill of Materials (SBOM) We publish SBOMs with all of our releases. You can find them in Maven Central alongside the artifacts. diff --git a/build.gradle.kts b/build.gradle.kts index 722dc5b..6b43dea 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -4,7 +4,9 @@ plugins { allprojects { extra["groupId"] = "dev.openfeature.kotlin.contrib" +// x-release-please-start-version ext["version"] = "0.1.0" +// x-release-please-end } group = project.extra["groupId"].toString() version = project.extra["version"].toString() diff --git a/providers/env-var/README.md b/providers/env-var/README.md index 02aa722..af80652 100644 --- a/providers/env-var/README.md +++ b/providers/env-var/README.md @@ -17,6 +17,8 @@ The Environment Variables provider allows you to read feature flags from the [pr ## Installation + + ```xml dev.openfeature.kotlin.contrib.providers @@ -25,6 +27,8 @@ The Environment Variables provider allows you to read feature flags from the [pr ``` + + ## Usage To use the `EnvVarProvider` create an instance and use it as a provider: diff --git a/release-please-config.json b/release-please-config.json new file mode 100644 index 0000000..4919884 --- /dev/null +++ b/release-please-config.json @@ -0,0 +1,72 @@ +{ + "bootstrap-sha": "c9eca676d0fd091a6146de2246435f9d52ab3cae", + "packages": { + ".": { + "release-type": "simple", + "bump-minor-pre-major": true, + "bump-patch-for-minor-pre-major": true, + "versioning": "default", + "extra-files": [ + "README.md", + "build.gradle.kts", + "providers/*/README.md", + "hooks/*/README.md" + ] + } + }, + "changelog-sections": [ + { + "type": "fix", + "section": "πŸ› Bug Fixes" + }, + { + "type": "feat", + "section": "✨ New Features" + }, + { + "type": "chore", + "section": "🧹 Chore" + }, + { + "type": "docs", + "section": "πŸ“š Documentation" + }, + { + "type": "perf", + "section": "πŸš€ Performance" + }, + { + "type": "build", + "hidden": true, + "section": "πŸ› οΈ Build" + }, + { + "type": "deps", + "section": "πŸ“¦ Dependencies" + }, + { + "type": "ci", + "hidden": true, + "section": "🚦 CI" + }, + { + "type": "refactor", + "section": "πŸ”„ Refactoring" + }, + { + "type": "revert", + "section": "πŸ”™ Reverts" + }, + { + "type": "style", + "hidden": true, + "section": "🎨 Styling" + }, + { + "type": "test", + "hidden": true, + "section": "πŸ§ͺ Tests" + } + ], + "$schema": "https://raw.githubusercontent.com/googleapis/release-please/main/schemas/config.json" +} From d8eb79d4746415ca830a382574b98339423841c5 Mon Sep 17 00:00:00 2001 From: Michael Beemer Date: Tue, 16 Sep 2025 17:09:52 +0000 Subject: [PATCH 2/3] configure Release Please to support monorepos Signed-off-by: Michael Beemer --- .github/workflows/release_please.yaml | 15 +++++++++------ .release-please-manifest.json | 5 ++++- release-please-config.json | 18 +++++++++++++----- 3 files changed, 26 insertions(+), 12 deletions(-) diff --git a/.github/workflows/release_please.yaml b/.github/workflows/release_please.yaml index 23b6e0c..b230cf2 100644 --- a/.github/workflows/release_please.yaml +++ b/.github/workflows/release_please.yaml @@ -7,16 +7,17 @@ name: Run Release Please jobs: release-please: runs-on: ubuntu-latest + permissions: + contents: write # for googleapis/release-please-action to create release commit + pull-requests: write # for googleapis/release-please-action to create release PR # Release-please creates a PR that tracks all changes steps: - - uses: google-github-actions/release-please-action@v3 + - uses: googleapis/release-please-action@a02a34c4d625f9be7cb89156071d8567266a2445 # v4 id: release with: - release-type: simple - command: manifest token: ${{secrets.GITHUB_TOKEN}} - default-branch: main + target-branch: main - name: Dump Release Please Output env: @@ -25,12 +26,14 @@ jobs: echo "$RELEASE_PLEASE_OUTPUT" outputs: - release_created: ${{ steps.release.outputs.release_created }} + release_created: ${{ steps.release.outputs.releases_created }} + all: ${{ toJSON(steps.release.outputs) }} + paths_released: ${{ steps.release.outputs.paths_released }} kotlin-release: needs: release-please runs-on: ubuntu-latest - if: ${{ needs.release-please.outputs.release_created }} + if: ${{ fromJSON(needs.release-please.outputs.release_created || false) }} steps: # The logic below handles the github release: - name: Cache Gradle and wrapper diff --git a/.release-please-manifest.json b/.release-please-manifest.json index b881a39..cacf5c9 100644 --- a/.release-please-manifest.json +++ b/.release-please-manifest.json @@ -1 +1,4 @@ -{".":"0.1.0"} +{ + "providers/env-var": "0.1.0", + "providers/ofrep": "0.1.0" +} diff --git a/release-please-config.json b/release-please-config.json index 4919884..2fb201f 100644 --- a/release-please-config.json +++ b/release-please-config.json @@ -1,16 +1,24 @@ { - "bootstrap-sha": "c9eca676d0fd091a6146de2246435f9d52ab3cae", + "bootstrap-sha": "2c5c1d95344990ae45d2d26f30e8c4c45add67c2", "packages": { - ".": { + "providers/env-var": { "release-type": "simple", "bump-minor-pre-major": true, "bump-patch-for-minor-pre-major": true, "versioning": "default", "extra-files": [ "README.md", - "build.gradle.kts", - "providers/*/README.md", - "hooks/*/README.md" + "build.gradle.kts" + ] + }, + "providers/ofrep": { + "release-type": "simple", + "bump-minor-pre-major": true, + "bump-patch-for-minor-pre-major": true, + "versioning": "default", + "extra-files": [ + "README.md", + "build.gradle.kts" ] } }, From 4c83cf67374b96e2f7342e7810e78f88b7d69033 Mon Sep 17 00:00:00 2001 From: Michael Beemer Date: Tue, 16 Sep 2025 17:11:07 +0000 Subject: [PATCH 3/3] use dedicated release please token Signed-off-by: Michael Beemer --- .github/workflows/release_please.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/release_please.yaml b/.github/workflows/release_please.yaml index b230cf2..50656e0 100644 --- a/.github/workflows/release_please.yaml +++ b/.github/workflows/release_please.yaml @@ -16,7 +16,7 @@ jobs: - uses: googleapis/release-please-action@a02a34c4d625f9be7cb89156071d8567266a2445 # v4 id: release with: - token: ${{secrets.GITHUB_TOKEN}} + token: ${{secrets.RELEASE_PLEASE_ACTION_TOKEN}} target-branch: main - name: Dump Release Please Output