Skip to content

Commit 450a0ab

Browse files
authored
Merge pull request #10 from rsmitty/master
chore: move bootstrap provider to our minimized controller template
2 parents bb92306 + 75ec913 commit 450a0ab

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

43 files changed

+810
-481
lines changed

.drone.yml

Lines changed: 102 additions & 51 deletions
Original file line numberDiff line numberDiff line change
@@ -1,59 +1,68 @@
1+
---
2+
kind: secret
3+
name: kubeconfig
4+
5+
get:
6+
path: buildx
7+
name: kubeconfig
8+
19
---
210
kind: pipeline
311
name: default
412

5-
workspace:
6-
base: /go
7-
path: src/github.com/talos-systems/cluster-api-bootstrap-provider-talos
8-
913
services:
1014
- name: docker
1115
image: docker:19.03-dind
1216
entrypoint:
13-
- dockerd
17+
- dockerd
1418
command:
15-
- --dns=8.8.8.8
16-
- --dns=8.8.4.4
17-
- --mtu=1440
18-
- --log-level=error
19+
- --dns=8.8.8.8
20+
- --dns=8.8.4.4
21+
- --log-level=error
1922
privileged: true
2023
volumes:
21-
- name: dockersock
22-
path: /var/run
23-
- name: manifests
24-
path: /tmp/manifests
24+
- name: docker-socket
25+
path: /var/run
2526

2627
steps:
27-
- name: fetch
28-
image: docker:git
29-
commands:
30-
- git fetch --tags
31-
when:
32-
event: tag
33-
34-
- name: test
28+
- name: setup-ci
3529
image: autonomy/build-container:latest
3630
commands:
37-
- sleep 5
38-
- make test
31+
- git fetch --tags
32+
- apk add coreutils
33+
- echo -e "$BUILDX_KUBECONFIG" > /root/.kube/config
34+
- docker buildx create --driver kubernetes --driver-opt replicas=2 --driver-opt namespace=ci --driver-opt image=moby/buildkit:v0.6.2 --name ci --buildkitd-flags="--allow-insecure-entitlement security.insecure" --use
35+
- docker buildx inspect --bootstrap
36+
environment:
37+
BUILDX_KUBECONFIG:
38+
from_secret: kubeconfig
39+
privileged: true
3940
volumes:
40-
- name: dockersock
41+
- name: docker-socket
4142
path: /var/run
42-
depends_on:
43-
- fetch
43+
- name: docker
44+
path: /root/.docker/buildx
45+
- name: kube
46+
path: /root/.kube
4447

45-
- name: build
48+
- name: build-pull-request
4649
image: autonomy/build-container:latest
4750
pull: always
4851
commands:
49-
- make docker-build
52+
- make
53+
when:
54+
event:
55+
include:
56+
- pull_request
5057
volumes:
51-
- name: dockersock
58+
- name: docker-socket
5259
path: /var/run
53-
depends_on:
54-
- test
60+
- name: docker
61+
path: /root/.docker/buildx
62+
- name: kube
63+
path: /root/.kube
5564

56-
- name: push
65+
- name: build-and-publish
5766
image: autonomy/build-container:latest
5867
pull: always
5968
environment:
@@ -62,39 +71,81 @@ steps:
6271
DOCKER_PASSWORD:
6372
from_secret: docker_password
6473
commands:
65-
- make login
66-
- make docker-push
67-
volumes:
68-
- name: dockersock
69-
path: /var/run
74+
- docker login --username "$${DOCKER_USERNAME}" --password "$${DOCKER_PASSWORD}"
75+
- make PUSH=true
7076
when:
7177
event:
7278
exclude:
7379
- pull_request
74-
depends_on:
75-
- build
80+
volumes:
81+
- name: docker-socket
82+
path: /var/run
83+
- name: docker
84+
path: /root/.docker/buildx
85+
- name: kube
86+
path: /root/.kube
87+
88+
- name: build-release
89+
image: autonomy/build-container:latest
90+
pull: always
91+
commands:
92+
- make release
93+
when:
94+
event:
95+
- tag
96+
volumes:
97+
- name: docker-socket
98+
path: /var/run
99+
- name: docker
100+
path: /root/.docker/buildx
101+
- name: kube
102+
path: /root/.kube
76103

77104
- name: release
78105
image: plugins/github-release
79106
settings:
80107
api_key:
81108
from_secret: github_token
82-
draft: true
83-
files:
84-
- /tmp/manifests/*
85109
checksum:
86110
- sha256
87111
- sha512
88-
volumes:
89-
- name: manifests
90-
path: /tmp/manifests
91-
depends_on:
92-
- push
112+
draft: true
113+
files:
114+
- _out/*
93115
when:
94-
event: tag
116+
event:
117+
- tag
95118

96119
volumes:
97-
- name: dockersock
120+
- name: docker-socket
121+
temp: {}
122+
- name: docker
123+
temp: {}
124+
- name: kube
98125
temp: {}
99-
- name: manifests
100-
temp: {}
126+
---
127+
kind: pipeline
128+
name: notify
129+
130+
clone:
131+
disable: true
132+
133+
steps:
134+
- name: slack
135+
image: plugins/slack
136+
settings:
137+
webhook:
138+
from_secret: slack_webhook
139+
channel: proj-talos-maintainers
140+
when:
141+
status:
142+
- success
143+
- failure
144+
145+
trigger:
146+
status:
147+
- success
148+
- failure
149+
150+
depends_on:
151+
- default

Dockerfile

Lines changed: 42 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -1,40 +1,55 @@
1-
ARG KUBEBUILDER_VERSION=2.0.0
1+
# syntax = docker/dockerfile-upstream:1.1.4-experimental
22

3-
FROM golang:1.13-alpine as base
4-
RUN apk add --no-cache make curl git
5-
6-
FROM base AS modules
3+
FROM golang:1.13 AS build
74
ENV GO111MODULE on
85
ENV GOPROXY https://proxy.golang.org
96
ENV CGO_ENABLED 0
10-
WORKDIR /go/src/github.com/talos-systems/cluster-api-bootstrap-provider-talos
7+
WORKDIR /tmp
8+
RUN go get sigs.k8s.io/controller-tools/cmd/[email protected]
9+
WORKDIR /src
1110
COPY ./go.mod ./
1211
COPY ./go.sum ./
1312
RUN go mod download
1413
RUN go mod verify
15-
COPY ./api ./api
16-
COPY ./config ./config
17-
COPY ./controllers ./controllers
18-
COPY ./hack ./hack
19-
COPY main.go main.go
20-
COPY Makefile Makefile
21-
COPY PROJECT PROJECT
22-
RUN go mod vendor
14+
COPY ./ ./
2315
RUN go list -mod=readonly all >/dev/null
2416
RUN ! go mod tidy -v 2>&1 | grep .
2517

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
18+
FROM build AS manifests-build
19+
ARG NAME
20+
RUN controller-gen rbac:roleName=manager-role crd paths="./..." output:rbac:artifacts:config=config/rbac output:crd:artifacts:config=config/crd/bases
21+
FROM scratch AS manifests
22+
COPY --from=manifests-build /src/config/crd /config/crd
23+
COPY --from=manifests-build /src/config/rbac /config/rbac
24+
25+
FROM build AS generate-build
26+
RUN controller-gen object:headerFile=./hack/boilerplate.go.txt paths="./..."
27+
FROM scratch AS generate
28+
COPY --from=generate-build /src/api /api
29+
30+
FROM k8s.gcr.io/hyperkube:v1.17.0 AS release-build
31+
RUN apt update -y \
32+
&& apt install -y curl \
33+
&& curl -LO https://github.com/kubernetes-sigs/kustomize/releases/download/kustomize%2Fv3.4.0/kustomize_v3.4.0_linux_amd64.tar.gz \
34+
&& tar -xf kustomize_v3.4.0_linux_amd64.tar.gz -C /usr/local/bin \
35+
&& rm kustomize_v3.4.0_linux_amd64.tar.gz
36+
COPY ./config ./config
37+
ARG REGISTRY_AND_USERNAME
38+
ARG NAME
39+
ARG TAG
40+
RUN cd config/manager \
41+
&& kustomize edit set image controller=${REGISTRY_AND_USERNAME}/${NAME}:${TAG} \
42+
&& cd - \
43+
&& kubectl kustomize config >/release.yaml
44+
FROM scratch AS release
45+
COPY --from=release-build /release.yaml /release.yaml
3146

32-
# Build the manager binary
33-
FROM test AS build
34-
RUN CGO_ENABLED=0 GOOS=linux GOARCH=amd64 GO111MODULE=on go build -a -o manager main.go
47+
FROM build AS binary
48+
RUN --mount=type=cache,target=/root/.cache/go-build GOOS=linux go build -ldflags "-s -w" -o /manager
49+
RUN chmod +x /manager
3550

36-
# Copy the controller-manager into a thin image
37-
FROM gcr.io/distroless/static:latest
38-
WORKDIR /
39-
COPY --from=build /go/src/github.com/talos-systems/cluster-api-bootstrap-provider-talos/manager .
40-
ENTRYPOINT ["/manager"]
51+
FROM scratch AS container
52+
COPY --from=docker.io/autonomy/ca-certificates:v0.1.0 / /
53+
COPY --from=docker.io/autonomy/fhs:v0.1.0 / /
54+
COPY --from=binary /manager /manager
55+
ENTRYPOINT [ "/manager" ]

0 commit comments

Comments
 (0)