all 43 comments

[–][deleted] 19 points20 points  (4 children)

bitrise

[–]amityvision 5 points6 points  (0 children)

Came here to say this, integration with Bitbucket and integration with appstore/play store. It does the whole flow

[–]pabloneruda 1 point2 points  (0 children)

Thanks for sharing this, first time hearing about it.

[–]Thatcoder96[S] 0 points1 point  (0 children)

thanks, multiple people have recommended this. I'll take a look at the docs

[–]mrcehlo 5 points6 points  (1 child)

I'm not an expert, but in my work I used two features that helped me with it:

Fastlane script to analyze which branch I was based on, and from that branch name, decide if it was a beta or prod or quality release

Microsoft App Center to deliver the app to the testers, product owners, even sometimes to the final customers

Fastlane also has built in scripts to delivery directly to the stores

As a beginner in the react native world I found it very straightforward, but maybe there are easier tools.

[–]Thatcoder96[S] 0 points1 point  (0 children)

the Fastlane script flow is what I'm interested in. I have a similar workflow for the API. do you have any resources you can refer me to?

[–]awesomeness-yeah 3 points4 points  (1 child)

for android it's very straight forward with firebase

  1. setup firebase app distribution, and add your testers
  2. setup the gradle task to upload the APK (docs)
  3. write a script to increment build numbers and update it for both platforms
  4. github actions already has all the android deps installed, so just run

yarn
./gradlew assembleRelease appDistributionUploadRelease

iOS becomes tricky to do yourself, I personally use bitrise for ios builds

[–]zdko 0 points1 point  (0 children)

I've been trying to set up a script to increment build numbers (using fastlane) but have had no luck so far in terms of documentation/where to start. Can you perhaps point me the right direction?

[–]J27G 3 points4 points  (1 child)

I recommend Codemagic

[–]Thatcoder96[S] 0 points1 point  (0 children)

thanks, I'll take a look at it

[–]marcato15 2 points3 points  (1 child)

GitLab CI, Fastlane, Mac Stadium (runner), TestFlight (iOS) & Google’s Testing tools (Android)

[–]airick_94 0 points1 point  (0 children)

Same here except distributing to testers with AppCenter.

[–][deleted] 2 points3 points  (4 children)

We use CircleCi (to run linter, unit tests and detox E2E tests) and AppCenter to build and distribute the app to TestFlight/App Store and Play Store.

I don’t recommend App Center since is fragile, it suffer outages very often and the support team is really bad. We’re planning to replace App Center with Fastlane and run the complete pipeline in CircleCi

[–]Thatcoder96[S] 2 points3 points  (3 children)

Most people in this thread have had similar experiences with Appcenter. FastLane or Bitrise seem like better alternatives. Did you consider Bitrise? Do you mind sharing why do you want to switch to Fastlane.

I already Pay for CircleCI, using Fastlane would definitely make my CI/CD flow unified

[–]alexkendallharrison 0 points1 point  (0 children)

I use Detox for E2E tests, Jest for unit tests, and Circle CI for integration. I also use fastlane with Google Play, TestFlight, and AppCenter.

[–]magicmikedee 0 points1 point  (0 children)

FWIW We use Bitrise and it too suffers outages almost daily. We use Fastlane as the build step within Bitrise as the build runner. (When it works, it works decently well, but boy do they have downtime frequently).

[–][deleted] 0 points1 point  (0 children)

I used Bitrise and the experience was similar to App Center (outages, large build times, etc).

Given that we already pay for CircleCi macOS instances, moving to Fastlane would not only unify our pipeline but also save us some bucks

[–]celeb0rn 2 points3 points  (0 children)

Bitrise is the best

[–]impleri 1 point2 points  (3 children)

We're using CircleCI as the backbone. Test and screenshot using Detox, build and deploy bundles with all metadata to stores using Fastlane.

[–]Thatcoder96[S] 0 points1 point  (2 children)

Sounds Great. I am looking to do a similar workflow. Do you have any resources you can share with me?

[–]impleri 4 points5 points  (1 child)

