Skip to content
This repository was archived by the owner on Dec 31, 2025. It is now read-only.
This repository was archived by the owner on Dec 31, 2025. It is now read-only.

Error when using path option in parent of working_directory #33

@pkyeck

Description

@pkyeck

First I tried to replace the "normal" checkout step with the following

working_directory: ~/project/api

steps:
  - unless:
          condition:
            or:
              - equal: [ true, << pipeline.parameters.ci-changed >> ]
              - equal: [ true, << pipeline.parameters.api-changed >> ]
              - equal: [ true, << pipeline.parameters.common-changed >> ]
          steps:
            - run: 
                name: skip job b/c no changes occured
                command: circleci-agent step halt
  - checkout:
      path: ~/project
  - restore_cache:
      keys:
        - v1-dependencies-api-{{ checksum "yarn.lock" }}
        - v1-dependencies-api-
working_directory: ~/project/api

steps:
  - unless:
          condition:
            or:
              - equal: [ true, << pipeline.parameters.ci-changed >> ]
              - equal: [ true, << pipeline.parameters.api-changed >> ]
              - equal: [ true, << pipeline.parameters.common-changed >> ]
          steps:
            - run: 
                name: skip job b/c no changes occured
                command: circleci-agent step halt
  - git-shallow-clone/checkout:
      path: ~/project
  - restore_cache:
      keys:
        - v1-dependencies-api-{{ checksum "yarn.lock" }}
        - v1-dependencies-api-

But it seems the orb cannot handle the ~/project path correctly and checks out the repo into the wrong folder.
My next step (restore_cache) failed with:

error computing cache key: template: cacheKey:1:23: executing "cacheKey" at <checksum "yarn.lock">: error calling checksum: open /home/circleci/project/api/yarn.lock: no such file or directory

So I changed the path to an absolute path like this:

working_directory: ~/project/api

steps:
  - unless:
          condition:
            or:
              - equal: [ true, << pipeline.parameters.ci-changed >> ]
              - equal: [ true, << pipeline.parameters.api-changed >> ]
              - equal: [ true, << pipeline.parameters.common-changed >> ]
          steps:
            - run: 
                name: skip job b/c no changes occured
                command: circleci-agent step halt
  - git-shallow-clone/checkout:
      path: /home/circleci/project

Now I get the error message: fatal: destination path '/home/circleci/project' already exists and is not an empty directory.

Logging into the machine via ssh and checking the folder show that the ~/project/api was already created (by CircleCI!?).
How does the "normal" checkout command handle this case?

Can we somehow improve the git-shallow-clone/checkout command to handle:

  1. path with ~/... in it
  2. the "path already exists" error

Maybe you have a quick idea or I can try and take a look at how to tackle this.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions