Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions .github/CODEOWNERS
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
* @GetStream/ios-developers
27 changes: 27 additions & 0 deletions .github/ISSUE_TEMPLATE/bug_report.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,27 @@
---
name: Bug report
about: Create a report to help us improve
title: ''
labels: ''
assignees: ''

---

## What did you do?


## What did you expect to happen?


## What happened instead?


## GetStream Environment
**GetStream Core version:**
**GetStream Core frameworks:** StreamCore
**iOS version:**
**Swift version:**
**Xcode version:**
**Device:**

## Additional context
27 changes: 27 additions & 0 deletions .github/ISSUE_TEMPLATE/feature_request.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,27 @@
---
name: Feature Request
about: Got any ideas about new features? Let us know!
title: ''
labels: ''
assignees: ''

---

## What are you trying to achieve?


## If possible, how can you achieve this currently?


## What would be the better way?


## GetStream Environment
**GetStream Core version:**
**GetStream Core frameworks:** StreamCore
**iOS version:**
**Swift version:**
**Xcode version:**
**Device:**

## Additional context
36 changes: 36 additions & 0 deletions .github/PULL_REQUEST_TEMPLATE.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,36 @@
### 🔗 Issue Links

_Provide all Linear and/or Github issues related to this PR, if applicable._

### 🎯 Goal

_Describe why we are making this change._

### 📝 Summary

_Provide bullet points with the most important changes in the codebase._

### 🛠 Implementation

_Provide a detailed description of the implementation and explain your decisions if you find them relevant._

### 🎨 Showcase

_Add relevant screenshots and/or videos/gifs to easily see what this PR changes, if applicable._

| Before | After |
| ------ | ----- |
| img | img |

### 🧪 Manual Testing Notes

_Explain how this change can be tested manually, if applicable._

### ☑️ Contributor Checklist

