
- Add a Table of Contents section to the English, Simplified Chinese, and Traditional Chinese README files Signed-off-by: appleboy <appleboy.tw@gmail.com>
4.2 KiB
drone-ssh
A Drone plugin for executing commands on remote hosts via SSH. For usage instructions and a list of available options, please refer to the documentation.
Note: Please update your Drone image config path to appleboy/drone-ssh
. The plugins/ssh
image is no longer maintained.
Table of Contents
Breaking Changes
As of v1.5.0
, the command timeout flag has changed to use the Duration
format. See the following example:
pipeline:
scp:
image: ghcr.io/appleboy/drone-ssh
settings:
host:
- example1.com
- example2.com
username: ubuntu
password:
from_secret: ssh_password
port: 22
- command_timeout: 120
+ command_timeout: 2m
script:
- echo "Hello World"
Build or Download a Binary
Pre-compiled binaries are available on the releases page, supporting the following operating systems:
- Windows amd64/386
- Linux arm/amd64/386
- macOS (Darwin) amd64/386
If you have Go
installed:
go install github.com/appleboy/drone-ssh@latest
Or build the binary manually with the following commands:
export GOOS=linux
export GOARCH=amd64
export CGO_ENABLED=0
export GO111MODULE=on
go test -cover ./...
go build -v -a -tags netgo -o release/linux/amd64/drone-ssh .
Docker
Build the Docker image with the following command:
make docker
Usage
Run from your working directory:
docker run --rm \
-e PLUGIN_HOST=foo.com \
-e PLUGIN_USERNAME=root \
-e PLUGIN_KEY="$(cat ${HOME}/.ssh/id_rsa)" \
-e PLUGIN_SCRIPT=whoami \
-v $(pwd):$(pwd) \
-w $(pwd) \
ghcr.io/appleboy/drone-ssh
Mount Key from File Path
Make sure to enable trusted
mode in your project settings (for Drone 0.8 version).
Mount the private key in the volumes
section of your .drone.yml
config:
pipeline:
ssh:
image: ghcr.io/appleboy/drone-ssh
host: xxxxx.com
username: deploy
+ volumes:
+ - /root/drone_rsa:/root/ssh/drone_rsa
key_path: /root/ssh/drone_rsa
script:
- echo "test ssh"
See details in this issue comment.
Configuration
See DOCS.md for examples and full configuration options.
Configuration options are loaded from multiple sources:
- Hardcoded drone-ssh defaults. See main.go CLI Flags for more information.
- From a dotenv file at a path specified by the
PLUGIN_ENV_FILE
environment variable. - From your
.drone.yml
Drone configuration.
Later sources override earlier ones. For example, if PORT
is set in an .env
file committed in the repository or created by previous test steps, it will override the default set in main.go
.