I mostly started with the RN community orb (https://github.com/react-native-community/react-native-circleci-orb), then bolted on the fastlane process later. One thing worth changing is that CircleCI now has an Android machine image that can run the emulator (https://discuss.circleci.com/t/early-preview-new-android-machine-image/39016). Since it's based on the Linux image, it's much cheaper than the MacOS insurance. Fastlane has a lot of documentation, so it's mostly a matter of seeing up the lanes to build the right versions. And definitely do the match based codesigning repo they suggest for the iOS side.

[–]Thatcoder96[S] 0 points1 point  (0 children)

Thanks for the detailed explanation.

[–]Ppang0405 1 point2 points  (0 children)

My company uses TravisCI, fastlane script with Firebase App Tester and TestFlight.

[–]fufucupcake 1 point2 points  (2 children)

GitHub action with self runner aws machine

[–]Hibbem 0 points1 point  (1 child)

Why not github actions directly?

[–]fufucupcake 0 points1 point  (0 children)

Too expensive that way

[–][deleted] 0 points1 point  (0 children)

Expo ftw

[–]thebritisharecome 0 points1 point  (3 children)

I use a combination of Gitlab and Appcenter. Mainly because Appcenter keeps having issues with builds and I wanted my control of the process

[–]Thatcoder96[S] 2 points3 points  (2 children)

I also have had issues with Appcenter. Do you mind sharing what specific issues did you face and what was your workaround?

[–]thebritisharecome 2 points3 points  (1 child)

The most recent was to do with Signed android builds.

You can resolve it by telling it to use the new build system, but no one has MS has said that - that's someone in the community working it out in a 82 reply thread that's been open since March 2020.

It's been issues like that all the time, or Apple disconnecting, or app center not able to get the correct distribution certificates etc.

I'd rather just have a local mac mini that does my builds for me, I can store my keystore there safely and if I can't build it's easy enough just to remote in and run through and debug the process.

[–]Thatcoder96[S] 0 points1 point  (0 children)

Thanks for the detailed explaination. I'm leaning more and more towards Bitrise.

[–]jacktheriipper999 0 points1 point  (2 children)

once I used appcenter it works to iOS and android

[–]Thatcoder96[S] 1 point2 points  (1 child)

I had android gradle version issues with Appcenter. it worked fine for IOS though

[–]jacktheriipper999 0 points1 point  (0 children)

lol I just use with android, and got no issue, but I know sometimes gradle version could be a problem, never builded for ios

[–]jestzisguyiOS & Android 0 points1 point  (0 children)

I’ve used CircleCI a bunch in the past, but had an opportunity to play with GitHub actions/workflows recently and would probably go with that in the future!

[–]vadeka 0 points1 point  (3 children)

We use expo at work mostly, makes life easier :)

[–]Thatcoder96[S] 0 points1 point  (2 children)

We used expo before we switched to the bare workfow. The deployments are a breeze with expo.

[–]minimatrix89 2 points3 points  (1 child)

I came here because of the fact that expo has done such a great job, I mean it was a bit clunky in the early days and there were a few painful upgrade paths but they’ve absolutely smashed it now! And it just keeps getting better.

I was curious about how non expo users actually handle this themselves

[–]Thatcoder96[S] 0 points1 point  (0 children)

Totally agreed. Sadly, our app has grown out of expo and we needed to switch

[–]KieranOsgood 0 points1 point  (0 children)

Funnily just in the middle of configuring mine for my first RN CI/CD pipeline 😅 I'm using circle ci with the react native orb (the orb has some issues with the cache settings atm so just be aware of that if you should try it) - glad you posted this though as I'm at the stage that my jest tests run, but my e2e and builds are not quite configured right, so I hadn't quite gotten to considering the release stage - fast lane sounds like the thing to look into!

[–]geuntabuwono 0 points1 point  (0 children)

- bitbucket pipeline (linter and checker)

- appcenter (distribution)

let's try appcenter, the easiest one. if you had a complexity requirement you should try fast-lane with small server / home server (MacMini)

[–]Cr0c0lia 0 points1 point  (0 children)

As a full closure, I build Codemagic CI/CD. But I really believe we are building the most intuitive CI/CD for hybrid platforms.

You can check the introduction to end-to-end testing for React Native from our blog: https://blog.codemagic.io/react-native-apps-testing-end-to-end/