Skip to content

Commit 7eb975c

Browse files
committed
ci: support for replaces and skips in Red Hat indexes
1 parent 0f95a6d commit 7eb975c

6 files changed

Lines changed: 99 additions & 6 deletions

File tree

stackgres-k8s/install/operator-sdk/stackgres-operator/config/manifests/bases/stackgres.clusterserviceversion.template.yaml

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,6 @@ metadata:
1313
categories: Database
1414
repository: https://gitlab.com/ongresinc/stackgres
1515
containerImage: quay.io/stackgres/operator:${IMAGE_TAG}
16-
olm.skipRange: '>= 1.4.3 < ${VERSION}'
1716
spec:
1817
displayName: StackGres
1918
provider:

stackgres-k8s/install/operator-sdk/stackgres-operator/deploy-to-operatorhub.sh

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,5 +5,6 @@ UPSTREAM_GIT_URL="https://github.com/k8s-operatorhub/community-operators"
55
FORK_GIT_URL="${FORK_GIT_URL:-$1}"
66
PROJECT_NAME="stackgres"
77
DO_PIN_IMAGES=false
8+
PREVIOUS_VERSION=none
89

910
. "$(dirname "$0")/deploy.sh"

stackgres-k8s/install/operator-sdk/stackgres-operator/deploy-to-red-hat-certified.sh

Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,4 +16,33 @@ deploy_extra_steps() {
1616
"$FORK_GIT_PATH/operators/$PROJECT_NAME/$STACKGRES_VERSION"/manifests/stackgres.clusterserviceversion.yaml
1717
}
1818

19+
set_previous_version_override() {
20+
OPENSHIFT_VERSIONS="$(yq -r '.annotations["com.redhat.openshift.versions"]' \
21+
"$FORK_GIT_PATH/operators/$PROJECT_NAME/$STACKGRES_VERSION/metadata/annotations.yaml")"
22+
PREVIOUS_OPENSHIFT_VERSIONS="$(yq -r '.annotations["com.redhat.openshift.versions"]' \
23+
"$FORK_GIT_PATH/operators/$PROJECT_NAME/$PREVIOUS_VERSION/metadata/annotations.yaml")"
24+
if [ "$OPENSHIFT_VERSIONS" = "$PREVIOUS_OPENSHIFT_VERSIONS" ]
25+
then
26+
echo "Setting replaces to stackgres.v$PREVIOUS_VERSION"
27+
sed -i "s/^\( *\)\(version: $STACKGRES_VERSION\)$/\1\2\n\1replaces: stackgres.v$PREVIOUS_VERSION/" \
28+
"$FORK_GIT_PATH/operators/$PROJECT_NAME/$STACKGRES_VERSION"/manifests/stackgres.clusterserviceversion.yaml
29+
else
30+
SKIP_PREVIOUS_VERSIONS="$(ls -1d "$FORK_GIT_PATH/operators/$PROJECT_NAME"/*/manifests \
31+
| cut -d / -f 5 | grep -v '.-rc.' | sort -t ' ' -k 1Vr \
32+
| while read CANDIDATE_SKIP_PREVIOUS_VERSION
33+
do
34+
if [ "$PREVIOUS_OPENSHIFT_VERSIONS" != "$(yq -r '.annotations["com.redhat.openshift.versions"]' \
35+
"$FORK_GIT_PATH/operators/$PROJECT_NAME/$CANDIDATE_SKIP_PREVIOUS_VERSION/metadata/annotations.yaml")" ]
36+
then
37+
break
38+
fi
39+
printf '%s\n' "$CANDIDATE_SKIP_PREVIOUS_VERSION"
40+
done)"
41+
SKIP_PREVIOUS_VERSIONS_LIST="$(for SKIP_PREVIOUS_VERSION in $SKIP_PREVIOUS_VERSIONS; do printf "stackgres.v%s," "$SKIP_PREVIOUS_VERSION"; done | sed 's/,$//')"
42+
echo "Setting skips to $SKIP_PREVIOUS_VERSIONS_LIST"
43+
sed -i "s/^\( *\)\(version: $STACKGRES_VERSION\)$/\1\2\n\1skips: [ $SKIP_PREVIOUS_VERSIONS_LIST ]/" \
44+
"$FORK_GIT_PATH/operators/$PROJECT_NAME/$STACKGRES_VERSION"/manifests/stackgres.clusterserviceversion.yaml
45+
fi
46+
}
47+
1948
. "$(dirname "$0")/deploy.sh"

