mirror of
https://github.com/appleboy/drone-ssh.git
synced 2026-06-16 14:49:25 +08:00
Compare commits
5 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| 76fb630345 | |||
| e059b33708 | |||
| bb733a53de | |||
| f725d02d7b | |||
| ac47ca3480 |
+29
-29
@@ -9,7 +9,7 @@ platform:
|
|||||||
steps:
|
steps:
|
||||||
- name: vet
|
- name: vet
|
||||||
pull: always
|
pull: always
|
||||||
image: golang:1.14
|
image: golang:1.15
|
||||||
commands:
|
commands:
|
||||||
- make vet
|
- make vet
|
||||||
volumes:
|
volumes:
|
||||||
@@ -18,7 +18,7 @@ steps:
|
|||||||
|
|
||||||
- name: lint
|
- name: lint
|
||||||
pull: always
|
pull: always
|
||||||
image: golang:1.14
|
image: golang:1.15
|
||||||
commands:
|
commands:
|
||||||
- make lint
|
- make lint
|
||||||
volumes:
|
volumes:
|
||||||
@@ -27,7 +27,7 @@ steps:
|
|||||||
|
|
||||||
- name: misspell
|
- name: misspell
|
||||||
pull: always
|
pull: always
|
||||||
image: golang:1.14
|
image: golang:1.15
|
||||||
commands:
|
commands:
|
||||||
- make misspell-check
|
- make misspell-check
|
||||||
volumes:
|
volumes:
|
||||||
@@ -36,7 +36,7 @@ steps:
|
|||||||
|
|
||||||
- name: test
|
- name: test
|
||||||
pull: always
|
pull: always
|
||||||
image: golang:1.14-alpine
|
image: golang:1.15-alpine
|
||||||
commands:
|
commands:
|
||||||
- apk add git make curl perl bash build-base zlib-dev ucl-dev
|
- apk add git make curl perl bash build-base zlib-dev ucl-dev
|
||||||
- make ssh-server
|
- make ssh-server
|
||||||
@@ -68,9 +68,9 @@ platform:
|
|||||||
steps:
|
steps:
|
||||||
- name: build-push
|
- name: build-push
|
||||||
pull: always
|
pull: always
|
||||||
image: golang:1.14
|
image: golang:1.15
|
||||||
commands:
|
commands:
|
||||||
- go build -v -ldflags '-X main.build=${DRONE_BUILD_NUMBER}' -a -o release/linux/amd64/drone-ssh
|
- "go build -v -ldflags '-X main.build=${DRONE_BUILD_NUMBER}' -a -o release/linux/amd64/drone-ssh"
|
||||||
environment:
|
environment:
|
||||||
CGO_ENABLED: 0
|
CGO_ENABLED: 0
|
||||||
when:
|
when:
|
||||||
@@ -80,9 +80,9 @@ steps:
|
|||||||
|
|
||||||
- name: build-tag
|
- name: build-tag
|
||||||
pull: always
|
pull: always
|
||||||
image: golang:1.14
|
image: golang:1.15
|
||||||
commands:
|
commands:
|
||||||
- go build -v -ldflags '-X main.version=${DRONE_TAG##v} -X main.build=${DRONE_BUILD_NUMBER}' -a -o release/linux/amd64/drone-ssh
|
- "go build -v -ldflags '-X main.version=${DRONE_TAG##v} -X main.build=${DRONE_BUILD_NUMBER}' -a -o release/linux/amd64/drone-ssh"
|
||||||
environment:
|
environment:
|
||||||
CGO_ENABLED: 0
|
CGO_ENABLED: 0
|
||||||
when:
|
when:
|
||||||
@@ -91,7 +91,7 @@ steps:
|
|||||||
|
|
||||||
- name: executable
|
- name: executable
|
||||||
pull: always
|
pull: always
|
||||||
image: golang:1.14
|
image: golang:1.15
|
||||||
commands:
|
commands:
|
||||||
- ./release/linux/amd64/drone-ssh --help
|
- ./release/linux/amd64/drone-ssh --help
|
||||||
|
|
||||||
@@ -130,8 +130,8 @@ steps:
|
|||||||
trigger:
|
trigger:
|
||||||
ref:
|
ref:
|
||||||
- refs/heads/master
|
- refs/heads/master
|
||||||
- refs/pull/**
|
- "refs/pull/**"
|
||||||
- refs/tags/**
|
- "refs/tags/**"
|
||||||
|
|
||||||
depends_on:
|
depends_on:
|
||||||
- testing
|
- testing
|
||||||
@@ -147,9 +147,9 @@ platform:
|
|||||||
steps:
|
steps:
|
||||||
- name: build-push
|
- name: build-push
|
||||||
pull: always
|
pull: always
|
||||||
image: golang:1.14
|
image: golang:1.15
|
||||||
commands:
|
commands:
|
||||||
- go build -v -ldflags '-X main.build=${DRONE_BUILD_NUMBER}' -a -o release/linux/arm64/drone-ssh
|
- "go build -v -ldflags '-X main.build=${DRONE_BUILD_NUMBER}' -a -o release/linux/arm64/drone-ssh"
|
||||||
environment:
|
environment:
|
||||||
CGO_ENABLED: 0
|
CGO_ENABLED: 0
|
||||||
when:
|
when:
|
||||||
@@ -159,9 +159,9 @@ steps:
|
|||||||
|
|
||||||
- name: build-tag
|
- name: build-tag
|
||||||
pull: always
|
pull: always
|
||||||
image: golang:1.14
|
image: golang:1.15
|
||||||
commands:
|
commands:
|
||||||
- go build -v -ldflags '-X main.version=${DRONE_TAG##v} -X main.build=${DRONE_BUILD_NUMBER}' -a -o release/linux/arm64/drone-ssh
|
- "go build -v -ldflags '-X main.version=${DRONE_TAG##v} -X main.build=${DRONE_BUILD_NUMBER}' -a -o release/linux/arm64/drone-ssh"
|
||||||
environment:
|
environment:
|
||||||
CGO_ENABLED: 0
|
CGO_ENABLED: 0
|
||||||
when:
|
when:
|
||||||
@@ -170,7 +170,7 @@ steps:
|
|||||||
|
|
||||||
- name: executable
|
- name: executable
|
||||||
pull: always
|
pull: always
|
||||||
image: golang:1.14
|
image: golang:1.15
|
||||||
commands:
|
commands:
|
||||||
- ./release/linux/arm64/drone-ssh --help
|
- ./release/linux/arm64/drone-ssh --help
|
||||||
|
|
||||||
@@ -209,8 +209,8 @@ steps:
|
|||||||
trigger:
|
trigger:
|
||||||
ref:
|
ref:
|
||||||
- refs/heads/master
|
- refs/heads/master
|
||||||
- refs/pull/**
|
- "refs/pull/**"
|
||||||
- refs/tags/**
|
- "refs/tags/**"
|
||||||
|
|
||||||
depends_on:
|
depends_on:
|
||||||
- testing
|
- testing
|
||||||
@@ -226,9 +226,9 @@ platform:
|
|||||||
steps:
|
steps:
|
||||||
- name: build-push
|
- name: build-push
|
||||||
pull: always
|
pull: always
|
||||||
image: golang:1.14
|
image: golang:1.15
|
||||||
commands:
|
commands:
|
||||||
- go build -v -ldflags '-X main.build=${DRONE_BUILD_NUMBER}' -a -o release/linux/arm/drone-ssh
|
- "go build -v -ldflags '-X main.build=${DRONE_BUILD_NUMBER}' -a -o release/linux/arm/drone-ssh"
|
||||||
environment:
|
environment:
|
||||||
CGO_ENABLED: 0
|
CGO_ENABLED: 0
|
||||||
when:
|
when:
|
||||||
@@ -238,9 +238,9 @@ steps:
|
|||||||
|
|
||||||
- name: build-tag
|
- name: build-tag
|
||||||
pull: always
|
pull: always
|
||||||
image: golang:1.14
|
image: golang:1.15
|
||||||
commands:
|
commands:
|
||||||
- go build -v -ldflags '-X main.version=${DRONE_TAG##v} -X main.build=${DRONE_BUILD_NUMBER}' -a -o release/linux/arm/drone-ssh
|
- "go build -v -ldflags '-X main.version=${DRONE_TAG##v} -X main.build=${DRONE_BUILD_NUMBER}' -a -o release/linux/arm/drone-ssh"
|
||||||
environment:
|
environment:
|
||||||
CGO_ENABLED: 0
|
CGO_ENABLED: 0
|
||||||
when:
|
when:
|
||||||
@@ -249,7 +249,7 @@ steps:
|
|||||||
|
|
||||||
- name: executable
|
- name: executable
|
||||||
pull: always
|
pull: always
|
||||||
image: golang:1.14
|
image: golang:1.15
|
||||||
commands:
|
commands:
|
||||||
- ./release/linux/arm/drone-ssh --help
|
- ./release/linux/arm/drone-ssh --help
|
||||||
|
|
||||||
@@ -288,8 +288,8 @@ steps:
|
|||||||
trigger:
|
trigger:
|
||||||
ref:
|
ref:
|
||||||
- refs/heads/master
|
- refs/heads/master
|
||||||
- refs/pull/**
|
- "refs/pull/**"
|
||||||
- refs/tags/**
|
- "refs/tags/**"
|
||||||
|
|
||||||
depends_on:
|
depends_on:
|
||||||
- testing
|
- testing
|
||||||
@@ -305,7 +305,7 @@ platform:
|
|||||||
steps:
|
steps:
|
||||||
- name: build-all-binary
|
- name: build-all-binary
|
||||||
pull: always
|
pull: always
|
||||||
image: golang:1.14
|
image: golang:1.15
|
||||||
commands:
|
commands:
|
||||||
- make release
|
- make release
|
||||||
when:
|
when:
|
||||||
@@ -319,14 +319,14 @@ steps:
|
|||||||
api_key:
|
api_key:
|
||||||
from_secret: github_release_api_key
|
from_secret: github_release_api_key
|
||||||
files:
|
files:
|
||||||
- dist/release/*
|
- "dist/release/*"
|
||||||
when:
|
when:
|
||||||
event:
|
event:
|
||||||
- tag
|
- tag
|
||||||
|
|
||||||
trigger:
|
trigger:
|
||||||
ref:
|
ref:
|
||||||
- refs/tags/**
|
- "refs/tags/**"
|
||||||
|
|
||||||
depends_on:
|
depends_on:
|
||||||
- testing
|
- testing
|
||||||
@@ -354,7 +354,7 @@ steps:
|
|||||||
trigger:
|
trigger:
|
||||||
ref:
|
ref:
|
||||||
- refs/heads/master
|
- refs/heads/master
|
||||||
- refs/tags/**
|
- "refs/tags/**"
|
||||||
|
|
||||||
depends_on:
|
depends_on:
|
||||||
- linux-amd64
|
- linux-amd64
|
||||||
|
|||||||
@@ -112,6 +112,8 @@ Example configuration for exporting custom secrets:
|
|||||||
```diff
|
```diff
|
||||||
- name: ssh commands
|
- name: ssh commands
|
||||||
image: appleboy/drone-ssh
|
image: appleboy/drone-ssh
|
||||||
|
environment:
|
||||||
|
commit: ${DRONE_BUILD_NUMBER}
|
||||||
settings:
|
settings:
|
||||||
host: foo.com
|
host: foo.com
|
||||||
username: root
|
username: root
|
||||||
@@ -119,8 +121,10 @@ Example configuration for exporting custom secrets:
|
|||||||
port: 22
|
port: 22
|
||||||
+ envs:
|
+ envs:
|
||||||
- aws_access_key_id
|
- aws_access_key_id
|
||||||
|
- commit
|
||||||
script:
|
script:
|
||||||
- export AWS_ACCESS_KEY_ID=$AWS_ACCESS_KEY_ID
|
- export AWS_ACCESS_KEY_ID=$AWS_ACCESS_KEY_ID
|
||||||
|
- echo $commit
|
||||||
```
|
```
|
||||||
|
|
||||||
Example configuration for stoping script after first failure:
|
Example configuration for stoping script after first failure:
|
||||||
|
|||||||
@@ -8,7 +8,7 @@ DEPLOY_ACCOUNT := appleboy
|
|||||||
DEPLOY_IMAGE := $(EXECUTABLE)
|
DEPLOY_IMAGE := $(EXECUTABLE)
|
||||||
|
|
||||||
TARGETS ?= linux darwin windows
|
TARGETS ?= linux darwin windows
|
||||||
ARCHS ?= amd64 386
|
ARCHS ?= amd64
|
||||||
SOURCES ?= $(shell find . -name "*.go" -type f)
|
SOURCES ?= $(shell find . -name "*.go" -type f)
|
||||||
TAGS ?=
|
TAGS ?=
|
||||||
LDFLAGS ?= -X 'main.Version=$(VERSION)'
|
LDFLAGS ?= -X 'main.Version=$(VERSION)'
|
||||||
|
|||||||
+8
-8
@@ -9,7 +9,7 @@
|
|||||||
steps: [
|
steps: [
|
||||||
{
|
{
|
||||||
name: 'vet',
|
name: 'vet',
|
||||||
image: 'golang:1.14',
|
image: 'golang:1.15',
|
||||||
pull: 'always',
|
pull: 'always',
|
||||||
commands: [
|
commands: [
|
||||||
'make vet',
|
'make vet',
|
||||||
@@ -23,7 +23,7 @@
|
|||||||
},
|
},
|
||||||
{
|
{
|
||||||
name: 'lint',
|
name: 'lint',
|
||||||
image: 'golang:1.14',
|
image: 'golang:1.15',
|
||||||
pull: 'always',
|
pull: 'always',
|
||||||
commands: [
|
commands: [
|
||||||
'make lint',
|
'make lint',
|
||||||
@@ -37,7 +37,7 @@
|
|||||||
},
|
},
|
||||||
{
|
{
|
||||||
name: 'misspell',
|
name: 'misspell',
|
||||||
image: 'golang:1.14',
|
image: 'golang:1.15',
|
||||||
pull: 'always',
|
pull: 'always',
|
||||||
commands: [
|
commands: [
|
||||||
'make misspell-check',
|
'make misspell-check',
|
||||||
@@ -51,7 +51,7 @@
|
|||||||
},
|
},
|
||||||
{
|
{
|
||||||
name: 'test',
|
name: 'test',
|
||||||
image: 'golang:1.14-alpine',
|
image: 'golang:1.15-alpine',
|
||||||
pull: 'always',
|
pull: 'always',
|
||||||
commands: [
|
commands: [
|
||||||
'apk add git make curl perl bash build-base zlib-dev ucl-dev',
|
'apk add git make curl perl bash build-base zlib-dev ucl-dev',
|
||||||
@@ -93,7 +93,7 @@
|
|||||||
steps: [
|
steps: [
|
||||||
{
|
{
|
||||||
name: 'build-push',
|
name: 'build-push',
|
||||||
image: 'golang:1.14',
|
image: 'golang:1.15',
|
||||||
pull: 'always',
|
pull: 'always',
|
||||||
environment: {
|
environment: {
|
||||||
CGO_ENABLED: '0',
|
CGO_ENABLED: '0',
|
||||||
@@ -109,7 +109,7 @@
|
|||||||
},
|
},
|
||||||
{
|
{
|
||||||
name: 'build-tag',
|
name: 'build-tag',
|
||||||
image: 'golang:1.14',
|
image: 'golang:1.15',
|
||||||
pull: 'always',
|
pull: 'always',
|
||||||
environment: {
|
environment: {
|
||||||
CGO_ENABLED: '0',
|
CGO_ENABLED: '0',
|
||||||
@@ -123,7 +123,7 @@
|
|||||||
},
|
},
|
||||||
{
|
{
|
||||||
name: 'executable',
|
name: 'executable',
|
||||||
image: 'golang:1.14',
|
image: 'golang:1.15',
|
||||||
pull: 'always',
|
pull: 'always',
|
||||||
commands: [
|
commands: [
|
||||||
'./release/' + os + '/' + arch + '/' + name + ' --help',
|
'./release/' + os + '/' + arch + '/' + name + ' --help',
|
||||||
@@ -188,7 +188,7 @@
|
|||||||
steps: [
|
steps: [
|
||||||
{
|
{
|
||||||
name: 'build-all-binary',
|
name: 'build-all-binary',
|
||||||
image: 'golang:1.14',
|
image: 'golang:1.15',
|
||||||
pull: 'always',
|
pull: 'always',
|
||||||
commands: [
|
commands: [
|
||||||
'make release'
|
'make release'
|
||||||
|
|||||||
@@ -54,13 +54,25 @@ func escapeArg(arg string) string {
|
|||||||
return "'" + strings.Replace(arg, "'", `'\''`, -1) + "'"
|
return "'" + strings.Replace(arg, "'", `'\''`, -1) + "'"
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (p Plugin) hostPort(host string) (string, string) {
|
||||||
|
hosts := strings.Split(host, ":")
|
||||||
|
port := strconv.Itoa(p.Config.Port)
|
||||||
|
if len(hosts) > 1 {
|
||||||
|
host = hosts[0]
|
||||||
|
port = hosts[1]
|
||||||
|
}
|
||||||
|
|
||||||
|
return host, port
|
||||||
|
}
|
||||||
|
|
||||||
func (p Plugin) exec(host string, wg *sync.WaitGroup, errChannel chan error) {
|
func (p Plugin) exec(host string, wg *sync.WaitGroup, errChannel chan error) {
|
||||||
|
host, port := p.hostPort(host)
|
||||||
// Create MakeConfig instance with remote username, server address and path to private key.
|
// Create MakeConfig instance with remote username, server address and path to private key.
|
||||||
ssh := &easyssh.MakeConfig{
|
ssh := &easyssh.MakeConfig{
|
||||||
Server: host,
|
Server: host,
|
||||||
User: p.Config.Username,
|
User: p.Config.Username,
|
||||||
Password: p.Config.Password,
|
Password: p.Config.Password,
|
||||||
Port: strconv.Itoa(p.Config.Port),
|
Port: port,
|
||||||
Key: p.Config.Key,
|
Key: p.Config.Key,
|
||||||
KeyPath: p.Config.KeyPath,
|
KeyPath: p.Config.KeyPath,
|
||||||
Passphrase: p.Config.Passphrase,
|
Passphrase: p.Config.Passphrase,
|
||||||
|
|||||||
@@ -715,3 +715,62 @@ func TestUseInsecureCipher(t *testing.T) {
|
|||||||
|
|
||||||
assert.Equal(t, unindent(expected), unindent(buffer.String()))
|
assert.Equal(t, unindent(expected), unindent(buffer.String()))
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func TestPlugin_hostPort(t *testing.T) {
|
||||||
|
type fields struct {
|
||||||
|
Config Config
|
||||||
|
Writer io.Writer
|
||||||
|
}
|
||||||
|
type args struct {
|
||||||
|
h string
|
||||||
|
}
|
||||||
|
tests := []struct {
|
||||||
|
name string
|
||||||
|
fields fields
|
||||||
|
args args
|
||||||
|
wantHost string
|
||||||
|
wantPort string
|
||||||
|
}{
|
||||||
|
{
|
||||||
|
name: "default host and port",
|
||||||
|
fields: fields{
|
||||||
|
Config: Config{
|
||||||
|
Port: 22,
|
||||||
|
},
|
||||||
|
},
|
||||||
|
args: args{
|
||||||
|
h: "localhost",
|
||||||
|
},
|
||||||
|
wantHost: "localhost",
|
||||||
|
wantPort: "22",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
name: "different port",
|
||||||
|
fields: fields{
|
||||||
|
Config: Config{
|
||||||
|
Port: 22,
|
||||||
|
},
|
||||||
|
},
|
||||||
|
args: args{
|
||||||
|
h: "localhost:443",
|
||||||
|
},
|
||||||
|
wantHost: "localhost",
|
||||||
|
wantPort: "443",
|
||||||
|
},
|
||||||
|
}
|
||||||
|
for _, tt := range tests {
|
||||||
|
t.Run(tt.name, func(t *testing.T) {
|
||||||
|
p := Plugin{
|
||||||
|
Config: tt.fields.Config,
|
||||||
|
Writer: tt.fields.Writer,
|
||||||
|
}
|
||||||
|
gotHost, gotPort := p.hostPort(tt.args.h)
|
||||||
|
if gotHost != tt.wantHost {
|
||||||
|
t.Errorf("Plugin.hostPort() gotHost = %v, want %v", gotHost, tt.wantHost)
|
||||||
|
}
|
||||||
|
if gotPort != tt.wantPort {
|
||||||
|
t.Errorf("Plugin.hostPort() gotPort = %v, want %v", gotPort, tt.wantPort)
|
||||||
|
}
|
||||||
|
})
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user