Back to Flutter Inner Source homepage
inner source

Package & Publish

Once a code change is validated the updated version can be packaged as a deployable artefact. Depending on your application this might be a Docker image, a compiled binary, an rpm or jar file, or simply a bundled and minified source file. This package must then be published to a location from which it can be deployed to relevant environments.

SemVer Tags

Use semantic version git tags on your repository to label and trigger alpha, beta and production builds. Our SemVer conventions are a subset of the SemVer v2.0.0 spec. A semantic version consists of:

major.minor.patch-team.phase.integration+build

By convention the version number is prefixed by a v. For example:

v2.8.1 is the production 2.8 build after 1 hotfix.

v1.3.0-lds.beta.3 is a beta build for the intended v1.3.0 release. It has been created by the lds team, and has had several bugfixes applied which can be inferred from the .3 integration number suffix.

v3.0.0-alpha.1 is an alpha build for the intended major v3.0.0 release. It has no team element since all tags are created by a single team in this repository. The .1 integration number suffix suggests this is an early build without many features yet.

The git flutter CLI tool has various helper features to help you apply these tags easily and consistently to your repository.

GitHub Releases

GitHub provide in-built ‘release’ functionality where you can create a ‘release’ to package software, along with release notes and links to binary files, for other people to use. Using this feature is recommended.

COMING SOON: Some examples how teams create GitHub releases from git tags. This is not Flutter specific so you can use Google to find quality information in the meantime.

Publish to AWS

A common choice is to publish release artefacts from a repository into AWS for use within that ecosystem. For example, you might choose to publish a Docker image into the AWS container registry for use in AWS deployments:

  1. Create a workflow that is triggered by a new GitHub Release (the release event).
  2. Authenticate your workflow with AWS using OpenID Connect.
  3. Login and push image to AWS ECR.

COMING SOON: Case studies of Flutter teams using this flow.

GitHub Packages

GitHub Packages is a software package hosting service that allows you to host your software packages privately or publicly and use packages as dependencies in your projects. This is especially useful to publish library packages for re-use across other projects.

COMING SOON: Case studies of how teams use GH Packages.

Artifactory

An internal Artifactory instance is available if using the self-hosted runners. This is not always recommended as it has more awkward access requirements across the wider group, but there are cases where it the best choice.

COMING SOON: More details about why and when to use Artifactory.

Validate
← Previous
Component Tests