diff --git a/.github/checkPreviousChannelRelease.sh b/.github/checkPreviousChannelRelease.sh new file mode 100644 index 00000000..a85ad3fb --- /dev/null +++ b/.github/checkPreviousChannelRelease.sh @@ -0,0 +1,35 @@ +#!/bin/bash + +crane="/usr/local/bin/crane" +repositoryName=$1 +edition=$2 +channel=$3 +version=$4 + +echo "Module $repositoryName, edition $edition, channel $channel, version $version" + +if [[ "$channel" == "alpha" ]]; then + echo "Deploying $version to alpha channel" + exit 0 +elif [[ "$channel" == "beta" ]]; then + previousChannel="alpha" +elif [[ "$channel" == "early-access" ]]; then + previousChannel="beta" +elif [[ "$channel" == "stable" ]]; then + previousChannel="early-access" +elif [[ "$channel" == "rock-solid" ]]; then + previousChannel="stable" +else + echo "Unknown channel" + exit 1 +fi + +echo "Checking previous channel $previousChannel" +previousChannelVersion=$($crane export registry.deckhouse.io/deckhouse/$edition/modules/$repositoryName/release:$previousChannel | grep -aoE '\{"version":".*"\}' | jq -r .version) +if [[ "$version" == "$previousChannelVersion" ]]; then + echo "Previous channel $previousChannel version $previousChannelVersion is equal desired version $version, processing" + exit 0 +else + echo "Previous channel $previousChannel version $previousChannelVersion is not equal desired version $version, rejecting" + exit 1 +fi diff --git a/.github/workflows/deploy_prod.yml b/.github/workflows/deploy_prod.yml index 9e9c4072..061c4da5 100644 --- a/.github/workflows/deploy_prod.yml +++ b/.github/workflows/deploy_prod.yml @@ -66,6 +66,9 @@ jobs: - name: ECHO VAR run: | echo $MODULES_MODULE_SOURCE + - name: Check previous release + run: | + .github/checkPreviousChannelRelease.sh $MODULE_SOURCE_NAME ce $RELEASE_CHANNEL $MODULES_MODULE_TAG - uses: actions/checkout@v4 - uses: deckhouse/modules-actions/setup@v1 - uses: deckhouse/modules-actions/deploy@v1 @@ -82,6 +85,9 @@ jobs: - name: ECHO VAR run: | echo $MODULES_MODULE_SOURCE + - name: Check previous release + run: | + .github/checkPreviousChannelRelease.sh $MODULE_SOURCE_NAME ee $RELEASE_CHANNEL $MODULES_MODULE_TAG - uses: actions/checkout@v4 - uses: deckhouse/modules-actions/setup@v1 - uses: deckhouse/modules-actions/deploy@v1 @@ -98,6 +104,9 @@ jobs: - name: ECHO VAR run: | echo $MODULES_MODULE_SOURCE + - name: Check previous release + run: | + .github/checkPreviousChannelRelease.sh $MODULE_SOURCE_NAME fe $RELEASE_CHANNEL $MODULES_MODULE_TAG - uses: actions/checkout@v4 - uses: deckhouse/modules-actions/setup@v1 - uses: deckhouse/modules-actions/deploy@v1