Skip to content

Conversation

@arkaza-nr
Copy link

@arkaza-nr arkaza-nr commented Dec 8, 2025

Adds automated release workflows for iOS Video Agent SDK using semantic-release and GitHub Actions.

Changes:

  • Automated version bumping: Creates release PRs automatically based on conventional commits
  • Automated publishing: Publishes to CocoaPods when release PRs are merged
  • CHANGELOG generation: Auto-generates changelog from commit history

Testing

  1. Tested on user/arkazakumari/ios-release-automation branch with git push.
    Release Workflow Run: https://github.com/newrelic/video-agent-iOS/actions/runs/20316223199/job/58360440802
Screenshot 2025-12-18 at 2 08 46 AM

Release PR: #86

NOTE:
The ios-publish.yml workflow could not be fully tested on the user/arkazakumari/ios-release-automation branch due to a GitHub Actions limitation:

GitHub only recognizes and triggers workflows that exist on the default branch (master).

  • The ios-release.yml workflow was testable because it triggers on push events, which registered it with GitHub when we pushed to the test branch
  • The ios-publish.yml workflow triggers on pull_request: closed events, but GitHub never registered it because workflows on non-default branches are not automatically discovered by GitHub. Even with the workflow file present and PRs being merged with the release label, GitHub couldn't execute it.

Once merged to master, the workflow will be automatically registered by GitHub and will trigger on future release PR merges.

@ametku
Copy link
Contributor

ametku commented Dec 8, 2025

@arkaza-nr
New commits cannot be commit to master since it's a protected. Ideally, you need to create a PR with the changes. You can refer to videojs release or discuss with Divya

@ametku
Copy link
Contributor

ametku commented Dec 8, 2025

@arkaza-nr Currently, it's expected that new release is created manually. Can you refer to VideoJs release and include it so that when a branch is merged to master. There is a release done automatically.


jobs:
release:
runs-on: macos-latest
Copy link
Contributor

Choose a reason for hiding this comment

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

is there any specific release for macos-latest ?

Copy link
Author

Choose a reason for hiding this comment

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

There's no need for macOS here. "ios-release.yml" workflow only does git operations and Node.js tasks. Changed to ubuntu-latest for faster execution and lower cost. The "ios-publish.yml" workflow still uses macos-latest since it needs CocoaPods.

echo ""

VERSION="${{ steps.get_version.outputs.version }}"
MAX_ATTEMPTS=20
Copy link
Contributor

Choose a reason for hiding this comment

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

If it fails to go through within 20 tries. Is there a way we can re run workflow and expect this to pick up. What I mean is - is this workflow idempotent ?

Copy link
Author

Choose a reason for hiding this comment

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

Yes, we can re-run the workflow and it will safely pick up where it left off. No duplicate tags or releases will be created. Pod publish will fail if already published, but this is safe and expected.

RELEASE.md Outdated

## Testing the Workflow (Without Publishing)

You can safely test the workflow on non-master branches:
Copy link
Contributor

Choose a reason for hiding this comment

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

This is not needed in release.md

Copy link
Author

Choose a reason for hiding this comment

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

removed.

@ametku
Copy link
Contributor

ametku commented Dec 9, 2025

@arkaza-nr please confirm, Currently we are needed to add assets to release. Check this. Check if this can be done too. This is a manual step atm.

arkaza-nr and others added 8 commits December 15, 2025 15:39
## [4.1.0](4.0.1...4.1.0) (2025-12-15)

### Features

* add automated release workflow ([77845b8](77845b8))
* add automated release workflow ([ff3cdd6](ff3cdd6))
* add automated release workflow ([46eacd1](46eacd1))
* add automated release workflow ([9eab955](9eab955))

### Bug Fixes

* add conventional-changelog-conventionalcommits dependency ([3809333](3809333))
* correct YAML syntax for PR body and commit message ([82cb673](82cb673))
@github-actions
Copy link

🎉 This PR is included in version 4.1.0 🎉

The release is available on GitHub release

Your semantic-release bot 📦🚀

