- Refactor if-else logic to a switch statement for handling SSH authentication methods Signed-off-by: appleboy <appleboy.tw@gmail.com> |
||
|---|---|---|
| .github | ||
| docker | ||
| images | ||
| tests | ||
| .dockerignore | ||
| .gitignore | ||
| .golangci.yaml | ||
| .goreleaser.yaml | ||
| .hadolint.yaml | ||
| DOCS.md | ||
| go.mod | ||
| go.sum | ||
| LICENSE | ||
| main.go | ||
| Makefile | ||
| plugin_test.go | ||
| plugin.go | ||
| README.md | ||
| README.zh-cn.md | ||
| README.zh-tw.md | ||
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_FILEenvironment variable. - From your
.drone.ymlDrone 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.


