心机雅 2021-04-26 09:40 采纳率: 0%
浏览 69

golang解析yaml(内含多行字符串)

apiVersion: opswagon.xbc.io/v1
kind: JenkinsPlugin
metadata:
  name: docker-build-production
spec:
  name: docker-build-production
  title: docker镜像构建上传
  sub_title: docker镜像构建上传
  icon: icon-jingxiang1
  params:
    - name: username
      place_holder: $dbp-username$
    - name: password
      place_holder: $dbp-password$
    - name: isOnline
      place_holder: $dbp-isOnline$
    - name: docker_repository
      place_holder: $dbp-docker_repository$
    - name: docker_tag
      place_holder: $dbp-docker_tag$
    - name: docker_file_path
      place_holder: $dbp-docker_file_path$
    - name: context_path
      place_holder: $dbp-context_path$
    - name: source
      place_holder: $$source[.(\w)+]$$
    - name: branch
        place_holder: $dbp-branch$
  output:
    - name: displayName
      place_holder: $db-out-displayName$
    - name: type
      place_holder: $db-out-type$
    - name: identifier
      place_holder: $db-out-identifier$
    - name: description
      place_holder: $db-out-description$
    - name: jobIdentifier
      place_holder: $db-out-jobIdentifier$
    - name: name
      place_holder: $db-out-name$
  code: |
    stage('$plugin-name$') {
        steps {
            container('docker') {
                script {
                    def context_path = '$dbp-context_path$'
                    if (context_path == '') {
                        context_path = '.'
                    }
                    def file_path = '$dbp-docker_file_path$'
                    if ($dbp-isOnline$) {
                        def now = new Date()
                        file_path = './Dockerfile-'+now.time
                        def the_cmd = "echo '$dbp-docker_file_path$' > #file_path#"
                        the_cmd = the_cmd.replaceAll('file_path', file_path)
                        sh the_cmd
                    }
                    def base_cmd = '''
                    docker build -t $dbp-docker_repository$:$dbp-docker_tag$ #file_path# #context_path# && \
                    docker push $dbp-docker_repository$:$dbp-docker_tag$ && \
                    docker rmi $dbp-docker_repository$:$dbp-docker_tag$
                    '''
                    if ('$dbp-username$' != '') {
                        def addr = '$dbp-docker_repository$'.split('/')[0]
                        def login_cmd = 'docker login #addr# -u $dbp-username$ -p $dbp-password$ && \'
                        login_cmd = login_cmd.replaceAll('#addr#', addr)
                        base_cmd = base_cmd + login_cmd
                    }
                    base_cmd = base_cmd.replaceAll('#file_path#', file_path)
                    base_cmd = base_cmd.replaceAll('#context_path#', context_path)
                    sh base_cmd
                }
            }
        }
    }
  container: docker

这个会报error converting YAML to JSON: yaml: line 28: mapping values are not allowed in this context,但是K8s是能够解析这个yaml文件的,但是golang读的时候读不出来……

  • 写回答

1条回答 默认 最新

  • 心机雅 2021-04-26 09:43
    关注

    阿西吧,是我蠢,有个缩进有问题,打扰了……

    评论

报告相同问题?

悬赏问题

  • ¥20 matlab yalmip kkt 双层优化问题
  • ¥15 如何在3D高斯飞溅的渲染的场景中获得一个可控的旋转物体
  • ¥88 实在没有想法,需要个思路
  • ¥15 MATLAB报错输入参数太多
  • ¥15 python中合并修改日期相同的CSV文件并按照修改日期的名字命名文件
  • ¥15 有赏,i卡绘世画不出
  • ¥15 如何用stata画出文献中常见的安慰剂检验图
  • ¥15 c语言链表结构体数据插入
  • ¥40 使用MATLAB解答线性代数问题
  • ¥15 COCOS的问题COCOS的问题