drone-scp
Drone plugin to copy files and artifacts via SSH.
Feature
- Support routines.
- Support send files to multiple host.
- Support send files to multiple target folder on host.
- Support load ssh key from absolute path or raw body.
Build or Download a binary
The pre-compiled binaries can be downloaded from release page. Support the following OS type.
- Windows amd64/386
- Linux amd64/386
- Darwin amd64/386
With Go installed
$ go get -u -v github.com/appleboy/drone-scp
or build the binary with the following command:
$ make build
Docker
Build the docker image with the following commands:
$ make docker
Please note incorrectly building the image for the correct x64 linux and with CGO disabled will result in an error when running the Docker image:
docker: Error response from daemon: Container command
'/bin/drone-scp' not found or does not exist..
Usage
There are three ways to send notification.
Usage from binary
Using public key
drone-scp --host=example.com \
--port=22 \
--username=appleboy \
--key-path="${HOME}/.ssh/id_rsa" \
--target=/home/appleboy/test \
--source=your_local_folder_path
Using password
drone-scp --host=example.com \
--port=22 \
--username=appleboy \
+ --password=xxxxxxx \
--target=/home/appleboy/test \
--source=your_local_folder_path
Using ssh-agent
Start your local ssh agent:
eval `ssh-agent -s`
Import your local public key ~/.ssh/id_rsa
$ ssh-add
You don't need to add --password or --key-path arguments.
drone-scp --host=example.com \
--port=22 \
--username=appleboy \
--target=/home/appleboy/test \
--source=your_local_folder_path
Send multiple source or target folder and hosts
drone-scp --host=example1.com \
+ --host=example2.com \
--port=22 \
--username=appleboy \
--password= xxxxxxx
--target=/home/appleboy/test1 \
+ --target=/home/appleboy/test2 \
--source=your_local_folder_path_1
+ --source=your_local_folder_path_2
Usage from docker
Using public key
docker run --rm \
-e SCP_HOST=example.com \
-e SCP_USERNAME=xxxxxxx \
-e SCP_PORT=22 \
-e SCP_KEY_PATH="${HOME}/.ssh/id_rsa"
-e SCP_SOURCE=SOURCE_FILE_LIST \
-e SCP_TARGET=TARGET_FOLDER_PATH \
-v $(pwd):$(pwd) \
-w $(pwd) \
appleboy/drone-scp
Using password
docker run --rm \
-e SCP_HOST=example.com \
-e SCP_USERNAME=xxxxxxx \
-e SCP_PORT=22 \
+ -e SCP_PASSWORD="xxxxxxx"
-e SCP_SOURCE=SOURCE_FILE_LIST \
-e SCP_TARGET=TARGET_FOLDER_PATH \
-v $(pwd):$(pwd) \
-w $(pwd) \
appleboy/drone-scp
Using ssh-agent
Start your local ssh agent:
eval `ssh-agent -s`
Import your local public key ~/.ssh/id_rsa
$ ssh-add
You don't need to add SCP_PASSWORD or SCP_KEY_PATH arguments.
docker run --rm \
-e SCP_HOST=example.com \
-e SCP_USERNAME=xxxxxxx \
-e SCP_PORT=22 \
-e SCP_SOURCE=SOURCE_FILE_LIST \
-e SCP_TARGET=TARGET_FOLDER_PATH \
-v $(pwd):$(pwd) \
-w $(pwd) \
appleboy/drone-scp
Send multiple source or target folder and hosts
docker run --rm \
-e SCP_HOST=example1.com,example2.com \
-e SCP_USERNAME=xxxxxxx \
-e SCP_PASSWORD=xxxxxxx \
-e SCP_PORT=22 \
-e SCP_SOURCE=SOURCE_FILE_LIST_1,SOURCE_FILE_LIST_2 \
-e SCP_TARGET=TARGET_FOLDER_PATH_1,TARGET_FOLDER_PATH_2 \
-v $(pwd):$(pwd) \
-w $(pwd) \
appleboy/drone-scp
Usage from drone ci
Execute from the working directory:
docker run --rm \
-e PLUGIN_HOST=example.com \
-e PLUGIN_USERNAME=xxxxxxx \
-e PLUGIN_PASSWORD=xxxxxxx \
-e PLUGIN_PORT=xxxxxxx \
-e PLUGIN_KEY="$(cat ${HOME}/.ssh/id_rsa)"
-e PLUGIN_SOURCE=SOURCE_FILE_LIST \
-e PLUGIN_TARGET=TARGET_FOLDER_PATH \
-e PLUGIN_RM=false \
-e PLUGIN_DEBUG=false \
-e DRONE_REPO_OWNER=appleboy \
-e DRONE_REPO_NAME=go-hello \
-e DRONE_COMMIT_SHA=e5e82b5eb3737205c25955dcc3dcacc839b7be52 \
-e DRONE_COMMIT_BRANCH=master \
-e DRONE_COMMIT_AUTHOR=appleboy \
-e DRONE_BUILD_NUMBER=1 \
-e DRONE_BUILD_STATUS=success \
-e DRONE_BUILD_LINK=http://github.com/appleboy/go-hello \
-v $(pwd):$(pwd) \
-w $(pwd) \
appleboy/drone-scp
Testing
Test the package with the following command:
$ make test