Software release
At the end of each iteration, you should be producing a software release, and publishing it on your project page.
What is a software release?
A software release is process where you halt development, and generate an installable version of your product that contains specific, known and tested functionality. Typically this is done so that you can provide them with a working copy of your software either for further testing, or actual use/deployment.
Producing a release
Here’s what you should do each release.
-
Assign a version number. In your
build.gradle.kts
, you should change the VERSION to the next valid product version number.- We recommend incrementing the second digit for a beta release; your final release would be version 1.0.
- e.g., Demo 1 is 0.10, Demo 2 is 0.20, …, final release is 1.0. See semantic versioning.
-
Consolidate code changes. Commit all completed code changes and merge back to your release branch (
main
unless you are told otherwise). Make sure that all unit tests pass. -
Generate a release in GitLab (docs). You can start this through
Deploy
>Release
. This will (a) tag your code at this point in time, (b) create an archive of your source code from that tag. -
Write release notes. Each software release should be documented in a Wiki page, named according to the release number e.g.,
Version 1.0.0 Release
. You should have a section titledReleases
in yourREADME.md
with a link to this page (and all previous releases).The Wiki page for a release needs to include:
- The release date, which should be the date that the installer was generated. e.g., 12-May-2023
- The version of this release (which you increment for each release. e.g., 1.1.0 for your first sprint.
- A bullet list of the major changes that were included in the release, and a link to the issues list in GitLab.
-
Add installer images. The installer should be a packaged version of your application that a user could use to install it. If your application consists of multiple components that need to be installed separately (e.g. Android AND desktop) then you need to provide installers for each one.
Acceptable forms of packaging include:
- Android: an
apk
file generated from IntelliJ IDEA or Android Studio that can be side-loaded into a virtual device (Build > Build/APK). - Desktop: an
exe
,dmg
,pkg
ormsi
file that installs the application (In Gradle, Compose Desktop > packageInstaller). - Service: a Docker image that contains your service, with instructions on how to run it. If you are hosting it in the cloud, then you don’t need a Docker image.
The last step is to attach these images to the wiki page, so that user can locate them in the wiki and install them directly. (If the file is too large to attach, you can also place it in your Git repository and provide a link the repo in your Release Notes).
- Android: an