add drone-rsync-arm

This commit is contained in:
kev 2017-10-02 11:04:15 +08:00
parent 970d5ee3e8
commit 92fd5d2c4d
4 changed files with 131 additions and 1 deletions

View File

@ -52,6 +52,11 @@ A collection of delicious docker recipes.
- [x] node-red :+1:
- [x] mosquitto :+1:
## Automation
- [x] drone-rsync-arm
- [x] jenkins-arm :beetle:
## Daemon
- [x] alpine-arm :+1:
@ -141,7 +146,6 @@ A collection of delicious docker recipes.
- [x] hugo
- [x] hugo-arm
- [x] jamapi
- [x] jenkins-arm :beetle:
- [x] joomla
- [x] json-server
- [x] magento

View File

@ -0,0 +1,12 @@
#
# Dockerfile for drone-rsync-arm
#
FROM easypi/alpine-arm
MAINTAINER EasyPi Software Foundation
RUN apk add --no-cache bash ca-certificates curl openssh-client rsync
RUN curl -sSL https://github.com/Drillster/drone-rsync/raw/master/upload.sh > /usr/local/bin/upload.sh
RUN chmod +x /usr/local/bin/upload.sh
ENTRYPOINT ["upload.sh"]

21
drone-rsync-arm/LICENSE Normal file
View File

@ -0,0 +1,21 @@
MIT License
Copyright (c) 2016 Drillster BV
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.

93
drone-rsync-arm/README.md Normal file
View File

@ -0,0 +1,93 @@
> 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.
```sh
drone secret add octocat/hello-world RSYNC_KEY @path/to/.ssh/id_rsa
```
Add the secret to your `.drone.yml`:
```yaml
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.
```sh
drone sign octocat/hello-world
```
See the [Secret Guide](http://readme.drone.io/usage/secret-guide/) for additional information on secrets.
## Examples
```yaml
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.
```sh
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.