- [ ] I have signed the [Stream CLA](https://docs.google.com/forms/d/e/1FAIpQLScFKsKkAJI7mhCr7K9rEIOpqIDThrWxuvxnwUq2XkHyG154vQ/viewform) (required)
- [x] This change should be manually QAed
- [ ] Changelog is updated with client-facing changes
- [ ] Changelog is updated with new localization keys
- [ ] New code is covered by unit tests
- [ ] Documentation has been updated in the `docs-content` repo
11 changes: 11 additions & 0 deletions .github/actions/bootstrap/action.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
name: 'Bootstrap'
description: 'Run bootstrap.sh'
runs:
using: "composite"
steps:
- run: echo "IMAGE=${ImageOS}" >> $GITHUB_ENV
shell: bash
- uses: ./.github/actions/ruby-cache
- uses: ./.github/actions/xcode-cache
- run: ./Scripts/bootstrap.sh
shell: bash
9 changes: 9 additions & 0 deletions .github/actions/ruby-cache/action.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
name: 'Ruby Cache'
description: 'Cache Ruby dependencies'
runs:
using: "composite"
steps:
- uses: ruby/setup-ruby@v1
with:
ruby-version: 3.3.4
bundler-cache: true
26 changes: 26 additions & 0 deletions .github/actions/setup-ios-runtime/action.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,26 @@
name: 'Setup iOS Runtime'
description: 'Download and Install requested iOS Runtime'
runs:
using: "composite"
steps:
- name: Setup iOS Simulator Runtime
shell: bash
run: |
sudo rm -rfv ~/Library/Developer/CoreSimulator/* || true
bundle exec fastlane install_runtime ios:${{ inputs.version }}
sudo rm -rfv *.dmg || true
xcrun simctl list runtimes
- name: Create Custom iOS Simulator
shell: bash
run: |
ios_version_dash=$(echo "${{ inputs.version }}" | tr '.' '-') # ex: 16.4 -> 16-4
xcrun simctl create custom-test-device "${{ inputs.device }}" "com.apple.CoreSimulator.SimRuntime.iOS-$ios_version_dash"
xcrun simctl list devices ${{ inputs.version }}

inputs:
version:
description: "iOS Runtime Version"
required: true
device:
description: "iOS Simulator Model"
required: true
14 changes: 14 additions & 0 deletions .github/actions/xcode-cache/action.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
name: 'Xcode Cache'
description: 'Cache Xcode dependencies'
runs:
using: "composite"
steps:
- run: echo "IMAGE=${ImageOS}-${ImageVersion}" >> $GITHUB_ENV
shell: bash
- name: Cache SPM
uses: actions/cache@v4
id: spm-cache
with:
path: spm_cache
key: ${{ env.IMAGE }}-spm-${{ hashFiles('**/Package.resolved') }}
restore-keys: ${{ env.IMAGE }}-spm-
19 changes: 19 additions & 0 deletions .github/stale.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
# Number of days of inactivity before an issue becomes stale
daysUntilStale: 20
# Number of days of inactivity before a stale issue is closed
daysUntilClose: 7
# Issues with these labels will never be considered stale
exemptLabels:
- pinned
- !important
# Label to use when marking an issue as stale
staleLabel: stale
# Comment to post when marking an issue as stale. Set to `false` to disable
markComment: >
This issue has been automatically marked as stale because it has not had
recent activity. It will be closed if no further activity occurs. Thank you
for your contributions.
# Comment to post when closing a stale issue. Set to `false` to disable
closeComment: >
This issue has been automatically closed due to inactivity.
Please open a new issue if it's still valid.
92 changes: 92 additions & 0 deletions .github/workflows/cron-checks.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,92 @@
name: Cron Checks

on:
schedule:
# Runs "At 04:00 every night except weekends"
- cron: '0 4 * * 1-5'

workflow_dispatch:

concurrency:
group: ${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: true

env:
HOMEBREW_NO_INSTALL_CLEANUP: 1 # Disable cleanup for homebrew, we don't need it on CI
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}

jobs:
build-and-test:
name: Test LLC
strategy:
matrix:
include:
- ios: "18.5"
device: "iPhone 16 Pro"
setup_runtime: false
- ios: "17.5"
device: "iPhone 15 Pro"
setup_runtime: true
- ios: "16.4"
device: "iPhone 14 Pro"
setup_runtime: true
- ios: "15.5"
device: "iPhone 13 Pro"
setup_runtime: true
fail-fast: false
runs-on: macos-15
env:
XCODE_VERSION: "16.4"
steps:
- uses: actions/checkout@v4.1.1
- uses: ./.github/actions/bootstrap
env:
INSTALL_YEETD: true
INSTALL_IPSW: true
- uses: ./.github/actions/setup-ios-runtime
if: ${{ matrix.setup_runtime }}
timeout-minutes: 60
with:
version: ${{ matrix.ios }}
device: ${{ matrix.device }}
- name: Run LLC Tests (Debug)
run: bundle exec fastlane test device:"${{ matrix.device }} (${{ matrix.ios }})" cron:true
timeout-minutes: 60
- name: Parse xcresult
if: failure()
run: |
brew install chargepoint/xcparse/xcparse
xcparse logs fastlane/test_output/StreamCore.xcresult fastlane/test_output/logs/
- uses: actions/upload-artifact@v4
if: failure()
with:
name: Test Data LLC (iOS ${{ matrix.ios }})
path: |
fastlane/test_output/logs/*/Diagnostics/**/*.txt
fastlane/test_output/logs/*/Diagnostics/simctl_diagnostics/DiagnosticReports/*

automated-code-review:
name: Automated Code Review
runs-on: macos-15
env:
XCODE_VERSION: "16.0"
steps:
- uses: actions/checkout@v4.1.1
- uses: ./.github/actions/bootstrap
- run: bundle exec fastlane rubocop
- run: bundle exec fastlane run_swift_format strict:true

slack:
name: Slack Report
runs-on: ubuntu-latest
needs: [build-and-test, automated-code-review]
if: failure() && github.event_name == 'schedule'
steps:
- uses: 8398a7/action-slack@v3
with:
status: cancelled
text: "You shall not pass!"
job_name: "${{ github.workflow }}: ${{ github.job }}"
fields: repo,commit,author,workflow
env:
SLACK_WEBHOOK_URL: ${{ secrets.SLACK_WEBHOOK_NIGHTLY_CHECKS }}
31 changes: 31 additions & 0 deletions .github/workflows/release-merge.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,31 @@
name: "Merge release"

on:
issue_comment:
types: [created]

workflow_dispatch:

jobs:
merge-release-to-main:
name: Merge release to main
runs-on: macos-15
if: github.event_name == 'workflow_dispatch' || (github.event.issue.pull_request && github.event.issue.state == 'open' && github.event.comment.body == '/merge release')
steps:
- name: Connect Bot
uses: webfactory/ssh-agent@v0.7.0
with:
ssh-private-key: ${{ secrets.BOT_SSH_PRIVATE_KEY }}

- uses: actions/checkout@v4.1.1
with:
fetch-depth: 0

- uses: ./.github/actions/ruby-cache

- name: Merge
run: bundle exec fastlane merge_release author:"$USER_LOGIN" --verbose
env:
GITHUB_TOKEN: ${{ secrets.ADMIN_API_TOKEN }} # A token with the "admin:org" scope to get the list of the team members on GitHub
GITHUB_PR_NUM: ${{ github.event.issue.number }}
USER_LOGIN: ${{ github.event.comment.user.login != null && github.event.comment.user.login || github.event.sender.login }}
50 changes: 50 additions & 0 deletions .github/workflows/release-publish.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,50 @@
name: "Publish new release"

on:
workflow_dispatch:

jobs:
release:
name: Publish new release
runs-on: macos-15
steps:
- name: Connect Bot
uses: webfactory/ssh-agent@v0.7.0
with:
ssh-private-key: ${{ secrets.BOT_SSH_PRIVATE_KEY }}

- uses: actions/checkout@v4.1.1
with:
fetch-depth: 0

- uses: ./.github/actions/ruby-cache

- name: "Fastlane - Publish Release"
env:
GITHUB_TOKEN: ${{ secrets.CI_BOT_GITHUB_TOKEN }}
run: bundle exec fastlane publish_release --verbose

merge-main-to-develop:
name: Merge main to develop
runs-on: ubuntu-latest
needs: release
steps:
- uses: actions/checkout@v4.1.1
with:
token: ${{ secrets.ADMIN_API_TOKEN }}
fetch-depth: 0

- uses: ./.github/actions/ruby-cache

- run: bundle exec fastlane merge_main
env:
GITHUB_TOKEN: ${{ secrets.ADMIN_API_TOKEN }}

- uses: 8398a7/action-slack@v3
if: failure()
with:
status: ${{ job.status }}
text: "⚠️ <!subteam^S030AAHLDLN>, the merge of `main` to `develop` failed on CI. Consider using this command locally: `bundle exec fastlane merge_main`"
fields: repo,commit,author,workflow
env:
SLACK_WEBHOOK_URL: ${{ secrets.SLACK_WEBHOOK_URL }}
32 changes: 32 additions & 0 deletions .github/workflows/release-start.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,32 @@
name: "Start new release"

on:
workflow_dispatch:
inputs:
version:
description: 'Release version'
type: string
required: true

jobs:
test-release:
name: Start new release
runs-on: macos-15
steps:
- name: Connect Bot
uses: webfactory/ssh-agent@v0.7.0
with:
ssh-private-key: ${{ secrets.BOT_SSH_PRIVATE_KEY }}

- uses: actions/checkout@v4.1.1
with:
fetch-depth: 0 # to fetch git tags

- uses: ./.github/actions/ruby-cache

- uses: ./.github/actions/xcode-cache

- name: Create Release PR
run: bundle exec fastlane release version:"${{ github.event.inputs.version }}" --verbose
env:
GITHUB_TOKEN: ${{ secrets.CI_BOT_GITHUB_TOKEN }}
Loading
Loading