Skip to content

chore: automate cocopods releases#155

Open
mario-launchdarkly wants to merge 4 commits intomainfrom
chore/ci-cd-cocoapods
Open

chore: automate cocopods releases#155
mario-launchdarkly wants to merge 4 commits intomainfrom
chore/ci-cd-cocoapods

Conversation

@mario-launchdarkly
Copy link
Contributor

@mario-launchdarkly mario-launchdarkly commented Mar 17, 2026

Note

Medium Risk
Changes the release pipeline to automatically publish CocoaPods specs on new releases and adds a manual publish path; mistakes in workflow conditions or secrets handling could cause failed or unintended publishes.

Overview
Automates CocoaPods releases by adding composite GitHub Actions to pod trunk push LaunchDarklyObservability.podspec and LaunchDarklySessionReplay.podspec, gated by a dry_run input.

Adds a workflow_dispatch Manual Publish workflow to publish either package after fetching the CocoaPods trunk token from AWS SSM.

Extends the release-please workflow to run on macos-latest, fetch the CocoaPods token when releases are created, and publish the corresponding podspec(s) based on release-please outputs; updates release-please-config.json and .release-please-manifest.json to treat LaunchDarklySessionReplay as a separate package and rename the root package to LaunchDarklyObservability.

Written by Cursor Bugbot for commit bbf4aab. This will update automatically on new commits. Configure here.


- name: Publish to CocoaPods
uses: ./.github/actions/publish
if: ${{ steps.release.outputs.releases_created == 'true' }}

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

If I remember correctly, when releasing multiple packages from one repo, there are package release specific outputs so that you can split the pod pushes into two separate publish actions.

This makes it so if you make changes to only session replay, release please won't push the observability pod.

Copy link

@cursor cursor bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Cursor Bugbot has reviewed your changes and found 2 potential issues.

Fix All in Cursor

Bugbot Autofix is OFF. To automatically fix reported issues with cloud agents, have a team admin enable autofix in the Cursor dashboard.

"release-type": "simple",
"versioning": "default",
"bump-minor-pre-major": true,
"extra-files": [
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

SessionReplay podspec extra-files path resolves to wrong location

High Severity

In release-please, extra-files paths are relative to the package directory, not the repo root. The Sources/LaunchDarklySessionReplay package lists "LaunchDarklySessionReplay.podspec" as an extra file, so release-please will look for it at Sources/LaunchDarklySessionReplay/LaunchDarklySessionReplay.podspec, which doesn't exist. The actual podspec lives at the repo root. This was previously handled correctly when the podspec was listed in the root . package's extra-files. Now the podspec version won't be updated during SessionReplay releases, causing pod trunk push to publish a stale version.

Fix in Cursor Fix in Web

"packages": {
".": {
"package-name": "swift-launchdarkly-observability",
"package-name": "LaunchDarklyObservability",
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Tag collisions from disabled component-in-tag with multiple packages

Medium Severity

With include-component-in-tag: false and include-v-in-tag: false, both packages produce bare version tags (e.g., 0.27.0). Adding the second Sources/LaunchDarklySessionReplay package means both packages will generate identical tag names when at the same version, causing tag collisions in Git. The podspecs also reference :tag => s.version.to_s, so CocoaPods source resolution depends on correct, distinct tags per package. One of these settings likely needs to be true now that there are two independently versioned packages.

Additional Locations (1)
Fix in Cursor Fix in Web

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants