用作 cicd/ssh-action 仓库基础组件
Go to file
Bo-Yi Wu a41d4afc40
chore(protocol): improve IPv6 address. (#268)
* docs: improve documentation and configuration handling

- Clarify valid values for the IP protocol in usage messages for both main application and proxy settings

Signed-off-by: Bo-Yi Wu <appleboy.tw@gmail.com>

* test: improve IPv6 command execution tests

- Add a new test function `TestCommandWithIPv6` to check command execution with an IPv6 address
- Initialize test variables and expected output for the IPv6 command test
- Set up a `Plugin` struct with IPv6 host, user, port, key path, script, and command timeout for testing
- Verify that `plugin.Exec()` returns `nil` (no error) in the IPv6 test
- Assert that the output of the command execution matches the expected output in the IPv6 test

Signed-off-by: Bo-Yi Wu <appleboy.tw@gmail.com>

* test: enhance test suite and CI robustness

- Add support for IPv6 protocol in `TestCommandWithIPv6` test case in `plugin_test.go`

Signed-off-by: Bo-Yi Wu <appleboy.tw@gmail.com>

* update

Signed-off-by: Bo-Yi Wu <appleboy.tw@gmail.com>

* update

Signed-off-by: Bo-Yi Wu <appleboy.tw@gmail.com>

* update

Signed-off-by: Bo-Yi Wu <appleboy.tw@gmail.com>

* update

Signed-off-by: Bo-Yi Wu <appleboy.tw@gmail.com>

* update2

Signed-off-by: Bo-Yi Wu <appleboy.tw@gmail.com>

* update3

Signed-off-by: Bo-Yi Wu <appleboy.tw@gmail.com>

* update4

Signed-off-by: Bo-Yi Wu <appleboy.tw@gmail.com>

* update5

Signed-off-by: Bo-Yi Wu <appleboy.tw@gmail.com>

* update5

Signed-off-by: Bo-Yi Wu <appleboy.tw@gmail.com>

* update5

Signed-off-by: Bo-Yi Wu <appleboy.tw@gmail.com>

---------

Signed-off-by: Bo-Yi Wu <appleboy.tw@gmail.com>
2024-01-21 09:27:49 +08:00
.github chore: refactor build and deployment processes 2024-01-07 17:13:16 +08:00
docker chore: add default user for enhanced security (#267) 2023-12-26 13:29:22 +08:00
images docs: update logo path 2019-03-04 14:28:19 +08:00
tests chore: update sudoers file for improved security and permissions management 2024-01-07 17:21:59 +08:00
.gitignore chore: improve performance and update dependencies 2023-06-04 16:44:10 +08:00
.goreleaser.yaml ci: improve release process and test robustness 2023-05-06 08:16:02 +08:00
.hadolint.yaml chore: add default user for enhanced security (#267) 2023-12-26 13:29:22 +08:00
DOCS.md chore: allows to specify IP protocol (#261) 2023-06-23 16:45:44 +08:00
go.mod chore: update golang.org/x/crypto to v0.18.0 in go.mod file 2024-01-11 20:53:31 +08:00
go.sum chore: update golang.org/x/crypto to v0.18.0 in go.mod file 2024-01-11 20:53:31 +08:00
LICENSE refactor: remove unnecessary files. 2017-01-23 09:24:28 +08:00
main.go chore(protocol): improve IPv6 address. (#268) 2024-01-21 09:27:49 +08:00
Makefile chore(protocol): improve IPv6 address. (#268) 2024-01-21 09:27:49 +08:00
plugin_test.go chore(protocol): improve IPv6 address. (#268) 2024-01-21 09:27:49 +08:00
plugin.go chore(protocol): improve IPv6 address. (#268) 2024-01-21 09:27:49 +08:00
README.md docs: use ghcr.io/appleboy/drone-ssh image for SSH connections 2023-03-28 14:43:00 +08:00

drone-ssh

sshlog

GitHub tag GoDoc Lint and Testing codecov Go Report Card Docker Pulls

Drone plugin to execute commands on a remote host through SSH. For the usage information and a listing of the available options please take a look at the docs.

Note: Please update your image config path to appleboy/drone-ssh for drone. plugins/ssh is no longer maintained.

demo

Breaking changes

v1.5.0: change command timeout flag to Duration. See the following setting:

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

The pre-compiled binaries can be downloaded from release page. Support the following OS type.

  • Windows amd64/386
  • Linux arm/amd64/386
  • Darwin amd64/386

With Go installed

go install github.com/appleboy/drone-ssh@latest

or build the binary with the following command:

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 commands:

make docker

Usage

Execute from the 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

Please make sure that enable the trusted mode in project setting for drone 0.8 version.

trusted mode

Mount private key in volumes setting of .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 the detail of issue comment.

Configuration

See DOCS.md for examples and full configuration options

Configuration options are loaded from multiple sources:

  1. Hardcoded drone-ssh defaults. See main.go CLI Flags for more information.
  2. From a dotenv file at a path specified by the PLUGIN_ENV_FILE environment variable.
  3. From your .drone.yml Drone configuration.

Later sources override previous sources, i.e. if PORT is set in an .env file committed in the repository or created by previous test steps, it will override the default set main.go.