stackgres-k8s/install/operator-sdk/stackgres-operator/deploy-to-red-hat-community.sh

Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,4 +8,33 @@ RENAME_CSV=true
88
DO_PIN_IMAGES=true
99
OPERATOR_BUNDLE_IMAGE_TAG_SUFFIX=-openshift
1010

11+
set_previous_version_override() {
12+
OPENSHIFT_VERSIONS="$(yq -r '.annotations["com.redhat.openshift.versions"]' \
13+
"$FORK_GIT_PATH/operators/$PROJECT_NAME/$STACKGRES_VERSION/metadata/annotations.yaml")"
14+
PREVIOUS_OPENSHIFT_VERSIONS="$(yq -r '.annotations["com.redhat.openshift.versions"]' \
15+
"$FORK_GIT_PATH/operators/$PROJECT_NAME/$PREVIOUS_VERSION/metadata/annotations.yaml")"
16+
if [ "$OPENSHIFT_VERSIONS" = "$PREVIOUS_OPENSHIFT_VERSIONS" ]
17+
then
18+
echo "Setting replaces to stackgres.v$PREVIOUS_VERSION"
19+
sed -i "s/^\( *\)\(version: $STACKGRES_VERSION\)$/\1\2\n\1replaces: stackgres.v$PREVIOUS_VERSION/" \
20+
"$FORK_GIT_PATH/operators/$PROJECT_NAME/$STACKGRES_VERSION"/manifests/stackgres.clusterserviceversion.yaml
21+
else
22+
SKIP_PREVIOUS_VERSIONS="$(ls -1d "$FORK_GIT_PATH/operators/$PROJECT_NAME"/*/manifests \
23+
| cut -d / -f 5 | grep -v '.-rc.' | sort -t ' ' -k 1Vr \
24+
| while read CANDIDATE_SKIP_PREVIOUS_VERSION
25+
do
26+
if [ "$PREVIOUS_OPENSHIFT_VERSIONS" != "$(yq -r '.annotations["com.redhat.openshift.versions"]' \
27+
"$FORK_GIT_PATH/operators/$PROJECT_NAME/$CANDIDATE_SKIP_PREVIOUS_VERSION/metadata/annotations.yaml")" ]
28+
then
29+
break
30+
fi
31+
printf '%s\n' "$CANDIDATE_SKIP_PREVIOUS_VERSION"
32+
done)"
33+
SKIP_PREVIOUS_VERSIONS_LIST="$(for SKIP_PREVIOUS_VERSION in $SKIP_PREVIOUS_VERSIONS; do printf "stackgres.v%s," "$SKIP_PREVIOUS_VERSION"; done | sed 's/,$//')"
34+
echo "Setting skips to $SKIP_PREVIOUS_VERSIONS_LIST"
35+
sed -i "s/^\( *\)\(version: $STACKGRES_VERSION\)$/\1\2\n\1skips: [ $SKIP_PREVIOUS_VERSIONS_LIST ]/" \
36+
"$FORK_GIT_PATH/operators/$PROJECT_NAME/$STACKGRES_VERSION"/manifests/stackgres.clusterserviceversion.yaml
37+
fi
38+
}
39+
1140
. "$(dirname "$0")/deploy.sh"

stackgres-k8s/install/operator-sdk/stackgres-operator/deploy-to-red-hat-marketplace.sh

Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,4 +16,33 @@ deploy_extra_steps() {
1616
"$FORK_GIT_PATH/operators/$PROJECT_NAME/$STACKGRES_VERSION"/manifests/stackgres.clusterserviceversion.yaml
1717
}
1818

