levibostian / AndroidBlanky

Create a new Android app fast. Comes pre-installed with libraries you already use.
7 stars 0 forks source link

Make CI experiernce with Android flawless, stable, and not complicated. #77

Closed levibostian closed 2 years ago

levibostian commented 3 years ago

Right now when using this project on a CI server, there are some flaws:

  1. Running tests like unit and UI tests are done with complicated scripts and setup.
  2. Setup can be a pain. Forgetting what to do and getting it all done.
  3. The CI flow is somewhat flaky. The CI workflow is a lot of scripts that you just cross your fingers work anytime you need to do any edits on it.

I would like to instead have a CI workflow that...

  1. Is stable. It is tested and will work. I don't like when I make an edit to my workflow and then I have to cross my fingers it works. I want to just install a CI workflow into my project and trust it works.
  2. It is not a lot of copy/paste. I clone this repo a lot and when I make an update to my CI flow, I want to be able to update it on all of my projects quick and easy!
  3. Assert that my setup is done and working. If I do not have something setup correctly, fail fast.

All of these issues above can be done with semantic-release, I think. Semantic-release is super good at...

  1. Asserting that setup is done correctly or it fails fast.
  2. It is modular. Add plugins that you need only when you need them and configure the plugins to work for you.
  3. All plugins are tested on their own.

I am thinking of creating some semantic-release plugins and then enabling it for this project. That will work for deployment pain. As far as pains with running tests and stuff, I might just make some fastlane plugins? Not sure.

Either way, in the end I imagine...

  1. Having plugins, programs, scripts, etc all created to do these tasks for me. All of them are located in their own source code repos that are simply referenced and executed in this project, not copy/pasted into here. All tools are version controlled with strict sementic versioning.
  2. All tools will check my setup before running so I can fail fast when the CI runs.
  3. All tools are tested well before they make any releases. I can then depend on them!

I need to write down a list of all the things I do on my CI server. Then I can work on how to accomplish each of these.