Last active
September 17, 2025 09:07
-
-
Save unreturned/0f959d5f81e2d78e078cc36042cd538e to your computer and use it in GitHub Desktop.
get_deckhouserelease_manifest.sh
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| #!/usr/bin/env bash | |
| # set -euxo pipefail #DEBUG | |
| set -euo pipefail #NORMAL | |
| # Устанавливаем значение по умолчанию (пустую строку) для RELEASE_CHANNEL | |
| RELEASE_CHANNEL_OR_VERSION="" | |
| VALID_CHANNELS=("alpha" "beta" "early-access" "stable" "rock-solid") | |
| # Функция, чтобы проверить, совпадает ли RELEASE_CHANNEL с форматом версии | |
| is_version_format() { | |
| [[ $1 =~ ^v[0-9]+\.[0-9]+\.[0-9]+$ ]] | |
| } | |
| usage() { | |
| echo "Usage: $0 RELEASE_CHANNEL_OR_VERSION" | |
| echo "RELEASE_CHANNEL_OR_VERSION should be one of: alpha|beta|early-access|stable|rock-solid or in the format vX.Y.Z." | |
| } | |
| # Проверьте, был ли передан параметр для RELEASE_CHANNEL | |
| if [[ $# -lt 1 ]]; then | |
| usage | |
| exit 1 | |
| fi | |
| RELEASE_CHANNEL_OR_VERSION=$1 | |
| # Проверяем, является ли RELEASE_CHANNEL допустимым каналом или версией | |
| if [[ ! " ${VALID_CHANNELS[*]} " =~ " ${RELEASE_CHANNEL_OR_VERSION} " ]] && ! is_version_format "${RELEASE_CHANNEL_OR_VERSION}"; then | |
| usage | |
| exit 1 | |
| fi | |
| # Логирование для наглядности | |
| # echo "Using release channel: $RELEASE_CHANNEL_OR_VERSION" | |
| # Получаем версию один раз и используем полученное значение | |
| VERSION=$(crane export registry.deckhouse.ru/deckhouse/ee/release-channel:$RELEASE_CHANNEL_OR_VERSION | tar -xOf - version.json | jq -r '.version') | |
| # Извлекаем нужные файлы version.json и changelog.yaml из архива | |
| crane export registry.deckhouse.ru/deckhouse/ee/release-channel:$VERSION | tar -xf - version.json changelog.yaml | |
| # Преобразуем и извлекаем данные из JSON сразу в YAML | |
| yq -o yaml -e '. | {"requirements": .requirements}' version.json > requirements.yaml | |
| # Создаем финальный YAML-исходные данные | |
| cat <<EOF > deckhouserelease-${VERSION}.yaml | |
| apiVersion: deckhouse.io/v1alpha1 | |
| approved: false | |
| kind: DeckhouseRelease | |
| metadata: | |
| name: ${VERSION} | |
| spec: | |
| changelogLink: https://github.com/deckhouse/deckhouse/releases/tag/${VERSION} | |
| version: ${VERSION} | |
| EOF | |
| # Добавляем содержимое changelog и requirements в финальный YAML | |
| yq -o yaml '.spec.changelog *= load("changelog.yaml")' deckhouserelease-${VERSION}.yaml > temp.yaml | |
| yq -o yaml '.spec.requirements *= load("requirements.yaml")' temp.yaml | yq -P - > deckhouserelease-${VERSION}.yaml | |
| # Удаляем временные файлы | |
| rm version.json changelog.yaml requirements.yaml temp.yaml | |
| # Выводим финальный YAML | |
| yq -P deckhouserelease-${VERSION}.yaml |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment