Skip to content

Commit 634f409

Browse files
authored
Merge pull request #3 from rsmitty/master
feat: add drone ci
2 parents fe0614e + cb4b62a commit 634f409

File tree

3 files changed

+147
-32
lines changed

3 files changed

+147
-32
lines changed

.drone.yml

Lines changed: 100 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,100 @@
1+
---
2+
kind: pipeline
3+
name: default
4+
5+
workspace:
6+
base: /go
7+
path: src/github.com/talos-systems/cluster-api-bootstrap-provider-talos
8+
9+
services:
10+
- name: docker
11+
image: docker:19.03-dind
12+
entrypoint:
13+
- dockerd
14+
command:
15+
- --dns=8.8.8.8
16+
- --dns=8.8.4.4
17+
- --mtu=1440
18+
- --log-level=error
19+
privileged: true
20+
volumes:
21+
- name: dockersock
22+
path: /var/run
23+
- name: manifests
24+
path: /tmp/manifests
25+
26+
steps:
27+
- name: fetch
28+
image: docker:git
29+
commands:
30+
- git fetch --tags
31+
when:
32+
event: tag
33+
34+
- name: test
35+
image: autonomy/build-container:latest
36+
commands:
37+
- sleep 5
38+
- make test
39+
volumes:
40+
- name: dockersock
41+
path: /var/run
42+
depends_on:
43+
- fetch
44+
45+
- name: build
46+
image: autonomy/build-container:latest
47+
pull: always
48+
commands:
49+
- make docker-build
50+
volumes:
51+
- name: dockersock
52+
path: /var/run
53+
depends_on:
54+
- test
55+
56+
- name: push
57+
image: autonomy/build-container:latest
58+
pull: always
59+
environment:
60+
DOCKER_USERNAME:
61+
from_secret: docker_username
62+
DOCKER_PASSWORD:
63+
from_secret: docker_password
64+
commands:
65+
- make login
66+
- make docker-push
67+
volumes:
68+
- name: dockersock
69+
path: /var/run
70+
when:
71+
event:
72+
exclude:
73+
- pull_request
74+
depends_on:
75+
- build
76+
77+
- name: release
78+
image: plugins/github-release
79+
settings:
80+
api_key:
81+
from_secret: github_token
82+
draft: true
83+
files:
84+
- /tmp/manifests/*
85+
checksum:
86+
- sha256
87+
- sha512
88+
volumes:
89+
- name: manifests
90+
path: /tmp/manifests
91+
depends_on:
92+
- push
93+
when:
94+
event: tag
95+
96+
volumes:
97+
- name: dockersock
98+
temp: {}
99+
- name: manifests
100+
temp: {}

Dockerfile

Lines changed: 31 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -1,26 +1,40 @@
1-
# Build the manager binary
2-
FROM golang:1.12.10 as builder
1+
ARG KUBEBUILDER_VERSION=2.0.0
2+
3+
FROM golang:1.13-alpine as base
4+
RUN apk add --no-cache make curl git
35

4-
WORKDIR /workspace
6+
FROM base AS modules
7+
ENV GO111MODULE on
58
ENV GOPROXY https://proxy.golang.org
6-
# Copy the Go Modules manifests
7-
COPY go.mod go.mod
8-
COPY go.sum go.sum
9-
# cache deps before building and copying source so that we don't need to re-download as much
10-
# and so that source changes don't invalidate our downloaded layer
9+
ENV CGO_ENABLED 0
10+
WORKDIR /go/src/github.com/talos-systems/cluster-api-bootstrap-provider-talos
11+
COPY ./go.mod ./
12+
COPY ./go.sum ./
1113
RUN go mod download
12-
13-
# Copy the go source
14+
RUN go mod verify
15+
COPY ./api ./api
16+
COPY ./config ./config
17+
COPY ./controllers ./controllers
18+
COPY ./hack ./hack
1419
COPY main.go main.go
15-
COPY api/ api/
16-
COPY controllers/ controllers/
20+
COPY Makefile Makefile
21+
COPY PROJECT PROJECT
22+
RUN go mod vendor
23+
RUN go list -mod=readonly all >/dev/null
24+
RUN ! go mod tidy -v 2>&1 | grep .
1725

18-
# Build
26+
FROM modules AS test
27+
RUN mkdir -p /usr/local/kubebuilder/bin
28+
ARG KUBEBUILDER_VERSION
29+
RUN curl -L https://github.com/kubernetes-sigs/kubebuilder/releases/download/v${KUBEBUILDER_VERSION}/kubebuilder_${KUBEBUILDER_VERSION}_linux_amd64.tar.gz | tar -xvz --strip-components=2 -C /usr/local/kubebuilder/bin
30+
RUN make generate fmt vet manifests && go test ./... -coverprofile cover.out
31+
32+
# Build the manager binary
33+
FROM test AS build
1934
RUN CGO_ENABLED=0 GOOS=linux GOARCH=amd64 GO111MODULE=on go build -a -o manager main.go
2035

21-
# Use distroless as minimal base image to package the manager binary
22-
# Refer to https://github.com/GoogleContainerTools/distroless for more details
23-
FROM gcr.io/distroless/static:latest
36+
# Copy the controller-manager into a thin image
37+
FROM scratch
2438
WORKDIR /
25-
COPY --from=builder /workspace/manager .
39+
COPY --from=build /go/src/github.com/talos-systems/cluster-api-bootstrap-provider-talos/manager .
2640
ENTRYPOINT ["/manager"]

Makefile

Lines changed: 16 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -1,21 +1,17 @@
1+
TAG ?= $(shell gitmeta image tag)
2+
REPO ?= autonomy/cluster-api-provider-talos
3+
14

25
# Image URL to use all building/pushing image targets
3-
IMG ?= rsmitty/cluster-api-talos-controller:latest
6+
IMG ?= $(REPO):$(TAG)
47
# Produce CRDs that work back to Kubernetes 1.11 (no version conversion)
58
CRD_OPTIONS ?= "crd:trivialVersions=true"
69

7-
# Get the currently used golang install path (in GOPATH/bin, unless GOBIN is set)
8-
ifeq (,$(shell go env GOBIN))
9-
GOBIN=$(shell go env GOPATH)/bin
10-
else
11-
GOBIN=$(shell go env GOBIN)
12-
endif
13-
14-
all: manager
10+
all: test docker-build
1511

1612
# Run tests
17-
test: generate fmt vet manifests
18-
go test ./... -coverprofile cover.out
13+
test:
14+
docker build . --target $@ -t $(REPO):test
1915

2016
# Build manager binary
2117
manager: generate fmt vet
@@ -51,19 +47,24 @@ generate: controller-gen
5147
$(CONTROLLER_GEN) object:headerFile=./hack/boilerplate.go.txt paths="./..."
5248

5349
# Build the docker image
54-
docker-build: generate fmt vet manifests
55-
docker build . -t ${IMG}
50+
docker-build:
51+
@docker build . -t $(REPO):$(TAG)
5652

5753
# Push the docker image
5854
docker-push:
59-
docker push ${IMG}
55+
@docker tag $(REPO):$(TAG) $(REPO):latest
56+
@docker push $(REPO):$(TAG)
57+
@docker push $(REPO):latest
58+
59+
login:
60+
@docker login --username "$(DOCKER_USERNAME)" --password "$(DOCKER_PASSWORD)"
6061

6162
# find or download controller-gen
6263
# download controller-gen if necessary
6364
controller-gen:
6465
ifeq (, $(shell which controller-gen))
6566
go get sigs.k8s.io/controller-tools/cmd/[email protected]
66-
CONTROLLER_GEN=$(GOBIN)/controller-gen
67+
CONTROLLER_GEN=$(GOPATH)/bin/controller-gen
6768
else
6869
CONTROLLER_GEN=$(shell which controller-gen)
6970
endif

0 commit comments

Comments
 (0)