Загрузка данных
dmitriev-aal@VDI-Dmitriev-A:~/Desktop/rshbintech/integrations/ckpr/ci-cd/base$ cat bases/deploy/dynamic.yml
include:
- local: /bricks/rules/dynamic.yml
generate_dynamic:
stage: deploy_dynamic
extends:
- .rules_dynamic
image:
name: $IMAGE_NAME__APPFARMCTL_CLI:$IMAGE_TAG__APPFARMCTL_CLI
entrypoint: [""]
script:
- |
( umask 0077; mkdir -p ~/.kube && echo "$KUBECONFIG_COMBINED" | base64 -d > ~/.kube/config )
set -x
K8S_CLUSTERS_COUNT=0
for CLUSTER in $K8S_CLUSTERS; do
K8S_CLUSTERS_COUNT=$((K8S_CLUSTERS_COUNT+1))
done
if [[ $K8S_CLUSTERS_COUNT -ne 1 ]]; then
echo "Деплой в динамические окружения поддерживается только для единственного кластера"
exit 1
fi
if [[ -n "${CI_BASE_FLOW_PATH}" ]]; then
BASE_FLOW_PATH="${CI_BASE_FLOW_PATH}"
elif [[ "${CI_PROJECT_ROOT_NAMESPACE}" == "appfarm" ]]; then
BASE_FLOW_PATH="appfarm/ci-cd/base"
else
BASE_FLOW_PATH="rshbintech/integrations/ckpr/ci-cd/base"
fi
DYNAMIC_ENVIRONMENT=$(/appfarmctl ci get dynamic-environment)
if [[ -z "$DYNAMIC_ENVIRONMENT" ]]; then
cat > deploy-dynamic.yml << END_GENERATED
include:
- project: $BASE_FLOW_PATH
file: /bases/deploy/no-dynamic.yml
END_GENERATED
else
cat > deploy-dynamic.yml << END_GENERATED
include:
- project: $BASE_FLOW_PATH
file: /bases/deploy/k8s-dynamic.yml
END_GENERATED
PREVIOUS_JOB=""
echo "$DYNAMIC_ENVIRONMENT" | while read LINE; do
CODE=${LINE:1}
if [[ ${LINE::1} == "+" ]]; then
JOB=$CODE
UNINSTALL=false
elif [[ ${LINE::1} == "-" ]]; then
JOB="${CODE}_undeploy"
UNINSTALL=true
else
continue
fi
cat >> deploy-dynamic.yml << END_GENERATED
$JOB:
END_GENERATED
if [[ -n "$PREVIOUS_JOB" ]]; then
cat >> deploy-dynamic.yml << END_GENERATED
needs:
- job: $PREVIOUS_JOB
END_GENERATED
fi
PREVIOUS_JOB=$JOB
cat >> deploy-dynamic.yml << END_GENERATED
variables:
DYNAMIC_ENVIRONMENT_CODE: $CODE
DYNAMIC_ENVIRONMENT_UNINSTALL: '$UNINSTALL'
BUILD_IMAGE: $BUILD_IMAGE
BUILD_IMAGE_VERSION: $BUILD_IMAGE_VERSION
RUNTIME_IMAGE: $RUNTIME_IMAGE
RUNTIME_IMAGE_VERSION: $RUNTIME_IMAGE_VERSION
extends:
- .deploy_dynamic
END_GENERATED
done
fi
artifacts:
paths:
- deploy-dynamic.yml
expire_in: 1 days
deploy_dynamic:
stage: deploy_dynamic
needs:
- job: generate_dynamic
artifacts: true
extends:
- .rules_dynamic
trigger:
include:
- artifact: deploy-dynamic.yml
job: generate_dynamic
strategy: depend
dmitriev-aal@VDI-Dmitriev-A:~/Desktop/rshbintech/integrations/ckpr/ci-cd/base$ cat bricks/rules/dynamic.yml
.rules_dynamic:
rules:
## На ветках `master`, `bugfix/*` и `feature/*`
- if: '($CI_COMMIT_BRANCH == "master" || $CI_COMMIT_BRANCH =~ /^(bugfix|feature)\/.+$/) && $CI_COMMIT_REF_PROTECTED == "true" && $PLATFORM_FLOW == null'
variables:
K8S_CLUSTERS: $K8S_CLUSTERS_DEV
K8S_CLUSTERS_SENSITIVE: $K8S_CLUSTERS_DEV
## Cтенд разработки
GLOBAL_ENVIRONMENT_NAME: dev
dmitriev-aal@VDI-Dmitriev-A:~/Desktop/rshbintech/integrations/ckpr/ci-cd/base$