...

/

Building a Release Workflow

Building a Release Workflow

Understand how to build and trigger a release automation workflow.

In this lesson, we will take the manual, toilsome process of publishing a new release and transform it into GitHub workflow automation triggered by pushing a tag to the repository. This automation will result in a GitHub release containing build notes and release artifacts for a tagged, semantic version of the tweeter command-line tool. Automating manual processes such as releases reduces the possibility of manual errors and increases the productivity of project maintainers.

In this lesson, we will learn how to create a release automation workflow. We will learn how to trigger an automation to run after the successful completion of dependent automation. We will learn how to build binaries targeting multiple platforms. Finally, we will automate the creation of a GitHub release, including automatically generated release notes.

GitHub releases

GitHub releases are deployable software iterations for a repository that are based on Git tags. A release declares to the world that a new version of the software is available. A release is composed of a title, an optional description, and an optional set of artifacts. The title provides a name for the release. The description is used to provide insight into what is contained in the release – for example, what new features or pull requests were included in the release, and which GitHub contributors contributed to the release.

The description is formatted in GitHub Markdown. Release artifacts are files associated with the release that users can download – for example, a command-line application might publish compiled binaries ready for download and use.

Git tags

A Git tag is a named pointer to a specific reference in the Git repository and is often formatted as semantic versions, such as v1.2.3. Semantic versioning is a convention for naming tags that provides some insight into the significance of a new release. A semantic version tag is formatted as Major.Minor.Patch. The following behavior is expressed by incrementing the individual field:

  • Major: Increment when incompatible API changes occur, such as breaking changes.

  • Minor: Increment when functionality is added in a backward-compatible manner, such as new features.

  • Patch: Increment when making backward-compatible bug fixes.

Release automation for tweeter

We will build upon the CI automation and add release automation for tweeter.

Goals for automation

In our release ...