Skip to content

Publishing

Fareez Iqmal edited this page Mar 23, 2024 · 8 revisions

Content are relevant for maintainers

Since IIUM Schedule app is supported for multiple platforms (currently Android, Web & Windows), ensuring the release delivery to those platforms is crucial.

Before release, bump the version of the app in pubspec.yaml file. The versioning is based on SemVer (kinda, read more here). Also, update the Windows version in msix block and in the inno setup file.

A new release is created through the GitHub releases (applicable for both pre-release and stable release). Once the release is published, an action (build_all.yml) will automatically triggered to build the necessary artifacts.

Below is visualized flow of the release process:

flowchart TB
  A((Start))
  B[Build Android]
  D[Build Web]
  E[Build Windows]
  A-->B---C[/"apk(s)"/]
  B---F[/"aab*"/]-->K[Upload to Google Play*]
  A-->D-->G[Deploy to Firebase**]
  A-->E---H[/exe/]
  E---I[/msix/]
  C-->J
  H-->J
  I-->J[Add to release assets]
  G-->L
  K-->L
  J-->L((A))
Loading

Note:

  • * : Skip if pre-release (no need to publish to Google Play Store).
  • **: Hosting channel: staging if pre-release else live.

Stop here if the release is a pre-release. Otherwise, continue with the following steps.


Then, maintainers need to submit publishing to some platforms.

flowchart LR
    A((A))
    A-->B[Open <b>Google Play Store</b> to complete the releases]
    A-->C[Get .exe download link from <b>assets</b>]
    B-->F
    C-->E[Submit to <b>winget-pkgs*</b>]
    E-->F((Finish))
Loading

*Submit to winget-pkgs using wingetcreate. Example command:

wingetcreate update MuhammadFareezIqmal.IIUMSchedule --version <versionnumber> --interactive

Note Replace <versionnumber> with the Windows release version number convention. Read more here.

For some reason, submitting with architecture x86 will cause CI failing. To avoid this, change the architecture for both installers to x64. Here's demo.

Note that that once submitted, it will go through the approval process. So, the changes are not immediate (can be hours or days).

Finally, update the website with the latest information.

  • Release notes
    • Add new release notes
  • Downloads
    • No need to do anything, the links will be automatically fetched from the latest releases from GitHub.

Alhamdulillah, now you have completed the app releases.

Clone this wiki locally