diff --git a/.buildkite/pipeline.yml b/.buildkite/pipeline.yml index 1fced5c1..7979d86e 100644 --- a/.buildkite/pipeline.yml +++ b/.buildkite/pipeline.yml @@ -70,6 +70,10 @@ steps: - "--no-tunnel" - "--aws-public-ip" - "--fail-fast" + test-collector#v1.10.2: + files: "reports/TEST-*.xml" + format: "junit" + branch: "^main|next$$" concurrency: 25 concurrency_group: 'bitbar' concurrency_method: eager @@ -110,6 +114,10 @@ steps: - "--device=ANDROID_12" - "--appium-version=1.22.0" - "--fail-fast" + test-collector#v1.10.2: + files: "reports/TEST-*.xml" + format: "junit" + branch: "^main|next$$" concurrency: 5 concurrency_group: 'browserstack-app' concurrency_method: eager diff --git a/.github/workflows/update-dependencies.yml b/.github/workflows/update-dependencies.yml index 9c2a8fc8..a334fb91 100644 --- a/.github/workflows/update-dependencies.yml +++ b/.github/workflows/update-dependencies.yml @@ -22,6 +22,7 @@ jobs: 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 }} + REVIEWER: kstenerud,robert-smartbear steps: - uses: actions/checkout@v4 with: @@ -55,7 +56,7 @@ jobs: if: ${{ steps.current-branch.outputs.branch != 'next'}} run: > gh pr create -B next - -H bumpsnag-$TARGET_SUBMODULE-$TARGET_VERSION - --title "Update $TARGET_SUBMODULE to version $TARGET_VERSION" + -H bumpsnag-$SUBMODULE-$VERSION + --title "Update $SUBMODULE to version $VERSION" --body 'Created by bumpsnag' - --reviewer kstenerud,robert-smartbear + --reviewer $REVIEWER diff --git a/.gitignore b/.gitignore index 0867a344..174aa195 100644 --- a/.gitignore +++ b/.gitignore @@ -2,3 +2,5 @@ Package.resolved Podfile.lock maze_output/ +Gemfile.lock +.idea/ \ No newline at end of file diff --git a/CHANGELOG.md b/CHANGELOG.md index 48c16982..0fe3d83a 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,10 @@ # Changelog +## 4.1.0 (2024-10-21) + +- Upgrade Android compileSdkVersion from 29 to 31. + [263](https://github.com/bugsnag/bugsnag-flutter/pull/263) + ## 4.0.0 (2024-07-29) ### Breaking Changes diff --git a/Gemfile.lock b/Gemfile.lock deleted file mode 100644 index 457998bd..00000000 --- a/Gemfile.lock +++ /dev/null @@ -1,220 +0,0 @@ -GEM - remote: https://rubygems.org/ - specs: - CFPropertyList (3.0.7) - base64 - nkf - rexml - activesupport (7.1.3.2) - base64 - bigdecimal - concurrent-ruby (~> 1.0, >= 1.0.2) - connection_pool (>= 2.2.5) - drb - i18n (>= 1.6, < 2) - minitest (>= 5.1) - mutex_m - tzinfo (~> 2.0) - addressable (2.8.6) - public_suffix (>= 2.0.2, < 6.0) - algoliasearch (1.27.5) - httpclient (~> 2.8, >= 2.8.3) - json (>= 1.5.1) - appium_lib (12.0.1) - appium_lib_core (~> 5.0) - nokogiri (~> 1.8, >= 1.8.1) - tomlrb (>= 1.1, < 3.0) - appium_lib_core (5.4.0) - faye-websocket (~> 0.11.0) - selenium-webdriver (~> 4.2, < 4.6) - atomos (0.1.3) - base64 (0.2.0) - bigdecimal (3.1.7) - bugsnag (6.27.1) - concurrent-ruby (~> 1.0) - bugsnag-maze-runner (9.11.1) - appium_lib (~> 12.0.0) - appium_lib_core (~> 5.4.0) - bugsnag (~> 6.24) - cucumber (~> 7.1) - cucumber-expressions (~> 6.0.0) - curb (~> 0.9.6) - dogstatsd-ruby (~> 5.5.0) - json_schemer (~> 0.2.24) - optimist (~> 3.0.1) - os (~> 1.0.0) - rack (~> 2.2) - rake (~> 12.3.3) - rubyzip (~> 2.3.2) - selenium-webdriver (~> 4.0) - test-unit (~> 3.5.2) - webrick (~> 1.7.0) - builder (3.3.0) - childprocess (4.1.0) - claide (1.1.0) - cocoapods (1.15.2) - addressable (~> 2.8) - claide (>= 1.0.2, < 2.0) - cocoapods-core (= 1.15.2) - cocoapods-deintegrate (>= 1.0.3, < 2.0) - cocoapods-downloader (>= 2.1, < 3.0) - cocoapods-plugins (>= 1.0.0, < 2.0) - cocoapods-search (>= 1.0.0, < 2.0) - cocoapods-trunk (>= 1.6.0, < 2.0) - cocoapods-try (>= 1.1.0, < 2.0) - colored2 (~> 3.1) - escape (~> 0.0.4) - fourflusher (>= 2.3.0, < 3.0) - gh_inspector (~> 1.0) - molinillo (~> 0.8.0) - nap (~> 1.0) - ruby-macho (>= 2.3.0, < 3.0) - xcodeproj (>= 1.23.0, < 2.0) - cocoapods-core (1.15.2) - activesupport (>= 5.0, < 8) - addressable (~> 2.8) - algoliasearch (~> 1.0) - concurrent-ruby (~> 1.1) - fuzzy_match (~> 2.0.4) - nap (~> 1.0) - netrc (~> 0.11) - public_suffix (~> 4.0) - typhoeus (~> 1.0) - cocoapods-deintegrate (1.0.5) - cocoapods-downloader (2.1) - cocoapods-plugins (1.0.0) - nap - cocoapods-search (1.0.1) - cocoapods-trunk (1.6.0) - nap (>= 0.8, < 2.0) - netrc (~> 0.11) - cocoapods-try (1.2.0) - colored2 (3.1.2) - concurrent-ruby (1.2.2) - connection_pool (2.4.1) - cucumber (7.1.0) - builder (~> 3.2, >= 3.2.4) - cucumber-core (~> 10.1, >= 10.1.0) - cucumber-create-meta (~> 6.0, >= 6.0.1) - cucumber-cucumber-expressions (~> 14.0, >= 14.0.0) - cucumber-gherkin (~> 22.0, >= 22.0.0) - cucumber-html-formatter (~> 17.0, >= 17.0.0) - cucumber-messages (~> 17.1, >= 17.1.1) - cucumber-wire (~> 6.2, >= 6.2.0) - diff-lcs (~> 1.4, >= 1.4.4) - mime-types (~> 3.3, >= 3.3.1) - multi_test (~> 0.1, >= 0.1.2) - sys-uname (~> 1.2, >= 1.2.2) - cucumber-core (10.1.1) - cucumber-gherkin (~> 22.0, >= 22.0.0) - cucumber-messages (~> 17.1, >= 17.1.1) - cucumber-tag-expressions (~> 4.1, >= 4.1.0) - cucumber-create-meta (6.0.4) - cucumber-messages (~> 17.1, >= 17.1.1) - sys-uname (~> 1.2, >= 1.2.2) - cucumber-cucumber-expressions (14.0.0) - cucumber-expressions (6.0.1) - cucumber-gherkin (22.0.0) - cucumber-messages (~> 17.1, >= 17.1.1) - cucumber-html-formatter (17.0.0) - cucumber-messages (~> 17.1, >= 17.1.0) - cucumber-messages (17.1.1) - cucumber-tag-expressions (4.1.0) - cucumber-wire (6.2.1) - cucumber-core (~> 10.1, >= 10.1.0) - cucumber-cucumber-expressions (~> 14.0, >= 14.0.0) - curb (0.9.11) - diff-lcs (1.5.1) - dogstatsd-ruby (5.5.0) - drb (2.2.1) - ecma-re-validator (0.4.0) - regexp_parser (~> 2.2) - escape (0.0.4) - ethon (0.16.0) - ffi (>= 1.15.0) - eventmachine (1.2.7) - faye-websocket (0.11.3) - eventmachine (>= 0.12.0) - websocket-driver (>= 0.5.1) - ffi (1.15.5) - fourflusher (2.3.1) - fuzzy_match (2.0.4) - gh_inspector (1.1.3) - hana (1.3.7) - httpclient (2.8.3) - i18n (1.14.4) - concurrent-ruby (~> 1.0) - json (2.7.2) - json_schemer (0.2.25) - ecma-re-validator (~> 0.3) - hana (~> 1.3) - regexp_parser (~> 2.0) - simpleidn (~> 0.2) - uri_template (~> 0.7) - mime-types (3.5.2) - mime-types-data (~> 3.2015) - mime-types-data (3.2024.0702) - minitest (5.22.3) - molinillo (0.8.0) - multi_test (0.1.2) - mutex_m (0.2.0) - nanaimo (0.3.0) - nap (1.1.0) - netrc (0.11.0) - nkf (0.2.0) - nokogiri (1.16.6-arm64-darwin) - racc (~> 1.4) - nokogiri (1.16.6-x86_64-darwin) - racc (~> 1.4) - optimist (3.0.1) - os (1.0.1) - power_assert (2.0.3) - public_suffix (4.0.7) - racc (1.8.0) - rack (2.2.9) - rake (12.3.3) - regexp_parser (2.9.2) - rexml (3.2.6) - ruby-macho (2.5.1) - rubyzip (2.3.2) - selenium-webdriver (4.5.0) - childprocess (>= 0.5, < 5.0) - rexml (~> 3.2, >= 3.2.5) - rubyzip (>= 1.2.2, < 3.0) - websocket (~> 1.0) - simpleidn (0.2.3) - sys-uname (1.3.0) - ffi (~> 1.1) - test-unit (3.5.9) - power_assert - tomlrb (2.0.3) - typhoeus (1.4.1) - ethon (>= 0.9.0) - tzinfo (2.0.6) - concurrent-ruby (~> 1.0) - uri_template (0.7.0) - webrick (1.7.0) - websocket (1.2.11) - websocket-driver (0.7.6) - websocket-extensions (>= 0.1.0) - websocket-extensions (0.1.5) - xcodeproj (1.24.0) - CFPropertyList (>= 2.3.3, < 4.0) - atomos (~> 0.1.3) - claide (>= 1.0.2, < 2.0) - colored2 (~> 3.1) - nanaimo (~> 0.3.0) - rexml (~> 3.2.4) - -PLATFORMS - arm64-darwin-22 - x86_64-darwin-20 - x86_64-darwin-21 - x86_64-darwin-23 - -DEPENDENCIES - bugsnag-maze-runner (~> 9.0) - cocoapods - -BUNDLED WITH - 2.4.18 diff --git a/Makefile b/Makefile index 1339432b..6cfbd6f1 100644 --- a/Makefile +++ b/Makefile @@ -112,3 +112,39 @@ else ifeq ($(SUBMODULE), bugsnag-cocoa) else @$(error SUBMODULE must be one of bugsnag-android or bugsnag-cocoa) endif + +prerelease: bump stage ## Generates a PR for the $VERSION release +ifeq ($(VERSION),) + @$(error VERSION is not defined. Run with `make VERSION=number prerelease`) +endif + rm -rf staging + @git checkout -b release-v$(VERSION) + @git add packages/bugsnag_flutter/pubspec.yaml packages/bugsnag_breadcrumbs_dart_io/pubspec.yaml packages/bugsnag_breadcrumbs_http/pubspec.yaml packages/bugsnag_flutter/lib/src/client.dart CHANGELOG.md VERSION + @git diff --exit-code || (echo "you have unstaged changes - Makefile may need updating to `git add` some more files"; exit 1) + @git commit -m "Release v$(VERSION)" + @git push origin release-v$(VERSION) + @open "https://github.com/bugsnag/bugsnag-flutter/compare/main...release-v$(VERSION)?expand=1&title=Release%20v$(VERSION)&body="$$(awk 'start && /^## /{exit;};/^## /{start=1;next};start' CHANGELOG.md | hexdump -v -e '/1 "%02x"' | sed 's/\(..\)/%\1/g') + +release: stage ## Releases the current main branch as $VERSION + @git fetch origin +ifneq ($(shell git rev-parse --abbrev-ref HEAD),main) # Check the current branch name + @git checkout main + @git rebase origin/main +endif +ifneq ($(shell git diff origin/main..main),) + $(error you have unpushed commits on the main branch) +endif + @git tag v$(PRESET_VERSION) + @git push origin v$(PRESET_VERSION) + @git checkout next + @git rebase origin/next + @git merge main + @git push origin next + # Prep GitHub release + # We could technically do a `hub release` here but a verification step + # before it goes live always seems like a good thing + @open 'https://github.com/bugsnag/bugsnag-flutter/releases/new?title=v$(PRESET_VERSION)&tag=v$(PRESET_VERSION)&body='$$(awk 'start && /^## /{exit;};/^## /{start=1;next};start' CHANGELOG.md | hexdump -v -e '/1 "%02x"' | sed 's/\(..\)/%\1/g') + cd staging/bugsnag_flutter && $(FLUTTER_BIN) pub publish + cd staging/bugsnag_breadcrumbs_dart_io && $(FLUTTER_BIN) pub publish + cd staging/bugsnag_breadcrumbs_http && $(FLUTTER_BIN) pub publish + rm -rf staging diff --git a/VERSION b/VERSION new file mode 100644 index 00000000..fcdb2e10 --- /dev/null +++ b/VERSION @@ -0,0 +1 @@ +4.0.0 diff --git a/docker-compose.yml b/docker-compose.yml index bf1d84d6..2c5f70a3 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -20,15 +20,18 @@ services: BUILDKITE_REPO: BUILDKITE_RETRY_COUNT: BUILDKITE_STEP_KEY: + BUILDKITE_ANALYTICS_TOKEN: MAZE_BUGSNAG_API_KEY: BROWSER_STACK_USERNAME: BROWSER_STACK_ACCESS_KEY: + MAZE_NO_FAIL_FAST: ports: - "9000-9499:9339" volumes: - ./features/:/app/features/ - ./maze_output:/app/maze_output - /var/run/docker.sock:/var/run/docker.sock + - ./reports/:/app/reports/ networks: default: diff --git a/features/fixtures/app/android/app/build.gradle b/features/fixtures/app/android/app/build.gradle index 228cee60..39004d52 100644 --- a/features/fixtures/app/android/app/build.gradle +++ b/features/fixtures/app/android/app/build.gradle @@ -45,7 +45,7 @@ android { defaultConfig { applicationId "com.bugsnag.flutter.test.app" - minSdkVersion 16 + minSdkVersion flutter.minSdkVersion targetSdkVersion flutter.hasProperty('targetSdkVersion') ? flutter.targetSdkVersion : 30 versionCode flutterVersionCode.toInteger() versionName flutterVersionName diff --git a/features/support/maze.buildkite.cfg b/features/support/maze.buildkite.cfg new file mode 100644 index 00000000..c5bc1827 --- /dev/null +++ b/features/support/maze.buildkite.cfg @@ -0,0 +1,3 @@ +--format=junit +--out=reports +--format=pretty diff --git a/packages/bugsnag_breadcrumbs_dart_io/pubspec.yaml b/packages/bugsnag_breadcrumbs_dart_io/pubspec.yaml index cf7878ca..c35b0d32 100644 --- a/packages/bugsnag_breadcrumbs_dart_io/pubspec.yaml +++ b/packages/bugsnag_breadcrumbs_dart_io/pubspec.yaml @@ -1,6 +1,6 @@ name: bugsnag_breadcrumbs_dart_io description: Bugsnag network breadcrumbs for dart:io's HttpClient -version: 4.0.0 +version: 4.1.0 homepage: https://www.bugsnag.com/ documentation: https://docs.bugsnag.com/platforms/flutter/ repository: https://github.com/bugsnag/bugsnag-flutter diff --git a/packages/bugsnag_breadcrumbs_http/pubspec.yaml b/packages/bugsnag_breadcrumbs_http/pubspec.yaml index ed08db7d..33bc84b2 100644 --- a/packages/bugsnag_breadcrumbs_http/pubspec.yaml +++ b/packages/bugsnag_breadcrumbs_http/pubspec.yaml @@ -1,6 +1,6 @@ name: bugsnag_breadcrumbs_http description: Bugsnag network breadcrumbs for https://pub.dev/packages/http -version: 4.0.0 +version: 4.1.0 homepage: https://www.bugsnag.com/ documentation: https://docs.bugsnag.com/platforms/flutter/ repository: https://github.com/bugsnag/bugsnag-flutter diff --git a/packages/bugsnag_flutter/android/build.gradle b/packages/bugsnag_flutter/android/build.gradle index 3efdec7d..b4bf4fb7 100644 --- a/packages/bugsnag_flutter/android/build.gradle +++ b/packages/bugsnag_flutter/android/build.gradle @@ -23,7 +23,7 @@ rootProject.allprojects { apply plugin: 'com.android.library' android { - compileSdkVersion 29 + compileSdkVersion 31 if (android.hasProperty('namespace')) { namespace 'com.bugsnag.flutter' diff --git a/packages/bugsnag_flutter/lib/src/client.dart b/packages/bugsnag_flutter/lib/src/client.dart index 063f2d15..2aa9ef5c 100644 --- a/packages/bugsnag_flutter/lib/src/client.dart +++ b/packages/bugsnag_flutter/lib/src/client.dart @@ -19,7 +19,7 @@ import 'regexp_json.dart'; final _notifier = { 'name': 'Flutter Bugsnag Notifier', 'url': 'https://github.com/bugsnag/bugsnag-flutter', - 'version': '4.0.0' + 'version': '4.1.0' }; abstract class BugsnagClient { diff --git a/packages/bugsnag_flutter/pubspec.yaml b/packages/bugsnag_flutter/pubspec.yaml index 29cd9e84..23c3a04b 100644 --- a/packages/bugsnag_flutter/pubspec.yaml +++ b/packages/bugsnag_flutter/pubspec.yaml @@ -1,6 +1,6 @@ name: bugsnag_flutter description: Bugsnag crash monitoring and reporting tool for Flutter apps -version: 4.0.0 +version: 4.1.0 homepage: https://www.bugsnag.com/ documentation: https://docs.bugsnag.com/platforms/flutter/ repository: https://github.com/bugsnag/bugsnag-flutter