@arkaza-nr arkaza-nr force-pushed the user/arkazakumari/ios-release-automation branch 3 times, most recently from a79fd2f to 01993c1 Compare December 17, 2025 18:32
RELEASE.md Outdated
6. Creates a git tag (`vX.Y.Z`)
7. Creates a GitHub Release with installation instructions
8. Verifies all pods are published
9. Deletes the release branch (cleanup)
Copy link
Contributor

Choose a reason for hiding this comment

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

This step is unwanted since it always better to leave a trail in automation so that dev can review back in the future.

Copy link
Author

Choose a reason for hiding this comment

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

done, removed branch clean up step.

git commit -m "chore: update dependencies"
```

## Release Process (Step by Step)
Copy link
Contributor

Choose a reason for hiding this comment

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

"Workflows" and "Release Process (Step by Step)" are duplicating content. We could just keep "Release Process (Step by Step)"

Copy link
Author

Choose a reason for hiding this comment

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

done

RELEASE.md Outdated
Comment on lines 152 to 153
- Creates git tag `vX.Y.Z`
- Creates GitHub Release
Copy link
Contributor

Choose a reason for hiding this comment

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

creating GitHub Release should create git tag automatically. If these 2 steps are seperate then only GitHub Release can be present

Copy link
Author

Choose a reason for hiding this comment

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

Yes, we aren't creating tag manually. It's created through GitHub Release only. Updated RELEASE.md file with the same.

RELEASE.md Outdated
Comment on lines 249 to 257
### Branch Protection

Recommended branch protection rules for `master`:

- Require pull request reviews
- Require status checks to pass
- Require branches to be up to date
- Do not allow bypassing the above settings

Copy link
Contributor

Choose a reason for hiding this comment

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

this section seems not required

Copy link
Author

Choose a reason for hiding this comment

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

Removed this section.

RELEASE.md Outdated

---

Last updated: December 2025 No newline at end of file
Copy link
Contributor

Choose a reason for hiding this comment

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

this is not required since it's version controlled

Copy link
Author

Choose a reason for hiding this comment

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

removed.

RELEASE.md Outdated
Comment on lines 354 to 357
4. **Automatic Cleanup**
- Release branches are deleted after successful publish
- Keeps repository clean
- Clear lifecycle from creation to deletion
Copy link
Contributor

Choose a reason for hiding this comment

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

this is not needed in my opinion

Copy link
Author

Choose a reason for hiding this comment

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

removed branch cleanup step.


### Key Principles:

1. **One Branch = One PR**
Copy link
Contributor

Choose a reason for hiding this comment

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

please add preferably it's develop in normal development workflow

Copy link
Author

Choose a reason for hiding this comment

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

added notes for normal development workflow.

arkaza-nr and others added 17 commits December 18, 2025 13:39
## [4.1.0](v4.0.1...v4.1.0) (2025-12-23)

### Features

* add automated release workflow ([77845b8](77845b8))
* add automated release workflow ([ff3cdd6](ff3cdd6))
* add automated release workflow ([46eacd1](46eacd1))
* add automated release workflow ([9eab955](9eab955))
* automate iOS release process with semantic versioning ([2b846de](2b846de))
* implement stable one-shot PR release workflow ([7f711db](7f711db))
* test release workflow ([4dc66b7](4dc66b7))
* test release workflow after tag cleanup ([01993c1](01993c1))
* test stable one-shot PR workflow ([903711c](903711c))
* tetsing publish workflow ([021c894](021c894))
* trigger release workflow ([f89705c](f89705c))

### Bug Fixes

* add conventional-changelog-conventionalcommits dependency ([3809333](3809333))
* add label to release PR ([03c6932](03c6932))
* add label to release PR ([8cfb755](8cfb755))
* changelog not generated in dry run mode ([4de8065](4de8065))
* correct YAML syntax for PR body and commit message ([fb8fb14](fb8fb14))
* correct YAML syntax for PR body and commit message ([82cb673](82cb673))
* remove tag craetion through semantic release ([9769857](9769857))
* remove unnecessary manual tag creation step ([56e88c0](56e88c0))
* semantic tag creation ([ad9679d](ad9679d))
* tag creation should happen during release creation ([2486db0](2486db0))
* tag creation with semantic ([29ee1ae](29ee1ae))
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.

4 participants