diff --git a/DOCS.md b/0-DOCS.md similarity index 100% rename from DOCS.md rename to 0-DOCS.md diff --git a/1-DOCS.md b/1-DOCS.md new file mode 100644 index 0000000..e0530c8 --- /dev/null +++ b/1-DOCS.md @@ -0,0 +1,86 @@ +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 + +## Secrets +The following secrets can be used to secure the sensitive parts of your configuration: +- **rsync_key** - private SSH key for the remote machines +- **rsync_user** - user to log in as on the remote machines + +It is highly recommended to put your private key into a secret (`rsync_key`) so it is not exposed to users. This can be done using the drone-cli: + +```sh +drone secret add \ + --repository your/repo \ + --name rsync_key \ + --value @./id_rsa \ +``` + +Add the secret to your `.drone.yml`: +```yaml +kind: pipeline + +steps: +- name: rsync + image: drillster/drone-rsync + environment: + RSYNC_KEY: + from_secret: rsync_key + settings: + user: some-user + hosts: + - remote1 + source: ./dist + target: ~/packages + secrets: [ rsync_key ] +``` + +See the [secret guides](https://docs.drone.io/user-guide/secrets/pre-repository/) for additional information on secrets. + +## Examples +```yaml +kind: pipeline +name: default + +steps: +- name: rsync + image: drillster/drone-rsync + environment: + RSYNC_KEY: + from_secret: rsync_key + RSYNC_USER: + from_secret: rsync_user + settings: + 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. + diff --git a/README.md b/README.md index 0e30477..c296860 100644 --- a/README.md +++ b/README.md @@ -3,7 +3,10 @@ This is a pure Bash [Drone](https://github.com/drone/drone) >= 0.5 plugin to sync files to remote hosts. -For more information on how to use the plugin, please take a look at [the docs](https://github.com/Drillster/drone-rsync/blob/master/DOCS.md). +For more information on how to use the plugin, please take a look at the docs: + +- For Drone CI versions `< 1` : https://github.com/Drillster/drone-rsync/blob/master/0-DOCS.md +- For Drone CI versions `>= 1` : https://github.com/Drillster/drone-rsync/blob/master/1-DOCS.md ## Docker Build the docker image by running: