Merge pull request #3 from drone-plugins/feature/fixes
Bugfix and added makefile
This commit is contained in:
		
						commit
						b586b84117
					
				
							
								
								
									
										14
									
								
								.drone.yml
									
									
									
									
									
								
							
							
						
						
									
										14
									
								
								.drone.yml
									
									
									
									
									
								
							| @ -1,14 +1,9 @@ | |||||||
| build: | build: | ||||||
|   image: golang:1.5 |   image: golang:1.5 | ||||||
|   environment: |  | ||||||
|     - GO15VENDOREXPERIMENT=1 |  | ||||||
|     - GOOS=linux |  | ||||||
|     - GOARCH=amd64 |  | ||||||
|     - CGO_ENABLED=0 |  | ||||||
|   commands: |   commands: | ||||||
|     - go get |     - make deps | ||||||
|     - go build |     - make build | ||||||
|     - go test |     - make test | ||||||
| 
 | 
 | ||||||
| publish: | publish: | ||||||
|   docker: |   docker: | ||||||
| @ -21,10 +16,9 @@ publish: | |||||||
| 
 | 
 | ||||||
| plugin: | plugin: | ||||||
|   name: GitHub Release |   name: GitHub Release | ||||||
|   desc: Publish files and artifacts to GitHub releases |   desc: Publishs files and artifacts to GitHub Releases | ||||||
|   type: publish |   type: publish | ||||||
|   image: plugins/drone-github-release |   image: plugins/drone-github-release | ||||||
|   labels: |   labels: | ||||||
|     - publish |  | ||||||
|     - github |     - github | ||||||
|     - release |     - release | ||||||
|  | |||||||
							
								
								
									
										6
									
								
								DOCS.md
									
									
									
									
									
								
							
							
						
						
									
										6
									
								
								DOCS.md
									
									
									
									
									
								
							| @ -2,9 +2,9 @@ Use this  plugin for publishing files and artifacts to GitHub releases. You | |||||||
| can override the default configuration with the following parameters: | can override the default configuration with the following parameters: | ||||||
| 
 | 
 | ||||||
| * `api_key` - GitHub oauth token with public_repo or repo permission | * `api_key` - GitHub oauth token with public_repo or repo permission | ||||||
| * `files` - Files to upload to GitHub Release; globs are allowed | * `files` - Files to upload to GitHub Release, globs are allowed | ||||||
| * `base_url` - GitHub base URL; only required for GHE | * `base_url` - GitHub base URL, only required for GHE | ||||||
| * `upload_url` - GitHub upload URL; only required for GHE | * `upload_url` - GitHub upload URL, only required for GHE | ||||||
| 
 | 
 | ||||||
| Sample configuration: | Sample configuration: | ||||||
| 
 | 
 | ||||||
|  | |||||||
							
								
								
									
										10
									
								
								Dockerfile
									
									
									
									
									
								
							
							
						
						
									
										10
									
								
								Dockerfile
									
									
									
									
									
								
							| @ -1,10 +1,14 @@ | |||||||
| # Docker image for the Drone GitHub Release plugin | # Docker image for the Drone GitHub Release plugin | ||||||
| # | # | ||||||
| #     cd $GOPATH/src/github.com/drone-plugins/drone-github-release | #     cd $GOPATH/src/github.com/drone-plugins/drone-github-release | ||||||
| #     GO15VENDOREXPERIMENT=1 CGO_ENABLED=0 go build -a -tags netgo | #     make deps build docker | ||||||
| #     docker build --rm=true -t plugins/drone-github-release . |  | ||||||
| 
 | 
 | ||||||
| FROM alpine:3.2 | FROM alpine:3.2 | ||||||
| RUN apk add -U ca-certificates && rm -rf /var/cache/apk/* | 
 | ||||||
|  | RUN apk update && \ | ||||||
|  |   apk add \ | ||||||
|  |     ca-certificates && \ | ||||||
|  |   rm -rf /var/cache/apk/* | ||||||
|  | 
 | ||||||
| ADD drone-github-release /bin/ | ADD drone-github-release /bin/ | ||||||
| ENTRYPOINT ["/bin/drone-github-release"] | ENTRYPOINT ["/bin/drone-github-release"] | ||||||
|  | |||||||
							
								
								
									
										25
									
								
								Makefile
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										25
									
								
								Makefile
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,25 @@ | |||||||
|  | .PHONY: clean deps test build docker | ||||||
|  | 
 | ||||||
|  | export GOOS ?= linux | ||||||
|  | export GOARCH ?= amd64 | ||||||
|  | export CGO_ENABLED ?= 0 | ||||||
|  | 
 | ||||||
|  | CI_BUILD_NUMBER ?= 0 | ||||||
|  | 
 | ||||||
|  | LDFLAGS += -X "main.buildDate=$(shell date -u '+%Y-%m-%d %H:%M:%S %Z')" | ||||||
|  | LDFLAGS += -X "main.build=$(CI_BUILD_NUMBER)" | ||||||
|  | 
 | ||||||
|  | clean: | ||||||
|  | 	go clean -i ./... | ||||||
|  | 
 | ||||||
|  | deps: | ||||||
|  | 	go get -t ./... | ||||||
|  | 
 | ||||||
|  | test: | ||||||
|  | 	go test -cover ./... | ||||||
|  | 
 | ||||||
|  | build: | ||||||
|  | 	go build -ldflags '-s -w $(LDFLAGS)' | ||||||
|  | 
 | ||||||
|  | docker: | ||||||
|  | 	docker build --rm=true -t plugins/drone-github-release . | ||||||
							
								
								
									
										45
									
								
								README.md
									
									
									
									
									
								
							
							
						
						
									
										45
									
								
								README.md
									
									
									
									
									
								
							| @ -1,11 +1,12 @@ | |||||||
| # drone-github-release | # drone-github-release | ||||||
| 
 | 
 | ||||||
|  | [](http://beta.drone.io/drone-plugins/drone-github-release) | ||||||
|  | [](https://imagelayers.io/?images=plugins/drone-github-release:latest 'Get your own badge on imagelayers.io') | ||||||
|  | 
 | ||||||
| Drone plugin for publishing GitHub releases | Drone plugin for publishing GitHub releases | ||||||
| 
 | 
 | ||||||
| ## Usage | ## Usage | ||||||
| 
 | 
 | ||||||
| Publish a release: |  | ||||||
| 
 |  | ||||||
| ``` | ``` | ||||||
| ./drone-github-release <<EOF | ./drone-github-release <<EOF | ||||||
| { | { | ||||||
| @ -23,7 +24,7 @@ Publish a release: | |||||||
|     }, |     }, | ||||||
|     "workspace": { |     "workspace": { | ||||||
|         "root": "/drone/src", |         "root": "/drone/src", | ||||||
|         "path": "drone/src/github.com/drone/drone" |         "path": "/drone/src/github.com/drone/drone" | ||||||
|     }, |     }, | ||||||
|     "vargs": { |     "vargs": { | ||||||
|         "api_key": "your_api_key", |         "api_key": "your_api_key", | ||||||
| @ -38,10 +39,40 @@ EOF | |||||||
| 
 | 
 | ||||||
| ## Docker | ## Docker | ||||||
| 
 | 
 | ||||||
| Build the Docker container using the `netgo` build tag to eliminate the CGO | Build the Docker container using `make`: | ||||||
| dependency: |  | ||||||
| 
 | 
 | ||||||
| ``` | ``` | ||||||
| GO15VENDOREXPERIMENT=1 CGO_ENABLED=0 go build -a -tags netgo | make deps build docker | ||||||
| docker build --rm=true -t plugins/drone-github-release . | ``` | ||||||
|  | 
 | ||||||
|  | ### Example | ||||||
|  | 
 | ||||||
|  | ```sh | ||||||
|  | docker run -i plugins/drone-github-release <<EOF | ||||||
|  | { | ||||||
|  |     "repo": { | ||||||
|  |         "clone_url": "git://github.com/drone/drone", | ||||||
|  |         "full_name": "drone/drone", | ||||||
|  |         "owner": "drone", | ||||||
|  |         "name": "drone" | ||||||
|  |     }, | ||||||
|  |     "build": { | ||||||
|  |         "event": "tag", | ||||||
|  |         "branch": "refs/heads/v0.0.1", | ||||||
|  |         "commit": "8f5d3b2ce38562bedb48b798328f5bb2e4077a2f", | ||||||
|  |         "ref": "refs/heads/v0.0.1" | ||||||
|  |     }, | ||||||
|  |     "workspace": { | ||||||
|  |         "root": "/drone/src", | ||||||
|  |         "path": "/drone/src/github.com/drone/drone" | ||||||
|  |     }, | ||||||
|  |     "vargs": { | ||||||
|  |         "api_key": "your_api_key", | ||||||
|  |         "files": [ | ||||||
|  |             "dist/*.txt", | ||||||
|  |             "dist/other-file" | ||||||
|  |         ] | ||||||
|  |     } | ||||||
|  | } | ||||||
|  | EOF | ||||||
| ``` | ``` | ||||||
|  | |||||||
							
								
								
									
										39
									
								
								main.go
									
									
									
									
									
								
							
							
						
						
									
										39
									
								
								main.go
									
									
									
									
									
								
							| @ -15,23 +15,23 @@ import ( | |||||||
| 	"golang.org/x/oauth2" | 	"golang.org/x/oauth2" | ||||||
| ) | ) | ||||||
| 
 | 
 | ||||||
| type Params struct { | var ( | ||||||
| 	BaseUrl   string   `json:"base_url"` | 	build     string | ||||||
| 	UploadUrl string   `json:"upload_url"` | 	buildDate string | ||||||
| 	APIKey    string   `json:"api_key"` | ) | ||||||
| 	Files     []string `json:"files"` |  | ||||||
| } |  | ||||||
| 
 | 
 | ||||||
| func main() { | func main() { | ||||||
|  | 	fmt.Printf("Drone GitHub Release Plugin built at %s\n", buildDate) | ||||||
|  | 
 | ||||||
| 	workspace := drone.Workspace{} | 	workspace := drone.Workspace{} | ||||||
| 	repo := drone.Repo{} | 	repo := drone.Repo{} | ||||||
| 	build := drone.Build{} | 	build := drone.Build{} | ||||||
| 	vargs := Params{} | 	vargs := Params{} | ||||||
| 
 | 
 | ||||||
|  | 	plugin.Param("workspace", &workspace) | ||||||
| 	plugin.Param("repo", &repo) | 	plugin.Param("repo", &repo) | ||||||
| 	plugin.Param("build", &build) | 	plugin.Param("build", &build) | ||||||
| 	plugin.Param("vargs", &vargs) | 	plugin.Param("vargs", &vargs) | ||||||
| 	plugin.Param("workspace", &workspace) |  | ||||||
| 	plugin.MustParse() | 	plugin.MustParse() | ||||||
| 
 | 
 | ||||||
| 	if build.Event != "tag" { | 	if build.Event != "tag" { | ||||||
| @ -41,10 +41,6 @@ func main() { | |||||||
| 		return | 		return | ||||||
| 	} | 	} | ||||||
| 
 | 
 | ||||||
| 	if len(workspace.Path) != 0 { |  | ||||||
| 		os.Chdir(workspace.Path) |  | ||||||
| 	} |  | ||||||
| 
 |  | ||||||
| 	if len(vargs.BaseUrl) == 0 { | 	if len(vargs.BaseUrl) == 0 { | ||||||
| 		vargs.BaseUrl = "https://api.github.com/" | 		vargs.BaseUrl = "https://api.github.com/" | ||||||
| 	} else { | 	} else { | ||||||
| @ -68,6 +64,10 @@ func main() { | |||||||
| 		return | 		return | ||||||
| 	} | 	} | ||||||
| 
 | 
 | ||||||
|  | 	if len(workspace.Path) != 0 { | ||||||
|  | 		os.Chdir(workspace.Path) | ||||||
|  | 	} | ||||||
|  | 
 | ||||||
| 	files := make([]string, 0) | 	files := make([]string, 0) | ||||||
| 
 | 
 | ||||||
| 	for _, glob := range vargs.Files { | 	for _, glob := range vargs.Files { | ||||||
| @ -116,7 +116,7 @@ func main() { | |||||||
| 	client.BaseURL = baseUrl | 	client.BaseURL = baseUrl | ||||||
| 	client.UploadURL = uploadUrl | 	client.UploadURL = uploadUrl | ||||||
| 
 | 
 | ||||||
| 	release, releaseErr := retrieveRelease( | 	release, releaseErr := prepareRelease( | ||||||
| 		client, | 		client, | ||||||
| 		repo.Owner, | 		repo.Owner, | ||||||
| 		repo.Name, | 		repo.Name, | ||||||
| @ -145,31 +145,24 @@ func main() { | |||||||
| } | } | ||||||
| 
 | 
 | ||||||
| func prepareRelease(client *github.Client, owner string, repo string, tag string) (*github.RepositoryRelease, error) { | func prepareRelease(client *github.Client, owner string, repo string, tag string) (*github.RepositoryRelease, error) { | ||||||
| 	var release *github.RepositoryRelease | 	release, _ := retrieveRelease( | ||||||
| 	var releaseErr error |  | ||||||
| 
 |  | ||||||
| 	release, releaseErr = retrieveRelease( |  | ||||||
| 		client, | 		client, | ||||||
| 		owner, | 		owner, | ||||||
| 		repo, | 		repo, | ||||||
| 		tag) | 		tag) | ||||||
| 
 | 
 | ||||||
| 	if releaseErr != nil { |  | ||||||
| 		return nil, releaseErr |  | ||||||
| 	} |  | ||||||
| 
 |  | ||||||
| 	if release != nil { | 	if release != nil { | ||||||
| 		return release, nil | 		return release, nil | ||||||
| 	} | 	} | ||||||
| 
 | 
 | ||||||
| 	release, releaseErr = createRelease( | 	release, err := createRelease( | ||||||
| 		client, | 		client, | ||||||
| 		owner, | 		owner, | ||||||
| 		repo, | 		repo, | ||||||
| 		tag) | 		tag) | ||||||
| 
 | 
 | ||||||
| 	if releaseErr != nil { | 	if err != nil { | ||||||
| 		return nil, releaseErr | 		return nil, err | ||||||
| 	} | 	} | ||||||
| 
 | 
 | ||||||
| 	if release != nil { | 	if release != nil { | ||||||
|  | |||||||
		Loading…
	
		Reference in New Issue
	
	Block a user