Загрузка данных


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$