Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Add automatic dependency updating workflow to github actions #2168

Closed
wants to merge 13 commits into from
61 changes: 61 additions & 0 deletions .github/workflows/update-dependencies.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,61 @@
name: update-dependencies

on:
repository_dispatch:
types: [update-dependency]
workflow_dispatch:
inputs:
target_submodule:
description: 'Submodule to update'
required: true
type: string
target_version:
description: 'Version of the submodule to update to'
required: true
type: string

jobs:
update-dependencies:
runs-on: macos-latest
env:
SUBMODULE: ${{ github.event_name == 'repository_dispatch' && github.event.client_payload.target_submodule || inputs.target_submodule }}
VERSION: ${{ github.event_name == 'repository_dispatch' && github.event.client_payload.target_version || inputs.target_version }}
BUNDLE_GITHUB__COM: ${{ secrets.BUNDLE_ACCESS_TOKEN }}
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
steps:
- uses: actions/checkout@v4
with:
ref: next

- run: |
git config --global user.name 'Bumpsnag bot'
git config --global user.email ''

- run: git fetch --prune --unshallow

- name: Install ruby
uses: ruby/setup-ruby@v1
with:
ruby-version: 2.7

- name: Install dependencies
run: bundle install

- name: Update references locally
run: TARGET_SUBMODULE=$SUBMODULE TARGET_VERSION=$VERSION ./scripts/update-dependencies.rb

- name: Commit and push changes
run: bundle exec bumpsnag commit-update $SUBMODULE $VERSION

- name: List current branch name
id: current-branch
run: echo "branch=$(git rev-parse --abbrev-ref HEAD)" >> $GITHUB_OUTPUT

- name: Create pull request
if: ${{ steps.current-branch.outputs.branch != 'next'}}
run: >
gh pr create -B next
-H bumpsnag-$SUBMODULE-$VERSION
--title "Update $SUBMODULE to version $VERSION"
--body 'Created by bumpsnag'
--reviewer gingerbenw
Copy link
Member

Choose a reason for hiding this comment

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

is this better to be an environment variable?

5 changes: 5 additions & 0 deletions Gemfile
Original file line number Diff line number Diff line change
@@ -1,3 +1,8 @@
source 'https://rubygems.org'

gem 'cocoapods', '~> 1.14.3'

# Only install bumpsnag if we're using Github actions
unless ENV['GITHUB_ACTIONS'].nil?
gem 'bumpsnag', git: 'https://github.com/bugsnag/platforms-bumpsnag', branch: 'main'
end
6 changes: 3 additions & 3 deletions packages/react-native/CONTRIBUTING.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,11 +2,11 @@

## Upgrading native notifier dependencies

Both [`bugsnag-android`](https://github.com/bugnsag/bugsnag-android) and [`bugsnag-cocoa`](https://github.com/bugnsag/bugsnag-cocoa) are vendored into this repository as part of the `@bugsnag/react-native` package. When updates to those notifiers are released, a PR should be make to this repository to vendor the new version.
Both [`bugsnag-android`](https://github.com/bugsnag/bugsnag-android) and [`bugsnag-cocoa`](https://github.com/bugsnag/bugsnag-cocoa) are vendored into this repository as part of the `@bugsnag/react-native` package. When updates to those notifiers are released, a PR should be make to this repository to vendor the new version.

### Android

[bugsnag-android](https://github.com/bugnsag/bugsnag-android) AAR artefacts are located in `packages/react-native/android/com/bugsnag`
[bugsnag-android](https://github.com/bugsnag/bugsnag-android) AAR artefacts are located in `packages/react-native/android/com/bugsnag`

To update the version of the bundled artefacts:

Expand All @@ -16,7 +16,7 @@ To update the version of the bundled artefacts:

#### iOS

[bugsnag-cocoa](https://github.com/bugnsag/bugsnag-cocoa) source is vendored in `packages/react-native/ios/vendor/bugsnag-cocoa`.
[bugsnag-cocoa](https://github.com/bugsnag/bugsnag-cocoa) source is vendored in `packages/react-native/ios/vendor/bugsnag-cocoa`.

To update the version of the bundled notifier source:

Expand Down
20 changes: 20 additions & 0 deletions scripts/update-dependencies.rb
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
#! /usr/bin/env ruby

target_submodule = ENV['TARGET_SUBMODULE']
target_version = ENV['TARGET_VERSION']

if target_submodule.nil? || target_version.nil?
raise 'Submodule or version targets not provided, exiting'
exit(1)
end

pp "Attempting upgrade of #{target_submodule} to #{target_version}"

if target_submodule.eql?('bugsnag-android')
version = /(\d+\.\d+\.\d+)/.match(target_version)[1]
`packages/react-native/update-android.sh --version #{version}`
elsif target_submodule.eql?('bugsnag-cocoa')
`packages/react-native/update-ios.sh --version #{target_version}`
else
raise "Submodule #{target_submodule} not supported, exiting"
end
Loading