Skip to content

IOS CI workflow #508

Open
harishthakur52 wants to merge 22 commits into
ob-f:masterfrom
3dwesupport:ios-ci-workflow
Open

IOS CI workflow #508
harishthakur52 wants to merge 22 commits into
ob-f:masterfrom
3dwesupport:ios-ci-workflow

Conversation

@harishthakur52
Copy link
Copy Markdown
Contributor

@harishthakur52 harishthakur52 commented Mar 26, 2026

  1. Installing cocoapods in system.
  2. Testing compatibilty with packages versions.

Copy link
Copy Markdown

Copilot AI left a comment

Choose a reason for hiding this comment

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

Pull request overview

Adds a GitHub Actions workflow intended to provide iOS CI around CocoaPods setup for the ios/OpenBot project.

Changes:

  • Introduces a new workflow triggered on changes under ios/OpenBot/** and the workflow file itself.
  • Adds steps to install CocoaPods and run pod install from ios/OpenBot.
  • Forces regeneration of dependencies by deleting Podfile.lock before install.

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

Comment on lines +1 to +37
# This workflow builds and tests the iOS app with CocoaPods and Xcode
# For more information see: https://docs.github.com/actions/guides/building-and-testing-swift

name: IOS CI with cocoapods

on:
push:
branches: [ master ]
paths:
- 'ios/OpenBot/**'
- '.github/workflows/cocoapod.yml'
pull_request:
branches: [ master ]
paths:
- 'ios/OpenBot/**'
- '.github/workflows/cocoapod.yml'

jobs:
build:
runs-on: macos-15

defaults:
run:
working-directory: ios/OpenBot

steps:
- name: Checkout Repository
uses: actions/checkout@v4

- name: Install CocoaPods
run: sudo gem install cocoapods

- name: Remove Podfile.lock (regenerate)
run: rm -f Podfile.lock

- name: Pod install
run: pod install
Copy link

Copilot AI Apr 7, 2026

Choose a reason for hiding this comment

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

The workflow header says it “builds and tests the iOS app”, but the job currently only runs pod install and never invokes Xcode to build or run tests. This means CI can still be green even if the Xcode project/workspace is broken. Consider adding an explicit Xcode build/test step (e.g., xcodebuild for the workspace + scheme, optionally against a simulator destination) so the workflow actually validates build configuration as described in the PR.

Copilot uses AI. Check for mistakes.
Comment on lines +31 to +37
run: sudo gem install cocoapods

- name: Remove Podfile.lock (regenerate)
run: rm -f Podfile.lock

- name: Pod install
run: pod install
Copy link

Copilot AI Apr 7, 2026

Choose a reason for hiding this comment

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

sudo gem install cocoapods installs the latest CocoaPods at runtime, which can make the workflow flaky over time (behavior changes between CocoaPods releases) and slows every run. Consider pinning the CocoaPods version (or using Bundler with a Gemfile/Gemfile.lock and ruby/setup-ruby with bundler-cache) to make CI reproducible and faster.

Suggested change
run: sudo gem install cocoapods
- name: Remove Podfile.lock (regenerate)
run: rm -f Podfile.lock
- name: Pod install
run: pod install
run: sudo gem install cocoapods -v 1.15.2
- name: Remove Podfile.lock (regenerate)
run: rm -f Podfile.lock
- name: Pod install
run: pod _1.15.2_ install

Copilot uses AI. Check for mistakes.
Comment on lines +33 to +37
- name: Remove Podfile.lock (regenerate)
run: rm -f Podfile.lock

- name: Pod install
run: pod install
Copy link

Copilot AI Apr 7, 2026

Choose a reason for hiding this comment

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

Removing Podfile.lock forces dependency re-resolution on every CI run, which makes builds non-deterministic and can hide issues that only occur with the locked dependency set. If the goal is deterministic CI, commit Podfile.lock and use a deployment-style install; if the goal is “compatibility with latest pods”, consider making that a separate, explicitly-named job so it doesn’t replace the baseline check.

Suggested change
- name: Remove Podfile.lock (regenerate)
run: rm -f Podfile.lock
- name: Pod install
run: pod install
- name: Pod install (deployment)
run: pod install --deployment

Copilot uses AI. Check for mistakes.
@thias15
Copy link
Copy Markdown
Collaborator

thias15 commented Apr 16, 2026

Fully tested and ready to merge?

@harishthakur52
Copy link
Copy Markdown
Contributor Author

Yes , tested and ready

@thias15
Copy link
Copy Markdown
Collaborator

thias15 commented May 8, 2026

Overall: I'd second the Copilot review's three points — they're real issues even though the PR is approved:

  1. The workflow doesn't actually build the app. The file header says "builds and tests the iOS app" but no xcodebuild step exists, so a broken Xcode project/scheme/signing config will still pass CI. Consider adding xcodebuild -workspace OpenBot.xcworkspace -scheme OpenBot -destination 'generic/platform=iOS Simulator' build (or similar) — otherwise this only validates that pods install, which is much narrower than the name implies.
  2. Pinning CocoaPods is worth doing. sudo gem install cocoapods (no version) means a new CocoaPods release can spontaneously break CI without any code change.
  3. Deleting Podfile.lock makes CI non-deterministic. If the goal is to ensure the lock matches reality, pod install --deployment (which fails when the lock is stale) is more useful than blowing it away. The current approach hides drift instead of catching it.

Happy to merge as a starting point if you'd rather iterate later, but (1) in particular reduces the value of this CI a lot.

@harishthakur52
Copy link
Copy Markdown
Contributor Author

For actually building the app on a simulator, we need to store our Apple team certificates and provisioning profile secrets and use them during the build process.

But as a starting point, I think we can merge this.

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.

5 participants