mirror of
https://github.com/appleboy/drone-ssh.git
synced 2025-07-02 21:52:51 +08:00
commit
ff4d8e2fbd
78
.drone.yml
Normal file
78
.drone.yml
Normal file
@ -0,0 +1,78 @@
|
|||||||
|
workspace:
|
||||||
|
base: /srv/app
|
||||||
|
path: src/github.com/appleboy/drone-ssh
|
||||||
|
|
||||||
|
pipeline:
|
||||||
|
clone:
|
||||||
|
image: plugins/git
|
||||||
|
tags: true
|
||||||
|
|
||||||
|
# restore the cache from an sftp server
|
||||||
|
restore_cache:
|
||||||
|
image: appleboy/drone-sftp-cache
|
||||||
|
restore: true
|
||||||
|
mount: [ .glide, vendor ]
|
||||||
|
ignore_branch: true
|
||||||
|
|
||||||
|
test:
|
||||||
|
image: appleboy/golang-testing
|
||||||
|
pull: true
|
||||||
|
environment:
|
||||||
|
TAGS: netgo
|
||||||
|
GOPATH: /srv/app
|
||||||
|
commands:
|
||||||
|
- make dep_install
|
||||||
|
- make vet
|
||||||
|
- make lint
|
||||||
|
- make test
|
||||||
|
- make coverage
|
||||||
|
- make build
|
||||||
|
# build binary for docker image
|
||||||
|
- make static_build
|
||||||
|
when:
|
||||||
|
event: [ push, tag, pull_request ]
|
||||||
|
|
||||||
|
release:
|
||||||
|
image: appleboy/golang-testing
|
||||||
|
pull: true
|
||||||
|
environment:
|
||||||
|
TAGS: netgo
|
||||||
|
GOPATH: /srv/app
|
||||||
|
commands:
|
||||||
|
- make release
|
||||||
|
when:
|
||||||
|
event: [ tag ]
|
||||||
|
branch: [ refs/tags/* ]
|
||||||
|
|
||||||
|
publish_tag:
|
||||||
|
image: plugins/docker
|
||||||
|
repo: ${DRONE_REPO}
|
||||||
|
tags: [ '${DRONE_TAG}' ]
|
||||||
|
when:
|
||||||
|
event: [ tag ]
|
||||||
|
branch: [ refs/tags/* ]
|
||||||
|
|
||||||
|
publish_latest:
|
||||||
|
image: plugins/docker
|
||||||
|
repo: ${DRONE_REPO}
|
||||||
|
tags: [ 'latest' ]
|
||||||
|
when:
|
||||||
|
event: [ push ]
|
||||||
|
branch: [ master ]
|
||||||
|
|
||||||
|
release:
|
||||||
|
image: plugins/github-release
|
||||||
|
files:
|
||||||
|
- dist/release/*
|
||||||
|
when:
|
||||||
|
event: [ tag ]
|
||||||
|
branch: [ refs/tags/* ]
|
||||||
|
|
||||||
|
# rebuild the cache on the sftp server
|
||||||
|
rebuild_cache:
|
||||||
|
image: appleboy/drone-sftp-cache
|
||||||
|
rebuild: true
|
||||||
|
mount: [ .glide, vendor ]
|
||||||
|
ignore_branch: true
|
||||||
|
when:
|
||||||
|
branch: master
|
1
.drone.yml.sig
Normal file
1
.drone.yml.sig
Normal file
@ -0,0 +1 @@
|
|||||||
|
eyJhbGciOiJIUzI1NiJ9.d29ya3NwYWNlOgogIGJhc2U6IC9zcnYvYXBwCiAgcGF0aDogc3JjL2dpdGh1Yi5jb20vYXBwbGVib3kvZHJvbmUtc3NoCgpwaXBlbGluZToKICBjbG9uZToKICAgIGltYWdlOiBwbHVnaW5zL2dpdAogICAgdGFnczogdHJ1ZQoKICAjIHJlc3RvcmUgdGhlIGNhY2hlIGZyb20gYW4gc2Z0cCBzZXJ2ZXIKICByZXN0b3JlX2NhY2hlOgogICAgaW1hZ2U6IGFwcGxlYm95L2Ryb25lLXNmdHAtY2FjaGUKICAgIHJlc3RvcmU6IHRydWUKICAgIG1vdW50OiBbIC5nbGlkZSwgdmVuZG9yIF0KICAgIGlnbm9yZV9icmFuY2g6IHRydWUKCiAgdGVzdDoKICAgIGltYWdlOiBhcHBsZWJveS9nb2xhbmctdGVzdGluZwogICAgcHVsbDogdHJ1ZQogICAgZW52aXJvbm1lbnQ6CiAgICAgIFRBR1M6IG5ldGdvCiAgICAgIEdPUEFUSDogL3Nydi9hcHAKICAgIGNvbW1hbmRzOgogICAgICAtIG1ha2UgZGVwX2luc3RhbGwKICAgICAgLSBtYWtlIHZldAogICAgICAtIG1ha2UgbGludAogICAgICAtIG1ha2UgdGVzdAogICAgICAtIG1ha2UgY292ZXJhZ2UKICAgICAgLSBtYWtlIGJ1aWxkCiAgICAgICMgYnVpbGQgYmluYXJ5IGZvciBkb2NrZXIgaW1hZ2UKICAgICAgLSBtYWtlIHN0YXRpY19idWlsZAogICAgd2hlbjoKICAgICAgZXZlbnQ6IFsgcHVzaCwgdGFnLCBwdWxsX3JlcXVlc3QgXQoKICByZWxlYXNlOgogICAgaW1hZ2U6IGFwcGxlYm95L2dvbGFuZy10ZXN0aW5nCiAgICBwdWxsOiB0cnVlCiAgICBlbnZpcm9ubWVudDoKICAgICAgVEFHUzogbmV0Z28KICAgICAgR09QQVRIOiAvc3J2L2FwcAogICAgY29tbWFuZHM6CiAgICAgIC0gbWFrZSByZWxlYXNlCiAgICB3aGVuOgogICAgICBldmVudDogWyB0YWcgXQogICAgICBicmFuY2g6IFsgcmVmcy90YWdzLyogXQoKICBwdWJsaXNoX3RhZzoKICAgIGltYWdlOiBwbHVnaW5zL2RvY2tlcgogICAgcmVwbzogJHtEUk9ORV9SRVBPfQogICAgdGFnczogWyAnJHtEUk9ORV9UQUd9JyBdCiAgICB3aGVuOgogICAgICBldmVudDogWyB0YWcgXQogICAgICBicmFuY2g6IFsgcmVmcy90YWdzLyogXQoKICBwdWJsaXNoX2xhdGVzdDoKICAgIGltYWdlOiBwbHVnaW5zL2RvY2tlcgogICAgcmVwbzogJHtEUk9ORV9SRVBPfQogICAgdGFnczogWyAnbGF0ZXN0JyBdCiAgICB3aGVuOgogICAgICBldmVudDogWyBwdXNoIF0KICAgICAgYnJhbmNoOiBbIG1hc3RlciBdCgogIHJlbGVhc2U6CiAgICBpbWFnZTogcGx1Z2lucy9naXRodWItcmVsZWFzZQogICAgZmlsZXM6CiAgICAgIC0gZGlzdC9yZWxlYXNlLyoKICAgIHdoZW46CiAgICAgIGV2ZW50OiBbIHRhZyBdCiAgICAgIGJyYW5jaDogWyByZWZzL3RhZ3MvKiBdCgogICMgcmVidWlsZCB0aGUgY2FjaGUgb24gdGhlIHNmdHAgc2VydmVyCiAgcmVidWlsZF9jYWNoZToKICAgIGltYWdlOiBhcHBsZWJveS9kcm9uZS1zZnRwLWNhY2hlCiAgICByZWJ1aWxkOiB0cnVlCiAgICBtb3VudDogWyAuZ2xpZGUsIHZlbmRvciBdCiAgICBpZ25vcmVfYnJhbmNoOiB0cnVlCiAgICB3aGVuOgogICAgICBicmFuY2g6IG1hc3Rlcgo.MvA91xJBP4JoAxLObpbaumlNtzjO_Gc3znDbTRUjAGY
|
18
glide.lock
generated
18
glide.lock
generated
@ -1,10 +1,14 @@
|
|||||||
hash: fa5c3a4bf7b53b8e4cbbb43fb8a33447fc7d67f8cdd7bb8a27ff66e2d0dac47a
|
hash: 0c9184ed3a3b510feedfeb4fa4a119bdfa1a88b5dcfe9977944817a512958d44
|
||||||
updated: 2017-01-23T09:33:16.187136258+08:00
|
updated: 2017-01-23T10:04:51.354467848+08:00
|
||||||
imports:
|
imports:
|
||||||
- name: github.com/joho/godotenv
|
- name: github.com/joho/godotenv
|
||||||
version: a01a834e1654b4c9ca5b3ad05159445cc9c7ad08
|
version: a01a834e1654b4c9ca5b3ad05159445cc9c7ad08
|
||||||
subpackages:
|
subpackages:
|
||||||
- autoload
|
- autoload
|
||||||
|
- name: github.com/stretchr/testify
|
||||||
|
version: 69483b4bd14f5845b5a1e55bca19e954e827f1d0
|
||||||
|
subpackages:
|
||||||
|
- assert
|
||||||
- name: github.com/urfave/cli
|
- name: github.com/urfave/cli
|
||||||
version: 0bdeddeeb0f650497d603c4ad7b20cfe685682f6
|
version: 0bdeddeeb0f650497d603c4ad7b20cfe685682f6
|
||||||
- name: golang.org/x/crypto
|
- name: golang.org/x/crypto
|
||||||
@ -14,4 +18,12 @@ imports:
|
|||||||
- ed25519
|
- ed25519
|
||||||
- ed25519/internal/edwards25519
|
- ed25519/internal/edwards25519
|
||||||
- ssh
|
- ssh
|
||||||
testImports: []
|
testImports:
|
||||||
|
- name: github.com/davecgh/go-spew
|
||||||
|
version: 6d212800a42e8ab5c146b8ace3490ee17e5225f9
|
||||||
|
subpackages:
|
||||||
|
- spew
|
||||||
|
- name: github.com/pmezard/go-difflib
|
||||||
|
version: d8ed2627bdf02c080bf22230dbb337003b7aba2d
|
||||||
|
subpackages:
|
||||||
|
- difflib
|
||||||
|
@ -9,3 +9,7 @@ import:
|
|||||||
- package: golang.org/x/crypto
|
- package: golang.org/x/crypto
|
||||||
subpackages:
|
subpackages:
|
||||||
- ssh
|
- ssh
|
||||||
|
- package: github.com/stretchr/testify
|
||||||
|
version: ^1.1.4
|
||||||
|
subpackages:
|
||||||
|
- assert
|
||||||
|
12
plugin.go
12
plugin.go
@ -1,17 +1,19 @@
|
|||||||
package main
|
package main
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"fmt"
|
"log"
|
||||||
"net"
|
"net"
|
||||||
"os"
|
"os"
|
||||||
"strconv"
|
"strconv"
|
||||||
"strings"
|
"strings"
|
||||||
"time"
|
"time"
|
||||||
|
|
||||||
|
"fmt"
|
||||||
"golang.org/x/crypto/ssh"
|
"golang.org/x/crypto/ssh"
|
||||||
)
|
)
|
||||||
|
|
||||||
type (
|
type (
|
||||||
|
// Config for the plugin.
|
||||||
Config struct {
|
Config struct {
|
||||||
Key string
|
Key string
|
||||||
User string
|
User string
|
||||||
@ -23,14 +25,16 @@ type (
|
|||||||
Script []string
|
Script []string
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Plugin structure
|
||||||
Plugin struct {
|
Plugin struct {
|
||||||
Config Config
|
Config Config
|
||||||
}
|
}
|
||||||
)
|
)
|
||||||
|
|
||||||
|
// Exec executes the plugin.
|
||||||
func (p Plugin) Exec() error {
|
func (p Plugin) Exec() error {
|
||||||
if p.Config.Key == "" && p.Config.Password == "" {
|
if p.Config.Key == "" && p.Config.Password == "" {
|
||||||
return fmt.Errorf("Error: Can't connect without a private SSH key or password.")
|
return fmt.Errorf("Error: can't connect without a private SSH key or password")
|
||||||
}
|
}
|
||||||
|
|
||||||
for i, host := range p.Config.Host {
|
for i, host := range p.Config.Host {
|
||||||
@ -63,7 +67,7 @@ func (p Plugin) Exec() error {
|
|||||||
Auth: auths,
|
Auth: auths,
|
||||||
}
|
}
|
||||||
|
|
||||||
fmt.Printf("+ ssh %s@%s -p %d\n", p.Config.User, addr, p.Config.Port)
|
log.Printf("+ ssh %s@%s -p %d\n", p.Config.User, addr, p.Config.Port)
|
||||||
client, err := ssh.Dial("tcp", addr, config)
|
client, err := ssh.Dial("tcp", addr, config)
|
||||||
|
|
||||||
if err != nil {
|
if err != nil {
|
||||||
@ -86,7 +90,7 @@ func (p Plugin) Exec() error {
|
|||||||
}
|
}
|
||||||
|
|
||||||
if p.Config.Sleep != 0 && i != len(p.Config.Host)-1 {
|
if p.Config.Sleep != 0 && i != len(p.Config.Host)-1 {
|
||||||
fmt.Printf("+ sleep %d\n", p.Config.Sleep)
|
log.Printf("+ sleep %d\n", p.Config.Sleep)
|
||||||
time.Sleep(time.Duration(p.Config.Sleep) * time.Second)
|
time.Sleep(time.Duration(p.Config.Sleep) * time.Second)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user