From ede1d433dc396fb247ef7667589efe17d2a67b61 Mon Sep 17 00:00:00 2001 From: "mkeeler@launchdarkly.com" Date: Mon, 6 Apr 2026 16:46:20 +0000 Subject: [PATCH 1/2] ci: split release-please into independent release and PR creation steps --- .github/workflows/release-please.yml | 53 ++++++++++++++++++++++------ 1 file changed, 42 insertions(+), 11 deletions(-) diff --git a/.github/workflows/release-please.yml b/.github/workflows/release-please.yml index 070d20e..2f673c7 100644 --- a/.github/workflows/release-please.yml +++ b/.github/workflows/release-please.yml @@ -6,50 +6,81 @@ on: - main jobs: + release-please: + runs-on: ubuntu-latest + permissions: + contents: write + pull-requests: write + outputs: + releases_created: ${{ steps.release.outputs.releases_created }} + steps: + # Create any releases first, then create tags, and then optionally create any new PRs. + - uses: googleapis/release-please-action@16a9c90856f42705d54a6fda1823352bdc62cf38 # v4.4.0 + id: release + with: + skip-github-pull-request: true + + # Need the repository content to be able to create and push a tag. + - uses: actions/checkout@v4 + if: ${{ steps.release.outputs.release_created == 'true' }} + + - name: Create release tag + if: ${{ steps.release.outputs.release_created == 'true' }} + env: + TAG_NAME: ${{ steps.release.outputs.tag_name }} + GH_TOKEN: ${{ secrets.GITHUB_TOKEN }} + run: | + if gh api "repos/${{ github.repository }}/git/ref/tags/${TAG_NAME}" >/dev/null 2>&1; then + echo "Tag ${TAG_NAME} already exists, skipping creation." + else + echo "Creating tag ${TAG_NAME}." + git config user.name "github-actions[bot]" + git config user.email "github-actions[bot]@users.noreply.github.com" + git tag "${TAG_NAME}" + git push origin "${TAG_NAME}" + fi + + - uses: googleapis/release-please-action@16a9c90856f42705d54a6fda1823352bdc62cf38 # v4.4.0 + if: ${{ steps.release.outputs.release_created != 'true' }} + id: release-prs + with: + skip-github-release: true + release-package: + needs: release-please + if: ${{ needs.release-please.outputs.releases_created == 'true' }} runs-on: ubuntu-latest permissions: id-token: write # Needed if using OIDC to get release secrets. contents: write # Contents and pull-requests are for release-please to make releases. - pull-requests: write attestations: write # Needed for actions/attest steps: - - uses: googleapis/release-please-action@16a9c90856f42705d54a6fda1823352bdc62cf38 # v4 - id: release - - uses: actions/checkout@v4 - if: ${{ steps.release.outputs.releases_created == 'true' }} with: fetch-depth: 0 # Full history is required for proper changelog generation - uses: launchdarkly/gh-actions/actions/release-secrets@release-secrets-v1.2.0 - if: ${{ steps.release.outputs.releases_created == 'true' }} name: 'Get rubygems API key' with: aws_assume_role: ${{ vars.AWS_ROLE_ARN }} ssm_parameter_pairs: '/production/common/releasing/rubygems/api_key = GEM_HOST_API_KEY' - uses: ./.github/actions/ci - if: ${{ steps.release.outputs.releases_created == 'true' }} with: ruby-version: 3.0 - uses: ./.github/actions/build-docs - if: ${{ steps.release.outputs.releases_created == 'true' }} - uses: ./.github/actions/publish id: publish - if: ${{ steps.release.outputs.releases_created == 'true' }} with: dry_run: false - uses: ./.github/actions/publish-docs - if: ${{ steps.release.outputs.releases_created == 'true' }} with: token: ${{secrets.GITHUB_TOKEN}} - name: Attest build provenance - if: ${{ steps.release.outputs.releases_created == 'true' }} uses: actions/attest@v4 with: subject-path: 'launchdarkly-server-sdk-otel-*.gem' From f144b07b359bd294a1b620433e77beb041b2cf77 Mon Sep 17 00:00:00 2001 From: "mkeeler@launchdarkly.com" Date: Mon, 6 Apr 2026 17:14:54 +0000 Subject: [PATCH 2/2] ci: use release_created consistently in single-package repo --- .github/workflows/release-please.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/release-please.yml b/.github/workflows/release-please.yml index 2f673c7..27090b2 100644 --- a/.github/workflows/release-please.yml +++ b/.github/workflows/release-please.yml @@ -12,7 +12,7 @@ jobs: contents: write pull-requests: write outputs: - releases_created: ${{ steps.release.outputs.releases_created }} + release_created: ${{ steps.release.outputs.release_created }} steps: # Create any releases first, then create tags, and then optionally create any new PRs. - uses: googleapis/release-please-action@16a9c90856f42705d54a6fda1823352bdc62cf38 # v4.4.0 @@ -48,7 +48,7 @@ jobs: release-package: needs: release-please - if: ${{ needs.release-please.outputs.releases_created == 'true' }} + if: ${{ needs.release-please.outputs.release_created == 'true' }} runs-on: ubuntu-latest permissions: id-token: write # Needed if using OIDC to get release secrets.