Skip to content

Commit

Permalink
Add option to overwrite the plugins key
Browse files Browse the repository at this point in the history
  • Loading branch information
zdrapela committed Feb 20, 2025
1 parent 48c5b68 commit f3e794e
Show file tree
Hide file tree
Showing 3 changed files with 35 additions and 25 deletions.
4 changes: 2 additions & 2 deletions .ibm/pipelines/cluster/aks/deployment.sh
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@ initiate_aks_deployment() {
cd "${DIR}" || exit
local rhdh_base_url="https://${K8S_CLUSTER_ROUTER_BASE}"
apply_yaml_files "${DIR}" "${NAME_SPACE_K8S}" "${rhdh_base_url}"
yq_merge_value_files "${DIR}/value_files/${HELM_CHART_VALUE_FILE_NAME}" "${DIR}/value_files/${HELM_CHART_AKS_DIFF_VALUE_FILE_NAME}" "/tmp/${HELM_CHART_K8S_MERGED_VALUE_FILE_NAME}"
yq_merge_value_files "merge" "${DIR}/value_files/${HELM_CHART_VALUE_FILE_NAME}" "${DIR}/value_files/${HELM_CHART_AKS_DIFF_VALUE_FILE_NAME}" "/tmp/${HELM_CHART_K8S_MERGED_VALUE_FILE_NAME}"
mkdir -p "${ARTIFACT_DIR}/${NAME_SPACE_K8S}"
cp -a "/tmp/${HELM_CHART_K8S_MERGED_VALUE_FILE_NAME}" "${ARTIFACT_DIR}/${NAME_SPACE_K8S}/" # Save the final value-file into the artifacts directory.
echo "Deploying image from repository: ${QUAY_REPO}, TAG_NAME: ${TAG_NAME}, in NAME_SPACE: ${NAME_SPACE_K8S}"
Expand All @@ -30,7 +30,7 @@ initiate_rbac_aks_deployment() {
cd "${DIR}" || exit
local rbac_rhdh_base_url="https://${K8S_CLUSTER_ROUTER_BASE}"
apply_yaml_files "${DIR}" "${NAME_SPACE_RBAC_K8S}" "${rbac_rhdh_base_url}"
yq_merge_value_files "${DIR}/value_files/${HELM_CHART_RBAC_VALUE_FILE_NAME}" "${DIR}/value_files/${HELM_CHART_RBAC_AKS_DIFF_VALUE_FILE_NAME}" "/tmp/${HELM_CHART_RBAC_K8S_MERGED_VALUE_FILE_NAME}"
yq_merge_value_files "merge" "${DIR}/value_files/${HELM_CHART_RBAC_VALUE_FILE_NAME}" "${DIR}/value_files/${HELM_CHART_RBAC_AKS_DIFF_VALUE_FILE_NAME}" "/tmp/${HELM_CHART_RBAC_K8S_MERGED_VALUE_FILE_NAME}"
mkdir -p "${ARTIFACT_DIR}/${NAME_SPACE_RBAC_K8S}"
cp -a "/tmp/${HELM_CHART_RBAC_K8S_MERGED_VALUE_FILE_NAME}" "${ARTIFACT_DIR}/${NAME_SPACE_RBAC_K8S}/" # Save the final value-file into the artifacts directory.
echo "Deploying image from repository: ${QUAY_REPO}, TAG_NAME: ${TAG_NAME}, in NAME_SPACE: ${NAME_SPACE_RBAC_K8S}"
Expand Down
4 changes: 2 additions & 2 deletions .ibm/pipelines/cluster/gke/deployment.sh
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@ initiate_gke_deployment() {
local rhdh_base_url="https://${K8S_CLUSTER_ROUTER_BASE}"
apply_yaml_files "${DIR}" "${NAME_SPACE_K8S}" "${rhdh_base_url}"
oc apply -f "${DIR}/cluster/gke/frontend-config.yaml" --namespace="${project}"
yq_merge_value_files "${DIR}/value_files/${HELM_CHART_VALUE_FILE_NAME}" "${DIR}/value_files/${HELM_CHART_GKE_DIFF_VALUE_FILE_NAME}" "/tmp/${HELM_CHART_K8S_MERGED_VALUE_FILE_NAME}"
yq_merge_value_files "merge" "${DIR}/value_files/${HELM_CHART_VALUE_FILE_NAME}" "${DIR}/value_files/${HELM_CHART_GKE_DIFF_VALUE_FILE_NAME}" "/tmp/${HELM_CHART_K8S_MERGED_VALUE_FILE_NAME}"
mkdir -p "${ARTIFACT_DIR}/${NAME_SPACE_K8S}"
cp -a "/tmp/${HELM_CHART_K8S_MERGED_VALUE_FILE_NAME}" "${ARTIFACT_DIR}/${NAME_SPACE_K8S}/" # Save the final value-file into the artifacts directory.
echo "Deploying image from repository: ${QUAY_REPO}, TAG_NAME: ${TAG_NAME}, in NAME_SPACE: ${NAME_SPACE_K8S}"
Expand All @@ -34,7 +34,7 @@ initiate_rbac_gke_deployment() {
cd "${DIR}" || exit
local rbac_rhdh_base_url="https://${K8S_CLUSTER_ROUTER_BASE}"
apply_yaml_files "${DIR}" "${NAME_SPACE_RBAC_K8S}" "${rbac_rhdh_base_url}"
yq_merge_value_files "${DIR}/value_files/${HELM_CHART_RBAC_VALUE_FILE_NAME}" "${DIR}/value_files/${HELM_CHART_RBAC_GKE_DIFF_VALUE_FILE_NAME}" "/tmp/${HELM_CHART_RBAC_K8S_MERGED_VALUE_FILE_NAME}"
yq_merge_value_files "merge" "${DIR}/value_files/${HELM_CHART_RBAC_VALUE_FILE_NAME}" "${DIR}/value_files/${HELM_CHART_RBAC_GKE_DIFF_VALUE_FILE_NAME}" "/tmp/${HELM_CHART_RBAC_K8S_MERGED_VALUE_FILE_NAME}"
mkdir -p "${ARTIFACT_DIR}/${NAME_SPACE_RBAC_K8S}"
cp -a "/tmp/${HELM_CHART_RBAC_K8S_MERGED_VALUE_FILE_NAME}" "${ARTIFACT_DIR}/${NAME_SPACE_RBAC_K8S}/" # Save the final value-file into the artifacts directory.
echo "Deploying image from repository: ${QUAY_REPO}, TAG_NAME: ${TAG_NAME}, in NAME_SPACE: ${NAME_SPACE_RBAC_K8S}"
Expand Down
52 changes: 31 additions & 21 deletions .ibm/pipelines/utils.sh
Original file line number Diff line number Diff line change
Expand Up @@ -191,28 +191,38 @@ droute_send() {

# Merge the base YAML value file with the differences file for Kubernetes
yq_merge_value_files() {
local base_file=$1
local diff_file=$2
local plugin_operation=$1 # Chose whether you want to merge or overwrite the plugins key (the second file will overwrite the first)
local base_file=$2
local diff_file=$3
local step_1_file="/tmp/step-without-plugins.yaml"
local step_2_file="/tmp/step-only-plugins.yaml"
local final_file=$3
# Step 1: Merge files, excluding the .global.dynamic.plugins key
# Values from `diff_file` override those in `base_file`
yq eval-all '
select(fileIndex == 0) * select(fileIndex == 1) |
del(.global.dynamic.plugins)
' "${base_file}" "${diff_file}" > "${step_1_file}"
# Step 2: Merge files, combining the .global.dynamic.plugins key
# Values from `diff_file` take precedence; plugins are merged and deduplicated by the .package field
yq eval-all '
select(fileIndex == 0) *+ select(fileIndex == 1) |
.global.dynamic.plugins |= (reverse | unique_by(.package) | reverse)
' "${base_file}" "${diff_file}" > "${step_2_file}"
# Step 3: Combine results from the previous steps and remove null values
# Values from `step_2_file` override those in `step_1_file`
yq eval-all '
select(fileIndex == 0) * select(fileIndex == 1) | del(.. | select(. == null))
' "${step_2_file}" "${step_1_file}" > "${final_file}"
local final_file=$4
if [ "$plugin_operation" = "merge" ]; then
# Step 1: Merge files, excluding the .global.dynamic.plugins key
# Values from `diff_file` override those in `base_file`
yq eval-all '
select(fileIndex == 0) * select(fileIndex == 1) |
del(.global.dynamic.plugins)
' "${base_file}" "${diff_file}" > "${step_1_file}"
# Step 2: Merge files, combining the .global.dynamic.plugins key
# Values from `diff_file` take precedence; plugins are merged and deduplicated by the .package field
yq eval-all '
select(fileIndex == 0) *+ select(fileIndex == 1) |
.global.dynamic.plugins |= (reverse | unique_by(.package) | reverse)
' "${base_file}" "${diff_file}" > "${step_2_file}"
# Step 3: Combine results from the previous steps and remove null values
# Values from `step_2_file` override those in `step_1_file`
yq eval-all '
select(fileIndex == 0) * select(fileIndex == 1) | del(.. | select(. == null))
' "${step_2_file}" "${step_1_file}" > "${final_file}"
elif [ "$plugin_operation" = "owerwrite" ]; then
yq eval-all '
select(fileIndex == 0) * select(fileIndex == 1)
' "${base_file}" "${diff_file}" > "${final_file}"
else
echo "Invalid operation with plugins key: $plugin_operation"
exit 1
fi
}

# Waits for a Kubernetes/OpenShift deployment to become ready within a specified timeout period
Expand Down Expand Up @@ -806,7 +816,7 @@ initiate_sanity_plugin_checks_deployment() {
uninstall_helmchart "${NAME_SPACE_SANITY_PLUGINS_CHECK}" "${RELEASE_NAME}"
oc apply -f "$DIR/resources/redis-cache/redis-deployment.yaml" --namespace="${NAME_SPACE_SANITY_PLUGINS_CHECK}"
apply_yaml_files "${DIR}" "${NAME_SPACE_SANITY_PLUGINS_CHECK}" "${sanity_plugins_url}"
yq_merge_value_files "${DIR}/value_files/${HELM_CHART_VALUE_FILE_NAME}" "${DIR}/value_files/${HELM_CHART_SANITY_PLUGINS_DIFF_VALUE_FILE_NAME}" "/tmp/${HELM_CHART_SANITY_PLUGINS_MERGED_VALUE_FILE_NAME}"
yq_merge_value_files "overwrite" "${DIR}/value_files/${HELM_CHART_VALUE_FILE_NAME}" "${DIR}/value_files/${HELM_CHART_SANITY_PLUGINS_DIFF_VALUE_FILE_NAME}" "/tmp/${HELM_CHART_SANITY_PLUGINS_MERGED_VALUE_FILE_NAME}"
mkdir -p "${ARTIFACT_DIR}/${NAME_SPACE_SANITY_PLUGINS_CHECK}"
cp -a "/tmp/${HELM_CHART_SANITY_PLUGINS_MERGED_VALUE_FILE_NAME}" "${ARTIFACT_DIR}/${NAME_SPACE_SANITY_PLUGINS_CHECK}/" # Save the final value-file into the artifacts directory.
helm upgrade -i "${RELEASE_NAME}" \
Expand Down

0 comments on commit f3e794e

Please sign in to comment.