1. CM

apiVersion: v1
kind: ConfigMap
metadata:
  name: {{ .Chart.Name }}-sqlcm
  namespace: {{ .Release.Namespace }}
  annotations:
    "helm.sh/hook-weight": "1"
    "helm.sh/hook": pre-install
    "helm.sh/hook-delete-policy": before-hook-creation
data: 
{{- $files := .Files }}
{{- range $path, $_ := ($files.Glob "sql/*.sql") }}
{{- $listsql := $path | base | trimSuffix ".sql" | trimPrefix "v"  | nospace }}
{{- if eq $listsql "base-schema" }}
{{ ($files.Glob $path).AsConfig | indent 2 }}
{{- else }}
{{- if  (semverCompare "^1.0.0" $listsql )  }}
{{ ($files.Glob $path).AsConfig | indent 2 }}
{{- end }}
{{- end }}
{{- end }}

字段分开介绍(注意作为YAML文件时需要移除前方的空格)

# 创建一个 files 文件对象
{{- $files := .Files }}

# 循环处理 sql/ 下以 .sql 结尾的文件。将文件路径保存在 $path 中
# 如: sql/v1.1.0.sql   sql/v1.2.1.sql sql/v2.3.9.sql
{{ range $path, $_ := ($files.Glob "sql/*.sql") }}

    # 处理 $path 路径,获取一个符合 SemVer2 的命名版本
    # 如 sql/v1.1.0.sql
    # base 获取斜线最后的字符:v1.1.0.sql
    # trimSuffix 移除 .sql 后缀: v1.1.0
    # trimPrefix 移除 v 前缀: 1.1.0
    # nospace 移除字符串中的空格: 没有空格
    {{ $listsql := $path | base | trimSuffix ".sql" | trimPrefix "v"  | nospace }}

    # 对获取的文件名称处理
    # 如果文件名称是 base-schema 这在这块处理
    {{ if eq $listsql "base-schema" }}
        {{ ($files.Glob $path).AsConfig | indent 2 }}

    # 如果文件名称符合 SemVer2 命名版本,在这块处理
    {{ else }}

        # 对比文件的版本和 是否大于 1.0.0 版本,小于 2.0.0 版本
        # 如,1.1.0 , 返回 True
        {{- if  (semverCompare "^1.0.0" $listsql )  }}
            {{ ($files.Glob $path).AsConfig | indent 2 }}
        {{- end }} 

    {{ end }} # end if listsql
{{ end }} # end range
Copyright © 温玉 2021 | 浙ICP备2020032454号 all right reserved,powered by Gitbook该文件修订时间: 2022-01-08 03:09:47

results matching ""

    No results matching ""