woodpecker/doc/build/clone.md
2015-07-09 17:01:03 -07:00

1.9 KiB

Clone

Drone automatically clones your repository and submodules at the start of your build. No configuration is required. You can, however, use the clone section of the .drone.yml to customize this behavior as needed.

Clone Options

The custom clone options are:

  • depth - creates a shallow clone with truncated history
  • recursive - recursively clones git submodules
  • path - relative path inside /drone/src where the repository is cloned

This is an example yaml configuration:

clone:
  depth: 50
  recursive: true
  path: github.com/drone/drone

Which results in the following command:

git clone --depth=50 --recusive=true \
    https://github.com/drone/drone.git \
    /drone/src/github.com/drone/drone

Clone Private Repos

Cloning a private repository requires authentication to the remote system. Drone prefers git+https and netrc to authenticate, but will fallback to git+ssh and deploy keys if not supported.

Drone prefers git+https for authentication because it allows you to clone multiple private repositories. This is helpful when you have git submodules or third party dependencies you need to download (via go get or npm install or others) that are sourced from a private repository.

Drone only injects the netrc and id_rsa files into your build environment if your repository is private, or running in private mode. We do this for security reasons to avoid leaking sensitive data.

Clone Plugin

You can override the default git plugin by specifying an alternative plugin image. An example use case may be integrating with alternate version control systems, such as mercurial:

clone:
  image: bradrydzewski/hg

  # below are plugin-specific parameters
  path: override/default/clone/path
  insecure: false
  verbose: true

Please reference the official git plugin and use this as a starting point for custom plugin development: https://github.com/drone-plugins/drone-git