19+
set_previous_version_override() {
20+
OPENSHIFT_VERSIONS="$(yq -r '.annotations["com.redhat.openshift.versions"]' \
21+
"$FORK_GIT_PATH/operators/$PROJECT_NAME/$STACKGRES_VERSION/metadata/annotations.yaml")"
22+
PREVIOUS_OPENSHIFT_VERSIONS="$(yq -r '.annotations["com.redhat.openshift.versions"]' \
23+
"$FORK_GIT_PATH/operators/$PROJECT_NAME/$PREVIOUS_VERSION/metadata/annotations.yaml")"
24+
if [ "$OPENSHIFT_VERSIONS" = "$PREVIOUS_OPENSHIFT_VERSIONS" ]
25+
then
26+
echo "Setting replaces to stackgres.v$PREVIOUS_VERSION"
27+
sed -i "s/^\( *\)\(version: $STACKGRES_VERSION\)$/\1\2\n\1replaces: stackgres.v$PREVIOUS_VERSION/" \
28+
"$FORK_GIT_PATH/operators/$PROJECT_NAME/$STACKGRES_VERSION"/manifests/stackgres.clusterserviceversion.yaml
29+
else
30+
SKIP_PREVIOUS_VERSIONS="$(ls -1d "$FORK_GIT_PATH/operators/$PROJECT_NAME"/*/manifests \
31+
| cut -d / -f 5 | grep -v '.-rc.' | sort -t ' ' -k 1Vr \
32+
| while read CANDIDATE_SKIP_PREVIOUS_VERSION
33+
do
34+
if [ "$PREVIOUS_OPENSHIFT_VERSIONS" != "$(yq -r '.annotations["com.redhat.openshift.versions"]' \
35+
"$FORK_GIT_PATH/operators/$PROJECT_NAME/$CANDIDATE_SKIP_PREVIOUS_VERSION/metadata/annotations.yaml")" ]
36+
then
37+
break
38+
fi
39+
printf '%s\n' "$CANDIDATE_SKIP_PREVIOUS_VERSION"
40+
done)"
41+
SKIP_PREVIOUS_VERSIONS_LIST="$(for SKIP_PREVIOUS_VERSION in $SKIP_PREVIOUS_VERSIONS; do printf "stackgres.v%s," "$SKIP_PREVIOUS_VERSION"; done | sed 's/,$//')"
42+
echo "Setting skips to $SKIP_PREVIOUS_VERSIONS_LIST"
43+
sed -i "s/^\( *\)\(version: $STACKGRES_VERSION\)$/\1\2\n\1skips: [ $SKIP_PREVIOUS_VERSIONS_LIST ]/" \
44+
"$FORK_GIT_PATH/operators/$PROJECT_NAME/$STACKGRES_VERSION"/manifests/stackgres.clusterserviceversion.yaml
45+
fi
46+
}
47+
1948
. "$(dirname "$0")/deploy.sh"

stackgres-k8s/install/operator-sdk/stackgres-operator/deploy.sh

Lines changed: 11 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -78,7 +78,7 @@ if [ "x$PREVIOUS_VERSION" != xnone ]
7878
then
7979
PREVIOUS_VERSION="${PREVIOUS_VERSION:-$(
8080
ls -1d "$FORK_GIT_PATH/operators/$PROJECT_NAME"/*/manifests \
81-
| cut -d / -f 5 | grep -v '.-rc.' | sort -t ' ' -k 1V,1 | tail -n 1)}"
81+
| cut -d / -f 5 | grep -v '.-rc.' | sort -t ' ' -k 1Vr | head -n 1)}"
8282
if [ ! -d "$FORK_GIT_PATH/operators/$PROJECT_NAME/$PREVIOUS_VERSION" ] || [ "x$PREVIOUS_VERSION" = x ]
8383
then
8484
echo "Can not detect previous version. Set environment variable PREVIOUS_VERSION to set the previous version, or set it to "none" if no previous version is available"
@@ -141,7 +141,7 @@ then
141141
done
142142
echo
143143
)
144-
git -C "$FORK_GIT_PATH" diff
144+
git -C "$FORK_GIT_PATH" diff | cat
145145
echo "Pinning done!"
146146
fi
147147

@@ -157,10 +157,16 @@ then
157157
echo "Can not detect previous version. Set environment variable PREVIOUS_VERSION to set the previous version, or set it to "none" if no previous version is available"
158158
exit 1
159159
fi
160-
echo "Setting previous version to: $PREVIOUS_VERSION"
161-
sed -i "s/^\( *\)\(version: .*\)$/\1\2\n\1replaces: stackgres.v$PREVIOUS_VERSION/" \
162-
"$FORK_GIT_PATH/operators/$PROJECT_NAME/$STACKGRES_VERSION"/manifests/stackgres.clusterserviceversion.yaml
160+
if command -v set_previous_version_override > /dev/null 2>&1
161+
then
162+
set_previous_version_override
163+
else
164+
echo "Setting replaces to stackgres.v$PREVIOUS_VERSION"
165+
sed -i "s/^\( *\)\(version: $STACKGRES_VERSION\)$/\1\2\n\1replaces: stackgres.v$PREVIOUS_VERSION/" \
166+
"$FORK_GIT_PATH/operators/$PROJECT_NAME/$STACKGRES_VERSION"/manifests/stackgres.clusterserviceversion.yaml
167+
fi
163168
fi
169+
164170
if [ "$FORK_GIT_PATH/operators/$PROJECT_NAME/$STACKGRES_VERSION"/manifests/stackgres.clusterserviceversion.yaml \
165171
!= "$FORK_GIT_PATH/operators/$PROJECT_NAME/$STACKGRES_VERSION"/manifests/"${PROJECT_NAME}.clusterserviceversion.yaml" ]
166172
then

0 commit comments

Comments
 (0)