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

Production Build / App Store Deployment Pipeline #7

Open
7 tasks
solderq35 opened this issue Nov 6, 2023 · 1 comment
Open
7 tasks

Production Build / App Store Deployment Pipeline #7

solderq35 opened this issue Nov 6, 2023 · 1 comment
Labels
add-feature add feature / functionality (discuss?) priority-low Minor bug fix / feature request queued Waiting on something else tasklist list of more specific issues or tasks

Comments

@solderq35
Copy link
Contributor

Note: It will probably be a while before we get to this issue, but it can’t hurt to research early.

User story statement:

  • As a men’s golf team player / coach, I want to be able to easily download the golf drill app onto my Apple / Android mobile device. I want to be able to easily install the golf drill app by searching for it on the Apple / Android App store.

Background:

Why do we want it?

  • Currently, we use Expo Go for local development, in which we either:
    • Open the development version of the React Native mobile app on Android / iOS emulator, on the developer’s PC
    • Use an actual phone to scan a QR code that shows up on the terminal after compiling the React Native app locally on the developer’s PC. After being scanned, the dev build of the app is opened on the phone
  • Neither of the two above options is feasible for distributing the final version of the app to a whole team of golf players, which is why it is needed to actually deploy the golf drill app on the Android / Apple app stores.

Who is this for?

  • As referenced in the User Story statement, this issue is targeting golf team players / coach in the final production stage, at which time the app needs to be easy to install from the App store

Do we have data to support it?

  • The stakeholder (coach) has mentioned that as parts of his requirements, the app final version should be installable from the App store
  • It is much easier (especially at scale, with a whole team of players) to install an app through the App store than scanning a terminal for the Expo Go development build, so this makes sense

Solution / Requirements:

  • It should be possible to create a production-ready build of the app (for both Android and Apple) that can be tested locally
  • A stretch goal may be to integrate Github Actions with creating the production builds, for a full CI/CD pipeline
  • If needed, the app should be able to be updated periodically on the app stores
  • At minimum, the app’s production builds can be uploaded manually by the developers to the app stores
  • A stretch goal may be to integrate Github Actions with submitting builds to the app stores, for a full CI/CD pipeline
  • The app should be deployed on Android and Apple app stores
  • The app should be easy to download / install from app stores
  • The app should stay up on the app store (should not be taken down due to an inactive developer account, etc.)

Design resources:

Dependencies:

Are we waiting on other user stories or tasks to complete?

Before Creating Production Builds

  • Need to set up EAS CLI, the default Expo Go service for building / deploying apps (or we could try another service, needs more research)
  • The production building step itself can be tested locally (e.g. on Android or iOS emulator on PC) at any time and is not blocked per se by completion of other app features
  • It may be a good idea to test the production builds early even if the app is not feature complete, because we might catch some bugs early that way

Before App Store Submission

  • Probably need to sign up for Google Play Developer and Apple Developer accounts
    • These do cost money (one time fee of $25 and $99 annually, respectively, so may need to contact OSU for funding)
  • The app store submission step probably cannot be tested until all other features of the app are ready to go (including the build process), because we do not want to submit a half-finished app to the official Android / Apple App stores. Other tasks we are waiting on include:
    • Revamping our database schema (compared to last year’s codebase) to match golf coach’s drill requirements
    • Revamping our backend (compared to last year’s codebase) to match golf coach’s drill requirements
    • Revamping frontend UI (e.g. leaderboards and progress graphs) to match golf coach’s requirements

Are others user stories or tasks waiting on this issue to complete?

  • As stated above, the build step needs to be done before the app store submission step, but other than that, no

List of tasks and subtasks

Estimate

  • Optimistically, I think setting up the build step and app store submission step could take about a week each, and maybe another week if we want to integrate Github Actions for CI/CD (so ~3 weeks total)

Open Questions

  • It seems that if we use EAS (Expo Go default service for building and deploying), then Windows developer PC can deploy to Apple mobile app store (as Expo Go / React Native is cross platform), but will need to double check this, as not everyone on our team has the same PC operating system

Acceptance Criteria

  • App is deployed on Android and Apple app stores
  • App can be easily downloaded and installed from app stores
  • Adequate documentation is provided for any future IT admins / developers to be able to deploy updates in the future

Definition of done

  • Production build of app is tested locally (on both Android and Apple versions) and any major bugs are fixed before deploying to App stores
  • We will try to integrate automated unit testing if possible, e.g. with Jest and Playwright
  • Any bugs that appear after deployment to App stores are fixed ASAP and a new update will be deployed
  • Documentation for building and deployment is easy to read and understand by professor Rob Hess, our project partner (will be a litmus test for readability)
  • If we integrate a CI/CD pipeline with Github Actions, the YAML code for this should be well commented and reviewed by at least 2 other team members before merging to main branch
@solderq35 solderq35 added priority-low Minor bug fix / feature request queued Waiting on something else add-feature add feature / functionality (discuss?) tasklist list of more specific issues or tasks labels Apr 5, 2024
@solderq35
Copy link
Contributor Author

solderq35 commented Apr 5, 2024

This will eventually become important but I think we are a long way off from worrying about production deployment strategies

When we get to that stage, this can be marked higher priority

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
add-feature add feature / functionality (discuss?) priority-low Minor bug fix / feature request queued Waiting on something else tasklist list of more specific issues or tasks
Projects
None yet
Development

No branches or pull requests

1 participant