2017-01-03 16:59:00 +08:00
2016-12-30 21:50:39 +08:00
2016-12-30 12:38:44 +08:00
2016-12-30 13:12:10 +08:00
2016-12-30 13:12:10 +08:00
2016-10-18 10:04:15 +08:00
2016-12-28 11:02:31 +08:00
2016-12-30 13:12:10 +08:00
2016-10-19 16:10:14 +08:00
2016-10-19 14:02:49 +08:00
2016-12-28 15:56:17 +08:00
2016-12-28 15:56:17 +08:00
2016-10-16 21:35:56 +08:00
2016-12-30 10:44:49 +08:00
2017-01-03 16:22:06 +08:00
2017-01-03 16:59:00 +08:00
2016-12-30 21:50:39 +08:00
2017-01-03 16:59:00 +08:00
2017-01-02 21:26:26 +08:00

drone-scp

GoDoc Build Status codecov Go Report Card Docker Pulls

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
Description
Copy files and artifacts via SSH using a binary, docker or Drone CI.
Readme MIT 1.4 MiB
v1.8.0 Latest
2025-04-26 23:43:48 -04:00
Languages
Go 91.6%
Makefile 6.5%
Dockerfile 1.3%
Shell 0.6%