mirror of
				https://github.com/appleboy/drone-ssh.git
				synced 2025-10-29 00:51:15 +08:00 
			
		
		
		
	Merge d698aa5ea6 into 3932e1a754
				
					
				
			This commit is contained in:
		
						commit
						45cc916ba4
					
				
							
								
								
									
										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 | ||||
| updated: 2017-01-23T09:33:16.187136258+08:00 | ||||
| hash: 0c9184ed3a3b510feedfeb4fa4a119bdfa1a88b5dcfe9977944817a512958d44 | ||||
| updated: 2017-01-23T10:04:51.354467848+08:00 | ||||
| imports: | ||||
| - name: github.com/joho/godotenv | ||||
|   version: a01a834e1654b4c9ca5b3ad05159445cc9c7ad08 | ||||
|   subpackages: | ||||
|   - autoload | ||||
| - name: github.com/stretchr/testify | ||||
|   version: 69483b4bd14f5845b5a1e55bca19e954e827f1d0 | ||||
|   subpackages: | ||||
|   - assert | ||||
| - name: github.com/urfave/cli | ||||
|   version: 0bdeddeeb0f650497d603c4ad7b20cfe685682f6 | ||||
| - name: golang.org/x/crypto | ||||
| @ -14,4 +18,12 @@ imports: | ||||
|   - ed25519 | ||||
|   - ed25519/internal/edwards25519 | ||||
|   - 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 | ||||
|   subpackages: | ||||
|   - ssh | ||||
| - package: github.com/stretchr/testify | ||||
|   version: ^1.1.4 | ||||
|   subpackages: | ||||
|   - assert | ||||
|  | ||||
							
								
								
									
										12
									
								
								plugin.go
									
									
									
									
									
								
							
							
						
						
									
										12
									
								
								plugin.go
									
									
									
									
									
								
							| @ -1,17 +1,19 @@ | ||||
| package main | ||||
| 
 | ||||
| import ( | ||||
| 	"fmt" | ||||
| 	"log" | ||||
| 	"net" | ||||
| 	"os" | ||||
| 	"strconv" | ||||
| 	"strings" | ||||
| 	"time" | ||||
| 
 | ||||
| 	"fmt" | ||||
| 	"golang.org/x/crypto/ssh" | ||||
| ) | ||||
| 
 | ||||
| type ( | ||||
| 	// Config for the plugin.
 | ||||
| 	Config struct { | ||||
| 		Key      string | ||||
| 		User     string | ||||
| @ -23,14 +25,16 @@ type ( | ||||
| 		Script   []string | ||||
| 	} | ||||
| 
 | ||||
| 	// Plugin structure
 | ||||
| 	Plugin struct { | ||||
| 		Config Config | ||||
| 	} | ||||
| ) | ||||
| 
 | ||||
| // Exec executes the plugin.
 | ||||
| func (p Plugin) Exec() error { | ||||
| 	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 { | ||||
| @ -63,7 +67,7 @@ func (p Plugin) Exec() error { | ||||
| 			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) | ||||
| 
 | ||||
| 		if err != nil { | ||||
| @ -86,7 +90,7 @@ func (p Plugin) Exec() error { | ||||
| 		} | ||||
| 
 | ||||
| 		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) | ||||
| 		} | ||||
| 	} | ||||
|  | ||||
		Loading…
	
		Reference in New Issue
	
	Block a user
	 Bo-Yi Wu
						Bo-Yi Wu