Skip to content
This repository has been archived by the owner on Jul 27, 2023. It is now read-only.

Latest commit

 

History

History
68 lines (56 loc) · 5.51 KB

RELEASE.md

File metadata and controls

68 lines (56 loc) · 5.51 KB

Dependencies

The Appsody CLI depends on a number of assets:

  1. The Appsody Controller, which is available here. During the execution of certain Appsody CLI commands, such as appsody run, the appropriate version of the Appsody Controller is pulled from the Docker registry. The version of the controller that is pulled is defined within the Makefile by means of the APPSODY_CONTROLLER_VERSION variable. The version is updated manually as needed, there is no automatic update when a new controller is release. However, the dependent controller version does need to be released first, as the build process for the Appsody CLI retrieves the controller image that contains the binaries, and does not build them. Once the dependent controller has been released, a Pull Request with the APPSODY_CONTROLLER_VERSION changes to the Makefile needs to be created and merged before continuing on with the CLI release.
  2. The debian-builder Docker image, which is built separately from this repo. The Makefile has a variable that points to the latest version of this image, called DOCKER_IMAGE_DEB. This image is used during the deploy stage to generate the Debian installer for Appsody.
  3. The rpmbuilder Docker image, which builds the RPM installer for Appsody. Currently, we use the image provided by alectolytic, and we point to it through the Makefile env var DOCKER_IMAGE_RPM.

We expect the Docker images for the Debian and RPM installers to change very rarely. The Appsody controller may be released more frequently. Generally, a new release of the Controller requires a new release of the Appsody CLI.

Downstream dependencies

When the Appsody CLI is released, the build process also updates the Appsody website repository and the Appsody Homebrew formula, as we mentioned earlier. The update creates a new branch in those repos, and it is expected that the maintainers create new pull requests for those branches against the master branch. Keep in mind that the Appsody CLI release is complete only when those PRs are merged.

Appsody CLI Release Process

Follow this process to create a new release of the Appsody CLI.

Verify generated documentation

  1. Run make build-docs which will generate build/cli-commands.md
  2. Preview the build/cli-commands.md file to ensure it reads well and the formatting looks correct. To preview in VS Code: open the file and do shift-command-v

Create a GitHub release

The Appsody CLI is made available by creating a tagged GitHub release

  1. If there is a new dependent controller, a Pull Request with the APPSODY_CONTROLLER_VERSION changes to the Makefile needs to be created and merged before continuing
  2. Navigate to https://github.com/appsody/appsody/releases
  3. Click Draft a new release
  4. Ensure the target branch is master
  5. Define a tag in the format of x.y.z (example: 0.2.4). Use the tag also for the title.
  6. Describe the release with your release notes, including a list of the features added by the release, a list of the major issues that are resolved by the release, caveats, known issues.
  7. Check the box for This is a pre-release
  8. Click Publish release

Monitor the build

  1. Watch the Travis build for the release and ensure it passes. The build will include the deploy stage of the build process as defined in .travis.yml. The deploy stage, if successful, will produce the following results:
    • The release page will be populated with the build artifacts (see next step)
    • A new branch will be created in the homebrew-appsody repo (further steps below)
    • A new branch will be created in the website repo (further steps below)
  2. Check the release artifacts to ensure these all exist (again, x.y.z indicates the release - for example 0.2.4):
    • appsody-x.y.z-1.x86_64.rpm
    • appsody-x.y.z-darwin-amd64.tar.gz
    • appsody-x.y.z-linux-amd64.tar.gz
    • appsody-x.y.z-windows.tar.gz
    • appsody-homebrew-x.y.z.tar.gz
    • appsody.rb
    • appsody_x.y.z_amd64.deb
  3. Edit the release and uncheck This is a pre-relsease then click Update release

Create a PR in the homebrew repo

  1. Go to the appsody/homebrew-appsody repo and create a PR for the new Travis build branch.
  2. Review and merge the PR.

Create a PR in the website repo

  1. Go to the appsody/website repo and create a PR for the new Travis build branch.
  2. Review and merge the PR.

Create a new appsody-buildah release

  1. Go to the Travis settings of appsody-buildah
  2. Update the CLI_VERSION variable to match the release you created above. Note you need to delete and recreate the variable. Select "DISPLAY VALUE IN BUILD LOG".
  3. Go to the appsody-buildah releases and create a new release.

Inform users about the new release

  1. Post a message to the cli slack channel about the new release, providing a link to the relevant release notes
    We’ve released appsody version <version>
    Release notes: https://github.com/appsody/appsody/releases/tag/<version>
    

Release schedule

We plan to release the Appsody CLI at the end of each sprint - approximately every two weeks.