This repo. contains hotfixes which are individually packaged and made available to customers. Changes are built and uploaded per folder as the .version file in each directory is changed.
The resulting artifact becomes available at https://storage.googleapis.com/csm-release-public/hotfix/<release>.tar.gz
Run ./release.sh <hotfix>
to generate a distribution for the specified
hotfix.
Each hotfix directory is expected to contain asset indexes and scripts for
applying the hotfix. The following files are used by release.sh
to generate
hotfix distributions:
lib/version.sh
: Script generated by thegen-version-sh
utility invendor/stash.us.cray.com/scm/shastarelm/release/lib/release.sh
. Useupdate-version.sh
to properly update the version number in this script.Note: The build pipeline will only build versions that do not exist in the GCP hotfix bucket.
docker/index.yaml
: An optional docker index.yaml file that'll be used to skopeo sync docker images to the hotfix's releasedocker/transform.sh
: An optional script to fixup container image repositorieshelm/index.yaml
: An optional helm index.yaml file that contains a list of helm charts to be added to the hotfix's release
Every install-hotfix.sh
script
ROOTDIR=$(dirname $0)
source "${ROOTDIR}/lib/version.sh"
${ROOTDIR}/lib/setup-nexus.sh
Including those lines at the head of the hotfix will ensure the right libraries and setup is done.
To include RPMs in your hotfix, please add them to the CSM repository to the respective YAML files ( compute or non-compute ):
- GitHub: https://github.com/Cray-HPE/csm/tree/main/rpm/cray/csm
- Stash (legacy): https://stash.us.cray.com/projects/CSM
README.md
: Hotfix documentation; how to apply the hotfix, and any details.lib/setup-nexus.sh
: Script for populating Nexus Repositories with any artifacts the hotfix needs; helm charts, rpms, docker images, and etc.lib/install.sh
: (boilerplate) A dependency forsetup-nexus.sh
, enabling the uploadTypically a symlink to thelib/install.sh
library from the vendored SHASTARELM/release repo which is used bylib/setup-nexus.sh
.install-hotfix.sh
: Applies the hotfix. (if dependencies are needed for a hotfix, then this runs aftersetup-nexus.sh
)
Typically, for a hotfix with dependencies (helm charts, docker images, or RPMs) the execution order for a user would be:
lib/setup-nexus.sh
lib/install.sh
For hotfixes without dependencies, lib/install.sh
is all that is required.