2.8 KiB
A fork of https://github.com/Drillster/drone-rsync
Use the Rsync plugin to synchronize files to remote hosts, and execute arbitrary commands on those hosts.
Config
The following parameters are used to configure the plugin:
- user - user to log in as on the remote machines, defaults to
root
- key - private SSH key for the remote machines
- hosts - hostnames or ip-addresses of the remote machines
- port - port to connect to on the remote machines, defaults to
22
- source - source folder to synchronize from, defaults to
./
- target - target folder on remote machines to synchronize to
- include - rsync include filter
- exclude - rsync exclude filter
- recursive - recursively synchronize, defaults to
false
- delete - delete target folder contents, defaults to
false
- script - list of commands to execute on remote machines
It is highly recommended to put your key into a secret so it is not exposed to users. This can be done using the drone-cli.
drone secret add octocat/hello-world RSYNC_KEY @path/to/.ssh/id_rsa
Add the secret to your .drone.yml
:
pipeline:
rsync:
image: easypi/drone-rsync-arm
user: some-user
key: ${RSYNC_KEY}
hosts:
- remote1
source: ./dist
target: ~/packages
Then sign the YAML file after all secrets are added.
drone sign octocat/hello-world
See the Secret Guide for additional information on secrets.
Examples
pipeline:
rsync:
image: easypi/drone-rsync-arm
user: some-user
key: ${RSYNC_KEY}
hosts:
- remote1
- remote2
source: ./dist
target: ~/packages
include:
- "app.tar.gz"
- "app.tar.gz.md5"
exclude:
- "**.*"
script:
- cd ~/packages
- md5sum -c app.tar.gz.md5
- tar -xf app.tar.gz -C ~/app
The example above illustrates a situation where an app package (app.tar.gz
) will be deployed to 2 remote hosts (remote1
and remote2
). An md5 checksum will be deployed as well. After deploying, the md5 checksum is used to check the deployed package. If successful the package is extracted.
Important
The script passed to script will be executed on remote machines directly after rsync completes to deploy the files. It will be executed step by step until a command returns a non-zero exit-code. If this happens, the entire plugin will exit and fail the build.
SSH key secret in Drone >= 0.6
Secret injection has changed for Drone 0.6 and up. Register your SSH key secret using the drone-cli.
drone secret update \
--repository your/repo \
--name plugin_key \
--value @./id_rsa.pub \
--image easypi/drone-rsync-arm
Do not add a key
parameter in .drone.yml
configuration, but add:
secrets: [ plugin_key ]
Using any other name will not work.