From 2fc4d2010d3cee367bfc72509f7eedb51dce99bf Mon Sep 17 00:00:00 2001 From: Joachim Hill-Grannec Date: Fri, 1 Sep 2017 11:14:58 -0400 Subject: [PATCH] Getting Rancher plugin to conform to the current drone-plugins conventions --- .drone.yml | 97 +++++++++++++++++++++++++++++++++++++--------- Dockerfile | 23 ++++++----- Dockerfile.arm | 17 ++++++++ Dockerfile.arm64 | 20 ++++++++++ Dockerfile.windows | 13 +++++++ main.go | 6 ++- 6 files changed, 147 insertions(+), 29 deletions(-) create mode 100644 Dockerfile.arm create mode 100644 Dockerfile.arm64 create mode 100644 Dockerfile.windows diff --git a/.drone.yml b/.drone.yml index a122352..523c5f7 100755 --- a/.drone.yml +++ b/.drone.yml @@ -2,32 +2,93 @@ workspace: base: /go path: src/github.com/josmo/drone-rancher pipeline: - build: - image: golang:1.6 - environment: - - CGO_ENABLED=0 + test: + image: golang:1.9 commands: - go vet - go test -cover -coverprofile=coverage.out - - go build -ldflags "-s -w -X main.build=$DRONE_BUILD_NUMBER" -a -tags netgo - publish: + build_linux_amd64: + image: golang:1.9 + group: build + environment: + - GOOS=linux + - GOARCH=amd64 + - CGO_ENABLED=0 + commands: + - go build -v -ldflags "-X main.build=${DRONE_BUILD_NUMBER}" -a -o release/linux/amd64/drone-rancher + + build_linux_arm64: + image: golang:1.9 + group: build + environment: + - GOOS=linux + - GOARCH=arm64 + - CGO_ENABLED=0 + commands: + - go build -v -ldflags "-X main.build=${DRONE_BUILD_NUMBER}" -a -o release/linux/arm64/drone-rancher + + build_linux_arm: + image: golang:1.9 + group: build + environment: + - GOOS=linux + - GOARCH=arm + - CGO_ENABLED=0 + - GOARM=7 + commands: + - go build -v -ldflags "-X main.build=${DRONE_BUILD_NUMBER}" -a -o release/linux/arm/drone-rancher + + # build_windows_amd64: + # image: golang:1.9-nanoserver + # group: build + # environment: + # - GOOS=windows + # - GOARCH=amd64 + # - CGO_ENABLED=0 + # commands: + # - go build -v -ldflags "-X main.build=${DRONE_BUILD_NUMBER}" -a -o release/windows/amd64/drone-webhook + + publish_linux_amd64: image: plugins/docker username: josmo - secrets: [ docker_password ] repo: peloton/drone-rancher - tag: - - ${DRONE_BUILD_NUMBER} - - latest + tags: [ latest, 1.0.0, 1.0, 1 ] + secrets: [ docker_password ] + dockerfile: Dockerfile when: branch: master event: push -plugin: - name: Rancher - desc: Deploy or update a project on Rancher - type: deploy - image: peloton/rancher - labels: - - rancher - - docker + publish_linux_arm64: + image: plugins/docker + username: josmo + repo: peloton/drone-rancher + tags: [ linux-arm64 ] + secrets: [ docker_password ] + dockerfile: Dockerfile.arm64 + when: + branch: master + event: push + + publish_linux_arm: + image: plugins/docker + username: josmo + repo: peloton/drone-rancher + tags: [ linux-arm ] + secrets: [ docker_password ] + dockerfile: Dockerfile.arm + when: + branch: master + event: push + + # publish_windows_amd64: + # image: plugins/docker + # username: josmo + # repo: peloton/drone-rancher + # tags: [ windows-amd64 ] + # secrets: [ docker_password ] + # dockerfile: Dockerfile.windows + # when: + # branch: master + # event: push diff --git a/Dockerfile b/Dockerfile index 792b952..3370055 100755 --- a/Dockerfile +++ b/Dockerfile @@ -1,11 +1,16 @@ -# Docker image for the Drone build runner -# -# CGO_ENABLED=0 go build -a -tags netgo -# docker build --rm=true -t plugins/drone-rancher . +FROM alpine:3.6 as alpine +RUN apk add -U --no-cache ca-certificates -FROM gliderlabs/alpine:3.2 -RUN apk add --update \ - ca-certificates -ADD drone-rancher /bin/ +FROM scratch + +ENV GODEBUG=netdns=go + +COPY --from=alpine /etc/ssl/certs/ca-certificates.crt /etc/ssl/certs/ + +LABEL org.label-schema.version=latest +LABEL org.label-schema.vcs-url="https://github.com/josmo/drone-rancher.git" +LABEL org.label-schema.name="Drone Rancher" +LABEL org.label-schema.vendor="Josmo" + +ADD release/linux/amd64/drone-rancher /bin/ ENTRYPOINT ["/bin/drone-rancher"] - diff --git a/Dockerfile.arm b/Dockerfile.arm new file mode 100644 index 0000000..4277896 --- /dev/null +++ b/Dockerfile.arm @@ -0,0 +1,17 @@ +FROM alpine:3.6 as alpine +RUN apk add -U --no-cache ca-certificates + +FROM scratch + +ENV GODEBUG=netdns=go + +COPY --from=alpine /etc/ssl/certs/ca-certificates.crt /etc/ssl/certs/ + +LABEL org.label-schema.version=latest +LABEL org.label-schema.vcs-url="https://github.com/josmo/drone-rancher.git" +LABEL org.label-schema.name="Drone Rancher" +LABEL org.label-schema.vendor="Josmo" +LABEL org.label-schema.schema-version="1.0" + +ADD release/linux/arm/drone-rancher /bin/ +ENTRYPOINT ["/bin/drone-rancher"] \ No newline at end of file diff --git a/Dockerfile.arm64 b/Dockerfile.arm64 new file mode 100644 index 0000000..3eba3ba --- /dev/null +++ b/Dockerfile.arm64 @@ -0,0 +1,20 @@ + +FROM alpine:3.6 as alpine +RUN apk add -U --no-cache ca-certificates mailcap + +FROM scratch +MAINTAINER Drone.IO Community + +ENV GODEBUG=netdns=go + +COPY --from=alpine /etc/ssl/certs/ca-certificates.crt /etc/ssl/certs/ +COPY --from=alpine /etc/mime.types /etc/ + +LABEL org.label-schema.version=latest +LABEL org.label-schema.vcs-url="https://github.com/josmo/drone-rancher.git" +LABEL org.label-schema.name="Drone Rancher" +LABEL org.label-schema.vendor="Josmo" +LABEL org.label-schema.schema-version="1.0" + +ADD release/linux/arm64/drone-rancher /bin/ +ENTRYPOINT ["/bin/drone-rancher"] \ No newline at end of file diff --git a/Dockerfile.windows b/Dockerfile.windows new file mode 100644 index 0000000..ae38483 --- /dev/null +++ b/Dockerfile.windows @@ -0,0 +1,13 @@ +FROM microsoft/nanoserver:latest +MAINTAINER Drone.IO Community + +ENV GODEBUG=netdns=go + +LABEL org.label-schema.version=latest +LABEL org.label-schema.vcs-url="https://github.com/josmo/drone-rancher.git" +LABEL org.label-schema.name="Drone Rancher" +LABEL org.label-schema.vendor="Josmo" +LABEL org.label-schema.schema-version="1.0" + +ADD release/windows/amd64/drone-rancher /bin/ +ENTRYPOINT [ "/bin/drone-rancher" ] \ No newline at end of file diff --git a/main.go b/main.go index d94a5b6..0386a30 100755 --- a/main.go +++ b/main.go @@ -2,6 +2,7 @@ package main import ( "github.com/codegangsta/cli" + "fmt" "log" "os" ) @@ -19,14 +20,15 @@ type Rancher struct { BatchSize int64 `json:"batch_size"` } -var version string // build number set at compile-time +var build string // build number set at compile-time func main() { app := cli.NewApp() app.Name = "rancher publish" app.Usage = "rancher publish" app.Action = run - app.Version = version + app.Version = fmt.Sprintf("1.0.0+%s", build) + app.Flags = []cli.Flag{ cli.StringFlag{