Renaming CI/Packaging things to Fleet (#1556)

This commit is contained in:
Mike Arpaia
2017-10-04 15:28:11 -06:00
committed by GitHub
parent 533258d7c0
commit 80b082ea26
20 changed files with 84 additions and 80 deletions
+1 -1
View File
@@ -1,2 +1,2 @@
*
!build/kolide
!build/fleet
+3 -3
View File
@@ -2,8 +2,8 @@ FROM alpine:3.4
MAINTAINER Kolide Developers <engineering@kolide.co>
RUN apk --update add \
ca-certificates
ca-certificates
COPY ./build/kolide /kolide
COPY ./build/fleet /fleet
CMD ["/kolide", "serve"]
CMD ["/fleet", "serve"]
+5 -5
View File
@@ -6,7 +6,7 @@ BRANCH = $(shell git rev-parse --abbrev-ref HEAD)
REVISION = $(shell git rev-parse HEAD)
REVSHORT = $(shell git rev-parse --short HEAD)
USER = $(shell whoami)
DOCKER_IMAGE_NAME = kolide/kolide
DOCKER_IMAGE_NAME = kolide/fleet
ifneq ($(OS), Windows_NT)
# If on macOS, set the shell to bash explicitly
@@ -15,14 +15,14 @@ ifneq ($(OS), Windows_NT)
endif
# The output binary name is different on Windows, so we're explicit here
OUTPUT = build/kolide
OUTPUT = build/fleet
# To populate version metadata, we use unix tools to get certain data
GOVERSION = $(shell go version | awk '{print $$3}')
NOW = $(shell date -u +"%Y-%m-%dT%H:%M:%SZ")
else
# The output binary name is different on Windows, so we're explicit here
OUTPUT = build/kolide.exe
OUTPUT = build/fleet.exe
# To populate version metadata, we use windows tools to get the certain data
GOVERSION_CMD = "(go version).Split()[2]"
@@ -166,9 +166,9 @@ endif
docker-build-release:
docker build -t "${DOCKER_IMAGE_NAME}:${DOCKER_IMAGE_TAG}" .
docker tag "${DOCKER_IMAGE_NAME}:${DOCKER_IMAGE_TAG}" kolide/kolide:latest
docker tag "${DOCKER_IMAGE_NAME}:${DOCKER_IMAGE_TAG}" kolide/fleet:latest
docker push "${DOCKER_IMAGE_NAME}:${DOCKER_IMAGE_TAG}"
docker push kolide/kolide:latest
docker push kolide/fleet:latest
docker-build-circle:
@echo ">> building docker image"
+3 -3
View File
@@ -25,14 +25,14 @@ dependencies:
override:
# workaround for https://github.com/yarnpkg/yarn/issues/1981
- docker run -v $(pwd):/go/src/github.com/kolide/fleet -v /home/ubuntu/.go_workspace/pkg:/go/pkg --entrypoint /usr/bin/yarn kolide/kolide-builder:1.8 add --force node-sass
- docker run -v $(pwd):/go/src/github.com/kolide/fleet -v /home/ubuntu/.go_workspace/pkg:/go/pkg -v /home/ubuntu/.ssh/id_circleci_github:/tmp/id_rsa kolide/kolide-builder:1.8 --deps
- docker run -v $(pwd):/go/src/github.com/kolide/fleet -v /home/ubuntu/.go_workspace/pkg:/go/pkg --entrypoint /usr/bin/yarn kolide/fleet-builder:1.8 add --force node-sass
- docker run -v $(pwd):/go/src/github.com/kolide/fleet -v /home/ubuntu/.go_workspace/pkg:/go/pkg -v /home/ubuntu/.ssh/id_circleci_github:/tmp/id_rsa kolide/fleet-builder:1.8 --deps
test:
override:
- docker run -d --name redis redis
- docker run -d --name mysql -e MYSQL_ROOT_PASSWORD=toor -e MYSQL_DATABASE=kolide -e MYSQL_USER=kolide -e MYSQL_PASSWORD=kolide mysql:5.7
- docker run --link redis:redis --link mysql:mysql -e MYSQL_TEST=true -e REDIS_TEST=true -v $(pwd):/go/src/github.com/kolide/fleet -v /home/ubuntu/.go_workspace/pkg:/go/pkg kolide/kolide-builder:1.8 --build
- docker run --link redis:redis --link mysql:mysql -e MYSQL_TEST=true -e REDIS_TEST=true -v $(pwd):/go/src/github.com/kolide/fleet -v /home/ubuntu/.go_workspace/pkg:/go/pkg kolide/fleet-builder:1.8 --build
- ./tools/ci/verify-dependencies-docs.sh
- docker stop $(docker ps -a -q)
+11 -11
View File
@@ -24,7 +24,7 @@ start_cloudsql_proxy() {
sleep 5
}
# clones kolide_master into kolide_prNum_revshort
# clones fleet_master into kolide_prNum_revshort
copy_db() {
dbname=$1
@@ -41,17 +41,17 @@ copy_db() {
--user=${CLOUDSQL_USER} \
-h 127.0.0.1 \
--port=3310 \
--set-gtid-purged=OFF kolide_master| \
--set-gtid-purged=OFF fleet_master| \
mysql -p${CLOUDSQL_PASS} \
--user=${CLOUDSQL_USER} \
-h 127.0.0.1 \
--port=3310 $dbname
}
migrate_kolide_db() {
migrate_fleet_db() {
dbname=$1
./build/kolide prepare db --no-prompt \
./build/fleet prepare db --no-prompt \
--mysql_address=127.0.0.1:3310 \
--mysql_database=${dbname} \
--mysql_username=${CLOUDSQL_USER} \
@@ -79,8 +79,8 @@ deploy_pr() {
echo "Deployed PR ${CIRCLE_PR_NUMBER}, commit ${CIRCLE_SHA1}" | \
$slacktee \
-c engineering \
--title "${CIRCLE_PR_NUMBER}.kolide.kolide.net" \
--link "https://${CIRCLE_PR_NUMBER}.kolide.kolide.net" \
--title "${CIRCLE_PR_NUMBER}.fleet.kolide.net" \
--link "https://${CIRCLE_PR_NUMBER}.fleet.kolide.net" \
-m full \
-a good \
-p
@@ -99,8 +99,8 @@ deploy_branch() {
echo "Deployed Branch ${branch}, commit ${CIRCLE_SHA1}" | \
$slacktee \
-c engineering \
--title "${branch}.kolide.kolide.net" \
--link "https://${branch}.kolide.kolide.net" \
--title "${branch}.fleet.kolide.net" \
--link "https://${branch}.fleet.kolide.net" \
-m full \
-a good \
-p
@@ -110,13 +110,13 @@ main() {
start_cloudsql_proxy
if [ -z ${CIRCLE_PR_NUMBER} ]; then
dbname="kolide_master"
migrate_kolide_db "${dbname}"
dbname="fleet_master"
migrate_fleet_db "${dbname}"
deploy_branch "master"
else
dbname="pr_${CIRCLE_PR_NUMBER}_${REVSHORT}"
copy_db "${dbname}"
migrate_kolide_db "${dbname}"
migrate_fleet_db "${dbname}"
deploy_pr
fi
+2 -2
View File
@@ -1,7 +1,7 @@
#!/bin/bash
snapshot="$(date +%s)"
aptly repo add kolide /deb
aptly snapshot create "${snapshot}" from repo kolide
aptly repo add fleet /deb
aptly snapshot create "${snapshot}" from repo fleet
aptly publish drop jessie
aptly publish -gpg-key="000CF27C" --distribution="jessie" snapshot "${snapshot}"
@@ -10,7 +10,7 @@ Usage: ${base} [args]
-D,--deps : Build dependencies
-B,--build : Build a release
-T,--test : Run 'make test'
make [option] : Run any kolide Makefile command
make [option] : Run any fleet Makefile command
EOUSAGE
}
+18
View File
@@ -0,0 +1,18 @@
.PHONY: build fleet-builder push
GO_VERSION = 1.8
all: clean build
build: fleet-builder
fleet-builder:
# copy node-sass artifacts into rootfs
cd $(GO_VERSION) && \
docker build -t kolide/fleet-builder:$(GO_VERSION) .
push:
docker push kolide/fleet-builder:$(GO_VERSION)
clean:
rm -rf build
@@ -7,19 +7,23 @@ Usage: builder.sh [args]
```
### Caching pkg folder
If you're repeatedly testing the build on a development machine, it makes sense to mount the `$GOPATH/pkg` along with your source.
```
docker run --rm -it -v (pwd):/go/src/github.com/kolide/fleet -v $GOPATH/pkg:/go/pkg kolide-builder -T
docker run --rm -it -v (pwd):/go/src/github.com/kolide/fleet -v $GOPATH/pkg:/go/pkg fleet-builder -T
```
The first time the container runs, `go install` will compile all the dependencies under `$GOPATH/pkg/linux_amd64/...` making future test runs faster.
### Build a binary
Using the `-B,--build` flag will first run the CI build and then create a linux build in `./build/`.
This option is intended to be used followed by `docker build` to build a new release.
# Building the builder
use `make` to create a new container and then `make push` to push the builder to Docker Hub
The Makefile first compiles `node-sass` bindings to work on alpine linux and then builds the `kolide-builder` container with the compiled bindings.
The Makefile first compiles `node-sass` bindings to work on alpine linux and then builds the `fleet-builder` container with the compiled bindings.
Separating the two steps keeps the build container small, but increases the difficulty of building it.
+4 -4
View File
@@ -1,10 +1,10 @@
#!/bin/bash
fpm -s dir -t deb --deb-no-default-config-files -n "kolide" -v ${KOLIDE_VERSION} /pkgroot/usr/=/usr
fpm -s dir -t deb --deb-no-default-config-files -n "fleet" -v ${KOLIDE_VERSION} /pkgroot/usr/=/usr
fpm -s dir -t rpm -n "kolide" -v ${KOLIDE_VERSION} /pkgroot/usr/=/usr
mv kolide* /out
mv fleet* /out
# sign packages
rpmVersion="$(echo ${KOLIDE_VERSION}|sed 's/-/_/g')"
rpm --addsign "/out/kolide-${rpmVersion}-1.x86_64.rpm"
debsigs --sign=origin -k 000CF27C "/out/kolide_${KOLIDE_VERSION}_amd64.deb"
rpm --addsign "/out/fleet-${rpmVersion}-1.x86_64.rpm"
debsigs --sign=origin -k 000CF27C "/out/fleet_${KOLIDE_VERSION}_amd64.deb"
-18
View File
@@ -1,18 +0,0 @@
.PHONY: build kolide-builder push
GO_VERSION = 1.8
all: clean build
build: kolide-builder
kolide-builder:
# copy node-sass artifacts into rootfs
cd $(GO_VERSION) && \
docker build -t kolide/kolide-builder:$(GO_VERSION) .
push:
docker push kolide/kolide-builder:$(GO_VERSION)
clean:
rm -rf build
+1 -1
View File
@@ -27,7 +27,7 @@ curl_binary() {
fi
}
docker_pull "kolide_builder" "kolide/kolide-builder:1.8"
docker_pull "fleet_builder" "kolide/fleet-builder:1.8"
docker_pull "redis" "redis"
docker_pull "mysql" "mysql:5.7"
docker_pull "fpm" "kolide/fpm"
@@ -1,8 +1,8 @@
apiVersion: extensions/v1beta1
kind: Deployment
metadata:
# Kolide {{ .Name }} branch
name: kolide-{{ .Name }}
# Fleet {{ .Name }} branch
name: fleet-{{ .Name }}
spec:
replicas: 1
strategy:
@@ -13,13 +13,13 @@ spec:
template:
metadata:
labels:
app: kolide-{{ .Name }}
app: fleet-{{ .Name }}
spec:
imagePullSecrets:
- name: kolide-hub
containers:
- name: kolide-{{ .Name }}
image: kolide/kolide:{{ .RevShort }}
- name: fleet-{{ .Name }}
image: kolide/fleet:{{ .RevShort }}
imagePullPolicy: Always
resources:
requests:
@@ -29,7 +29,7 @@ spec:
cpu: 500m
memory: 500Mi
command:
- "/kolide"
- "/fleet"
- "serve"
env:
- name: KOLIDE_MYSQL_USERNAME
@@ -45,9 +45,9 @@ spec:
name: cloudsql.cloudmaster
key: password
- name: KOLIDE_MYSQL_DATABASE
value: kolide_{{ .Name }}
value: fleet_{{ .Name }}
- name: KOLIDE_REDIS_ADDRESS
value: redis-kolide-{{ .Name }}:6379
value: redis-fleet-{{ .Name }}:6379
- name: KOLIDE_AUTH_JWT_KEY
value: changeme_fake_jwt_key
ports:
@@ -6,8 +6,8 @@ metadata:
prometheus.io/path: "/metrics"
prometheus.io/port: "8080"
labels:
app: kolide-{{ .Name }}
name: {{ .Name }}-kolide-kolide-net
app: fleet-{{ .Name }}
name: {{ .Name }}-fleet-kolide-net
namespace: default
spec:
ports:
@@ -15,5 +15,5 @@ spec:
protocol: TCP
targetPort: 8080
selector:
app: kolide-{{ .Name }}
app: fleet-{{ .Name }}
sessionAffinity: None
@@ -1,13 +1,13 @@
apiVersion: extensions/v1beta1
kind: Deployment
metadata:
# Kolide pr-{{ .Number }} branch
name: kolide-pr-{{ .Number }}
# Fleet pr-{{ .Number }} branch
name: fleet-pr-{{ .Number }}
spec:
replicas: 1
selector:
matchLabels:
app: kolide-pr-{{ .Number }}
app: fleet-pr-{{ .Number }}
strategy:
type: RollingUpdate
rollingUpdate:
@@ -16,13 +16,13 @@ spec:
template:
metadata:
labels:
app: kolide-pr-{{ .Number }}
app: fleet-pr-{{ .Number }}
spec:
imagePullSecrets:
- name: kolide-hub
containers:
- name: kolide-pr-{{ .Number }}
image: kolide/kolide:dev-{{ .Number }}-{{ .RevShort }}
- name: fleet-pr-{{ .Number }}
image: kolide/fleet:dev-{{ .Number }}-{{ .RevShort }}
imagePullPolicy: Always
resources:
requests:
@@ -32,7 +32,7 @@ spec:
cpu: 500m
memory: 500Mi
command:
- "/kolide"
- "/fleet"
- "serve"
env:
- name: KOLIDE_MYSQL_USERNAME
@@ -50,7 +50,7 @@ spec:
- name: KOLIDE_MYSQL_DATABASE
value: pr_{{ .Number }}_{{ .RevShort }}
- name: KOLIDE_REDIS_ADDRESS
value: redis-kolide-pr-{{ .Number }}:6379
value: redis-fleet-pr-{{ .Number }}:6379
- name: KOLIDE_AUTH_JWT_KEY
value: changeme_fake_jwt_key
ports:
+3 -3
View File
@@ -6,8 +6,8 @@ metadata:
prometheus.io/path: "/metrics"
prometheus.io/port: "8080"
labels:
app: kolide-pr-{{ .Number }}
name: zzzzz{{ .Number }}-kolide-kolide-net
app: fleet-pr-{{ .Number }}
name: zzzzz{{ .Number }}-fleet-kolide-net
namespace: default
spec:
ports:
@@ -15,5 +15,5 @@ spec:
protocol: TCP
targetPort: 8080
selector:
app: kolide-pr-{{ .Number }}
app: fleet-pr-{{ .Number }}
sessionAffinity: None
@@ -2,14 +2,14 @@ apiVersion: extensions/v1beta1
kind: Deployment
metadata:
labels:
name: redis-kolide-pr-{{ .Number }}
name: redis-kolide-pr-{{ .Number }}
name: redis-fleet-pr-{{ .Number }}
name: redis-fleet-pr-{{ .Number }}
spec:
replicas: 1
template:
metadata:
labels:
app: redis-kolide-pr-{{ .Number }}
app: redis-fleet-pr-{{ .Number }}
spec:
containers:
- name: redis
@@ -2,14 +2,14 @@ apiVersion: v1
kind: Service
metadata:
labels:
app: redis-kolide-pr-{{ .Number }}
name: redis-kolide-pr-{{ .Number }}
app: redis-fleet-pr-{{ .Number }}
name: redis-fleet-pr-{{ .Number }}
spec:
ports:
- port: 6379
protocol: TCP
targetPort: 6379
selector:
app: redis-kolide-pr-{{ .Number }}
app: redis-fleet-pr-{{ .Number }}
sessionAffinity: None