Merge remote-tracking branch 'upstream/master'

This commit is contained in:
Brad Rydzewski 2015-01-13 21:55:29 -08:00
commit 881dcb153e
24 changed files with 294 additions and 104 deletions

View file

@ -1,14 +1,16 @@
SHA := $(shell git rev-parse --short HEAD) SHA := $(shell git rev-parse --short HEAD)
VERSION := $(shell cat VERSION)
ITTERATION := $(shell date +%s)
all: build all: build
deps: deps:
# which npm && npm -g install uglify-js less autoprefixer # which npm && npm -g install uglify-js less autoprefixer
go get github.com/GeertJohan/go.rice/rice go get github.com/GeertJohan/go.rice/rice
go get github.com/franela/goblin
go get -t -v ./... go get -t -v ./...
test: test:
@test -z "$(shell find . -name '*.go' | xargs gofmt -l)" || (echo "Need to run 'go fmt ./...'"; exit 1)
go vet ./... go vet ./...
go test -cover -short ./... go test -cover -short ./...
@ -23,8 +25,8 @@ test_postgres:
build: build:
mkdir -p packaging/output mkdir -p packaging/output
mkdir -p packaging/root/usr/local/bin mkdir -p packaging/root/usr/local/bin
go build -o packaging/root/usr/local/bin/drone -ldflags "-X main.revision $(SHA)" github.com/drone/drone/cli go build -o packaging/root/usr/local/bin/drone -ldflags "-X main.revision $(SHA) -X main.version $(VERSION)" github.com/drone/drone/cli
go build -o packaging/root/usr/local/bin/droned -ldflags "-X main.revision $(SHA)" github.com/drone/drone/server go build -o packaging/root/usr/local/bin/droned -ldflags "-X main.revision $(SHA) -X main.version $(VERSION)" github.com/drone/drone/server
install: install:
install -t /usr/local/bin packaging/root/usr/local/bin/drone install -t /usr/local/bin packaging/root/usr/local/bin/drone
@ -52,9 +54,10 @@ embed:
# creates a debian package for drone to install # creates a debian package for drone to install
# `sudo dpkg -i drone.deb` # `sudo dpkg -i drone.deb`
deb: deb:
fpm -s dir -t deb -n drone -v 0.3 -p packaging/output/drone.deb \ fpm -s dir -t deb -n drone -v $(VERSION) -p packaging/output/drone.deb \
--deb-priority optional --category admin \ --deb-priority optional --category admin \
--force \ --force \
--iteration $(ITTERATION) \
--deb-compression bzip2 \ --deb-compression bzip2 \
--after-install packaging/scripts/postinst.deb \ --after-install packaging/scripts/postinst.deb \
--before-remove packaging/scripts/prerm.deb \ --before-remove packaging/scripts/prerm.deb \
@ -68,9 +71,10 @@ deb:
packaging/root/=/ packaging/root/=/
rpm: rpm:
fpm -s dir -t rpm -n drone -v 0.3 -p packaging/output/drone.rpm \ fpm -s dir -t rpm -n drone -v $(VERSION) -p packaging/output/drone.rpm \
--rpm-compression bzip2 --rpm-os linux \ --rpm-compression bzip2 --rpm-os linux \
--force \ --force \
--iteration $(ITTERATION) \
--after-install packaging/scripts/postinst.rpm \ --after-install packaging/scripts/postinst.rpm \
--before-remove packaging/scripts/prerm.rpm \ --before-remove packaging/scripts/prerm.rpm \
--after-remove packaging/scripts/postrm.rpm \ --after-remove packaging/scripts/postrm.rpm \

View file

