Automate Relase Process
Currently, the release process is a manual task. Ideally, release and testing would be automated so that the effort could be directed to improving the app. This will be especially important when we have an iOS version, since that doubles the workload.
I think the following steps need to be done:
- [x] Set up a Paperless test server with some documents for use while testing the app (Maybe something that resets after use so people don't mess around with it)
- [x] Make Github Actions compile APKs
- [x] Add a new action
- [ ] Securely store signing key
- [x] Store the artifacts
- [ ] Automatically generate changelog
- [ ] Add APKs to a new Github Release
- [ ] Upload APKs to Google Play
- [ ] Integration Testing (basically a robot using the app in an emulator)
- [ ] Automate taking screenshots of the app while testing (for Github/F-Droid)
Anyone looking to help with this can freely use our demo server:
https://paperless-demo.quinncasey.com/ Username: paperless Password: paperless
The demo resets itself daily.
Regarding automatic signed releases, I found this blog post that's pretty concise. We just need to change a few things in build.gradle and you'll need to add a blob to the project's secrets:
https://noxasch.tech/blog/automate-your-flutter-release-with-github-action-while-keeping-your-secret-safe/#step-1-configure-your-buildgradle
In the Flutter Build workflow, there can be a conditional step that checks for a new tag before doing the changelog and github / Google Play release.
Integration Testing sounds like another beast entirely but I'm interested :laughing: