Vinaya Nayak
Vinaya Nayak

Reputation: 1291

Yaml : Formatting error in yaml file. expected '<document start>', but found '<block mapping start>

  version: 2.1
  executors:
    docker-publisher:
      environment:
        IMAGE_NAME: vinaya.nayak/mocking-service
      docker:
        - image: circleci/buildpack-deps:stretch
  jobs:
    build:
       executor: docker-publisher
       steps:
         - checkout
         - setup_remote_docker
         - run:
            name: Build Docker image
            command: |
              docker build -t $IMAGE_NAME:latest .
         - run:
            name: Archive Docker image
            command: docker save -o mocking.tar $IMAGE_NAME
         - persist_to_workspace:
              root: .
              paths:
                - ./mocking.tar
  publish-latest:
      executor: docker-publisher
      steps:
        - attach_workspace:
            at: /tmp/workspace
        - setup_remote_docker
        - run:
            name: Load archived Docker image
            command: docker load -i /tmp/workspace/mocking.tar
        - run:
            name: Publish Docker Image to Docker Hub
            command: |
                  echo "$DOCKER_HUB_PASSWORD" | docker login -u "$DOCKER_HUB_USERNAME" --password-stdin
                  docker push docker.kfz42.de/v2/java/mocking-service/$IMAGE_NAME:latest .
workflows:
  version: 2
  build-master:
    jobs:
      - build:
          filters:
           branches:
             only: master
      - publish-latest:
          requires:
            - build
          filters:
            branches:
              only: master

can some one help me with whats wrong with my yaml file. I get the following error. I even tried using yaml formatter and the yaml formatter says that this is a valid yaml file

!/bin/sh -eo pipefail Unable to parse YAML expected '', but found '' in 'string', line 39, column 1: workflows: Warning: This configuration was auto-generated to show you the message above. Don't rerun this job. Rerunning will have no effect. false Exited with code 1

Upvotes: 1

Views: 8398

Answers (2)

Vinaya Nayak
Vinaya Nayak

Reputation: 1291

  version: 2.1
  executors:
    docker-publisher:
      environment:
        IMAGE_NAME: vinaya.nayak/mocking-service
      docker:
        - image: circleci/buildpack-deps:stretch
  jobs:
    build:
       executor: docker-publisher
       steps:
         - checkout
         - setup_remote_docker
         - run:
            name: Build Docker image
            command: |
              docker build -t $IMAGE_NAME:latest .
         - run:
            name: Archive Docker image
            command: docker save -o mocking.tar $IMAGE_NAME
         - persist_to_workspace:
              root: .
              paths:
                - ./mocking.tar
  publish-latest:
      executor: docker-publisher
      steps:
        - attach_workspace:
            at: /tmp/workspace
        - setup_remote_docker
        - run:
            name: Load archived Docker image
            command: docker load -i /tmp/workspace/mocking.tar
        - run:
            name: Publish Docker Image to Docker Hub
            command: |
                  echo "$DOCKER_HUB_PASSWORD" | docker login -u "$DOCKER_HUB_USERNAME" --password-stdin
                  docker push docker.kfz42.de/v2/java/mocking-service/$IMAGE_NAME:latest .
  workflows:
    version: 2
    build-master:
      jobs:
        - build:
            filters:
             branches:
               only: master
        - publish-latest:
            requires:
              - build
            filters:
              branches:
                only: master

I fixed the above problem by indenting workflows with 2 spaces

Upvotes: 1

Anthon
Anthon

Reputation: 76598

Your file starts with a key-value pair indented with two spaces, so you have a root level node that is a mapping. That is fine as long as all other root level are indented two spaces as well.

workflows is not indented, that is why the parser expected a new document.

Upvotes: 1

Related Questions