@ -1,5 +1,5 @@
[![Build Status](http://test.drone.io/api/badge/github.com/drone/drone/status.svg)](http://test.drone.io/github.com/drone/drone) [![Build Status](http://test.drone.io/api/badge/github.com/drone/drone/status.svg?style=flat)](http://test.drone.io/github.com/drone/drone)
[![GoDoc](https://godoc.org/github.com/drone/drone?status.png)](https://godoc.org/github.com/drone/drone) [![GoDoc](https://godoc.org/github.com/drone/drone?status.svg)](https://godoc.org/github.com/drone/drone)
[![Gitter](https://badges.gitter.im/Join Chat.svg)](https://gitter.im/drone/drone?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge&utm_content=badge) [![Gitter](https://badges.gitter.im/Join Chat.svg)](https://gitter.im/drone/drone?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge&utm_content=badge)
## Documentation ## Documentation
@ -116,6 +116,10 @@ secret=""
url="" url=""
skip_verify=false skip_verify=false
[gogs]
url=""
secret=""
[smtp] [smtp]
host="" host=""
port="" port=""

1
VERSION Normal file
View file

@ -0,0 +1 @@
0.3.0-alpha

View file

@ -7,7 +7,7 @@ import (
var ( var (
// commit sha for the current build. // commit sha for the current build.
version string = "0.3-dev" version string
revision string revision string
) )

View file

@ -53,6 +53,9 @@ datasource="/var/lib/drone/drone.sqlite"
# url="" # url=""
# skip_verify=false # skip_verify=false
# [gogs]
# url=""
# secret=""
##################################################################### #####################################################################
# SMTP configuration for Drone. This is required if you plan # SMTP configuration for Drone. This is required if you plan

View file

@ -5,9 +5,9 @@ import (
"github.com/drone/drone/shared/build/buildfile" "github.com/drone/drone/shared/build/buildfile"
"github.com/drone/drone/shared/build/repo" "github.com/drone/drone/shared/build/repo"
"github.com/drone/drone/plugin/deploy/deis"
"github.com/drone/drone/plugin/deploy/git" "github.com/drone/drone/plugin/deploy/git"
"github.com/drone/drone/plugin/deploy/heroku" "github.com/drone/drone/plugin/deploy/heroku"
"github.com/drone/drone/plugin/deploy/deis"
"github.com/drone/drone/plugin/deploy/modulus" "github.com/drone/drone/plugin/deploy/modulus"
"github.com/drone/drone/plugin/deploy/nodejitsu" "github.com/drone/drone/plugin/deploy/nodejitsu"
"github.com/drone/drone/plugin/deploy/tsuru" "github.com/drone/drone/plugin/deploy/tsuru"

View file

@ -1 +0,0 @@
package publish

View file

@ -0,0 +1,50 @@
package bintray
import (
"github.com/drone/drone/plugin/condition"
"github.com/drone/drone/shared/build/buildfile"
)
type Bintray struct {
Username string `yaml:"username"`
ApiKey string `yaml:"api_key"`
Packages []Package `yaml:"packages"`
Condition *condition.Condition `yaml:"when,omitempty"`
}
func (b *Bintray) Write(f *buildfile.Buildfile) {
var cmd string
// Validate Username, ApiKey, Packages
if len(b.Username) == 0 || len(b.ApiKey) == 0 || len(b.Packages) == 0 {
f.WriteCmdSilent(`echo -e "Bintray Plugin: Missing argument(s)\n\n"`)
if len(b.Username) == 0 {
f.WriteCmdSilent(`echo -e "\tusername not defined in yaml config"`)
}
if len(b.ApiKey) == 0 {
f.WriteCmdSilent(`echo -e "\tapi_key not defined in yaml config"`)
}
if len(b.Packages) == 0 {
f.WriteCmdSilent(`echo -e "\tpackages not defined in yaml config"`)
}
f.WriteCmdSilent("exit 1")
return
}
for _, pkg := range b.Packages {
pkg.Write(b.Username, b.ApiKey, f)
}
f.WriteCmd(cmd)
}
func (b *Bintray) GetCondition() *condition.Condition {
return b.Condition
}

View file

@ -0,0 +1,116 @@
package bintray
import (
"fmt"
"strings"
"github.com/drone/drone/shared/build/buildfile"
)
const bintray_endpoint = "https://api.bintray.com/content/%s/%s/%s/%s/%s"
type Package struct {
File string `yaml:"file"`
Type string `yaml:"type"`
Owner string `yaml:"owner"`
Repository string `yaml:"repository"`
Package string `yaml:"package"`
Version string `yaml:"version"`
Target string `yaml:"target"`
Distr string `yaml:"distr,omitempty"`
Component string `yaml:"component,omitempty"`
Arch []string `yaml:"arch,omitempty"`
Publish bool `yaml:"publish,omitempty"`
Override bool `yaml:"override,omitempty"`
}
func (p *Package) Write(username, api_key string, f *buildfile.Buildfile) {
if len(p.File) == 0 || len(p.Owner) == 0 || len(p.Repository) == 0 || len(p.Package) == 0 || len(p.Version) == 0 || len(p.Target) == 0 {
f.WriteCmdSilent(`echo -e "Bintray Plugin: Missing argument(s)\n\n"`)
if len(p.Package) == 0 {
f.WriteCmdSilent(fmt.Sprintf(`echo -e "\tpackage not defined in yaml config"`))
return
}
if len(p.File) == 0 {
f.WriteCmdSilent(fmt.Sprintf(`echo -e "\tpackage %s: file not defined in yaml config"`, p.Package))
}
if len(p.Owner) == 0 {
f.WriteCmdSilent(fmt.Sprintf(`echo -e "\tpackage %s: owner not defined in yaml config"`, p.Package))
}
if len(p.Repository) == 0 {
f.WriteCmdSilent(fmt.Sprintf(`echo -e "\tpackage %s: repository not defined in yaml config"`, p.Package))
}
if len(p.Version) == 0 {
f.WriteCmdSilent(fmt.Sprintf(`echo -e "\tpackage %s: version not defined in yaml config"`, p.Package))
}
if len(p.Target) == 0 {
f.WriteCmdSilent(fmt.Sprintf(`echo -e "\tpackage %s: target not defined in yaml config"`, p.Package))
}
f.WriteCmdSilent("exit 1")
return
}
switch p.Type {
case "deb":
p.debUpload(username, api_key, f)
case "rpm":
p.upload(username, api_key, f)
case "maven":
p.upload(username, api_key, f)
default:
p.upload(username, api_key, f)
}
}
func (p *Package) debUpload(username, api_key string, f *buildfile.Buildfile) {
if len(p.Distr) == 0 || len(p.Component) == 0 || len(p.Arch) == 0 {
f.WriteCmdSilent(`echo -e "Bintray Plugin: Missing argument(s)\n\n"`)
if len(p.Distr) == 0 {
f.WriteCmdSilent(fmt.Sprintf(`echo -e "\tpackage %s: distr not defined in yaml config"`, p.Package))
}
if len(p.Component) == 0 {
f.WriteCmdSilent(fmt.Sprintf(`echo -e "\tpackage %s: component not defined in yaml config"`, p.Package))
}
if len(p.Arch) == 0 {
f.WriteCmdSilent(fmt.Sprintf(`echo -e "\tpackage %s: arch not defined in yaml config"`, p.Package))
}
f.WriteCmdSilent("exit 1")
return
}
f.WriteCmdSilent(fmt.Sprintf(`echo -e "\nUpload %s to %s/%s/%s"`, p.File, p.Owner, p.Repository, p.Package))
f.WriteCmdSilent(fmt.Sprintf("curl -s -T %s -u%s:%s %s\\;deb_distribution\\=%s\\;deb_component\\=%s\\;deb_architecture=\\%s\\;publish\\=%d\\;override\\=%d",
p.File, username, api_key, p.getEndpoint(), p.Distr, p.Component, strings.Join(p.Arch, ","), boolToInt(p.Publish), boolToInt(p.Override)))
}
func (p *Package) upload(username, api_key string, f *buildfile.Buildfile) {
f.WriteCmdSilent(fmt.Sprintf(`echo -e "\nUpload %s to %s/%s/%s"`, p.File, p.Owner, p.Repository, p.Package))
f.WriteCmdSilent(fmt.Sprintf("curl -s -T %s -u%s:%s %s\\;publish\\=%d\\;override\\=%d",
p.File, username, api_key, p.getEndpoint(), boolToInt(p.Publish), boolToInt(p.Override)))
}
func (p *Package) getEndpoint() string {
return fmt.Sprintf(bintray_endpoint, p.Owner, p.Repository, p.Package, p.Version, p.Target)
}
func boolToInt(val bool) int {
if val {
return 1
} else {
return 0
}
}

View file

@ -99,7 +99,10 @@ func (d *Docker) Write(f *buildfile.Buildfile) {
// Tag and push all tags // Tag and push all tags
for _, tag := range d.Tags { for _, tag := range d.Tags {
if tag != buildImageTag {
f.WriteCmd(fmt.Sprintf("docker tag %s:%s %s:%s", d.ImageName, buildImageTag, d.ImageName, tag)) f.WriteCmd(fmt.Sprintf("docker tag %s:%s %s:%s", d.ImageName, buildImageTag, d.ImageName, tag))
}
f.WriteCmd(fmt.Sprintf("docker push %s:%s", d.ImageName, tag)) f.WriteCmd(fmt.Sprintf("docker push %s:%s", d.ImageName, tag))
} }

View file

@ -2,6 +2,7 @@ package publish
import ( import (
"github.com/drone/drone/plugin/condition" "github.com/drone/drone/plugin/condition"
"github.com/drone/drone/plugin/publish/bintray"
"github.com/drone/drone/plugin/publish/npm" "github.com/drone/drone/plugin/publish/npm"
"github.com/drone/drone/shared/build/buildfile" "github.com/drone/drone/shared/build/buildfile"
"github.com/drone/drone/shared/build/repo" "github.com/drone/drone/shared/build/repo"
@ -18,6 +19,7 @@ type Publish struct {
Docker *Docker `yaml:"docker,omitempty"` Docker *Docker `yaml:"docker,omitempty"`
Github *Github `yaml:"github,omitempty"` Github *Github `yaml:"github,omitempty"`
Dropbox *Dropbox `yaml:"dropbox,omitempty"` Dropbox *Dropbox `yaml:"dropbox,omitempty"`
Bintray *bintray.Bintray `yaml:"bintray,omitempty"`
} }
func (p *Publish) Write(f *buildfile.Buildfile, r *repo.Repo) { func (p *Publish) Write(f *buildfile.Buildfile, r *repo.Repo) {
@ -55,6 +57,11 @@ func (p *Publish) Write(f *buildfile.Buildfile, r *repo.Repo) {
if p.Dropbox != nil && match(p.Dropbox.GetCondition(), r) { if p.Dropbox != nil && match(p.Dropbox.GetCondition(), r) {
p.Dropbox.Write(f) p.Dropbox.Write(f)
} }
// Bintray
if p.Bintray != nil && match(p.Bintray.GetCondition(), r) {
p.Bintray.Write(f)
}
} }
func match(c *condition.Condition, r *repo.Repo) bool { func match(c *condition.Condition, r *repo.Repo) bool {

View file

@ -155,6 +155,7 @@ func (r *Bitbucket) GetRepos(user *model.User) ([]*model.Repo, error) {
// these are the urls required to clone the repository // these are the urls required to clone the repository
// TODO use the bitbucketurl.Host and bitbucketurl.Scheme instead of hardcoding // TODO use the bitbucketurl.Host and bitbucketurl.Scheme instead of hardcoding
// so that we can support Stash. // so that we can support Stash.
var html = fmt.Sprintf("https://bitbucket.org/%s/%s", item.Owner, item.Name)
var clone = fmt.Sprintf("https://bitbucket.org/%s/%s.git", item.Owner, item.Name) var clone = fmt.Sprintf("https://bitbucket.org/%s/%s.git", item.Owner, item.Name)
var ssh = fmt.Sprintf("git@bitbucket.org:%s/%s.git", item.Owner, item.Name) var ssh = fmt.Sprintf("git@bitbucket.org:%s/%s.git", item.Owner, item.Name)
@ -165,6 +166,7 @@ func (r *Bitbucket) GetRepos(user *model.User) ([]*model.Repo, error) {
Owner: item.Owner, Owner: item.Owner,
Name: item.Name, Name: item.Name,
Private: item.Private, Private: item.Private,
URL: html,
CloneURL: clone, CloneURL: clone,
GitURL: clone, GitURL: clone,
SSHURL: ssh, SSHURL: ssh,

View file

@ -1338,6 +1338,7 @@ nav {
font-family:@mono; font-family:@mono;
font-size:13px; font-size:13px;
white-space: pre-wrap; white-space: pre-wrap;
word-break: break-all;
overflow: hidden; overflow: hidden;
line-height:18px; line-height:18px;
} }

View file

@ -1,5 +1,5 @@
<div class="toast" ng-if="msg != undefined"> <div class="toast" ng-if="msg != undefined">
<span ng-if="msg == 'already'">sync already runned</span> <span ng-if="msg == 'already'">sync already in progress</span>
<span ng-if="msg == 'bad'">bad response</span> <span ng-if="msg == 'bad'">bad response</span>
</div> </div>

View file

@ -38,7 +38,7 @@
<section ng-repeat="group in commits | filter: { pull_request: '' } | unique: 'branch'"> <section ng-repeat="group in commits | filter: { pull_request: '' } | unique: 'branch'">
<div class="pure-g cards"> <div class="pure-g cards">
<h2 class="pure-u-1" style="font-size:22px;margin-bottom:20px;"><i class="fa fa-code-fork"></i> {{group.branch}}</h2> <h2 class="pure-u-1" style="font-size:22px;margin-bottom:20px;"><i class="fa fa-code-fork"></i> {{group.branch}}</h2>
<a class="pure-u-1 pure-u-md-1-4 pure-u-lg-1-4 pure-u-xl-1-4 card card" ng-href="/{{ repo | fullPath }}/{{ commit.branch }}/{{ commit.sha }}" ng-repeat="commit in commits | filter: { branch: group.branch } | limitTo:4" data-status="{{ commit.status }}"> <a class="pure-u-1 pure-u-md-1-4 pure-u-lg-1-4 pure-u-xl-1-4 card card" ng-href="/{{ repo | fullPath }}/{{ commit.branch }}/{{ commit.sha }}" ng-repeat="commit in commits | filter:{ branch:group.branch }:true | limitTo:4" data-status="{{ commit.status }}">
<div class="l-box"> <div class="l-box">
<h2>{{ commit.message }}</h2> <h2>{{ commit.message }}</h2>
<em ng-if="commit.finished_at != 0">{{ commit.author }}<br/>{{ commit.finished_at | fromNow }}</em> <em ng-if="commit.finished_at != 0">{{ commit.author }}<br/>{{ commit.finished_at | fromNow }}</em>

View file

@ -1,5 +1,5 @@
<div class="toast" ng-if="msg != undefined"> <div class="toast" ng-if="msg != undefined">
<span ng-if="msg == 'already'">sync already runned</span> <span ng-if="msg == 'already'">sync already in progress</span>
<span ng-if="msg == 'bad'">bad response</span> <span ng-if="msg == 'bad'">bad response</span>
</div> </div>

View file

@ -41,7 +41,7 @@ const (
var ( var (
// commit sha for the current build, set by // commit sha for the current build, set by
// the compile process. // the compile process.
version string = "0.3-dev" version string
revision string revision string
) )