From 80b082ea26429e5bbc3e655d224a4757c7cbb89a Mon Sep 17 00:00:00 2001 From: Mike Arpaia Date: Wed, 4 Oct 2017 15:28:11 -0600 Subject: [PATCH] Renaming CI/Packaging things to Fleet (#1556) --- .dockerignore | 2 +- Dockerfile | 6 ++--- Makefile | 10 ++++----- circle.yml | 6 ++--- tools/ci/deploy-k8s-testing.sh | 22 +++++++++---------- tools/ci/docker/aptly/update.sh | 4 ++-- .../.gitignore | 0 .../1.8/Dockerfile | 0 .../1.8/rootfs/builder.sh | 2 +- tools/ci/docker/fleet-builder/Makefile | 18 +++++++++++++++ .../README.md | 10 ++++++--- tools/ci/docker/fpm/build.sh | 8 +++---- tools/ci/docker/kolide-builder/Makefile | 18 --------------- tools/ci/download-build-deps.sh | 2 +- .../k8s-templates/branch-deployment.template | 16 +++++++------- .../ci/k8s-templates/branch-service.template | 6 ++--- tools/ci/k8s-templates/pr-deployment.template | 16 +++++++------- tools/ci/k8s-templates/pr-service.template | 6 ++--- .../redis-pr-deployment.template | 6 ++--- .../k8s-templates/redis-pr-service.template | 6 ++--- 20 files changed, 84 insertions(+), 80 deletions(-) rename tools/ci/docker/{kolide-builder => fleet-builder}/.gitignore (100%) rename tools/ci/docker/{kolide-builder => fleet-builder}/1.8/Dockerfile (100%) rename tools/ci/docker/{kolide-builder => fleet-builder}/1.8/rootfs/builder.sh (97%) create mode 100644 tools/ci/docker/fleet-builder/Makefile rename tools/ci/docker/{kolide-builder => fleet-builder}/README.md (89%) delete mode 100644 tools/ci/docker/kolide-builder/Makefile diff --git a/.dockerignore b/.dockerignore index d9f16694fa..94bc84c294 100644 --- a/.dockerignore +++ b/.dockerignore @@ -1,2 +1,2 @@ * -!build/kolide +!build/fleet diff --git a/Dockerfile b/Dockerfile index ff48ae5887..0510cad439 100644 --- a/Dockerfile +++ b/Dockerfile @@ -2,8 +2,8 @@ FROM alpine:3.4 MAINTAINER Kolide Developers RUN apk --update add \ - ca-certificates + ca-certificates -COPY ./build/kolide /kolide +COPY ./build/fleet /fleet -CMD ["/kolide", "serve"] +CMD ["/fleet", "serve"] diff --git a/Makefile b/Makefile index a5941e8467..2d1df77edd 100644 --- a/Makefile +++ b/Makefile @@ -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" diff --git a/circle.yml b/circle.yml index 387ba1302b..4696606143 100644 --- a/circle.yml +++ b/circle.yml @@ -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) diff --git a/tools/ci/deploy-k8s-testing.sh b/tools/ci/deploy-k8s-testing.sh index f837fa4bff..f78b8879fa 100755 --- a/tools/ci/deploy-k8s-testing.sh +++ b/tools/ci/deploy-k8s-testing.sh @@ -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 diff --git a/tools/ci/docker/aptly/update.sh b/tools/ci/docker/aptly/update.sh index d5f38cadef..5bb771077e 100755 --- a/tools/ci/docker/aptly/update.sh +++ b/tools/ci/docker/aptly/update.sh @@ -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}" diff --git a/tools/ci/docker/kolide-builder/.gitignore b/tools/ci/docker/fleet-builder/.gitignore similarity index 100% rename from tools/ci/docker/kolide-builder/.gitignore rename to tools/ci/docker/fleet-builder/.gitignore diff --git a/tools/ci/docker/kolide-builder/1.8/Dockerfile b/tools/ci/docker/fleet-builder/1.8/Dockerfile similarity index 100% rename from tools/ci/docker/kolide-builder/1.8/Dockerfile rename to tools/ci/docker/fleet-builder/1.8/Dockerfile diff --git a/tools/ci/docker/kolide-builder/1.8/rootfs/builder.sh b/tools/ci/docker/fleet-builder/1.8/rootfs/builder.sh similarity index 97% rename from tools/ci/docker/kolide-builder/1.8/rootfs/builder.sh rename to tools/ci/docker/fleet-builder/1.8/rootfs/builder.sh index 10cbb685ec..35521394dd 100755 --- a/tools/ci/docker/kolide-builder/1.8/rootfs/builder.sh +++ b/tools/ci/docker/fleet-builder/1.8/rootfs/builder.sh @@ -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 } diff --git a/tools/ci/docker/fleet-builder/Makefile b/tools/ci/docker/fleet-builder/Makefile new file mode 100644 index 0000000000..a56d1e02b1 --- /dev/null +++ b/tools/ci/docker/fleet-builder/Makefile @@ -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 diff --git a/tools/ci/docker/kolide-builder/README.md b/tools/ci/docker/fleet-builder/README.md similarity index 89% rename from tools/ci/docker/kolide-builder/README.md rename to tools/ci/docker/fleet-builder/README.md index 8f5aa69901..eb6fcf6afe 100644 --- a/tools/ci/docker/kolide-builder/README.md +++ b/tools/ci/docker/fleet-builder/README.md @@ -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. - diff --git a/tools/ci/docker/fpm/build.sh b/tools/ci/docker/fpm/build.sh index a02bdc4561..dae2d471b7 100755 --- a/tools/ci/docker/fpm/build.sh +++ b/tools/ci/docker/fpm/build.sh @@ -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" diff --git a/tools/ci/docker/kolide-builder/Makefile b/tools/ci/docker/kolide-builder/Makefile deleted file mode 100644 index dbb1353b8f..0000000000 --- a/tools/ci/docker/kolide-builder/Makefile +++ /dev/null @@ -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 diff --git a/tools/ci/download-build-deps.sh b/tools/ci/download-build-deps.sh index 401a698e01..b8a63f59eb 100755 --- a/tools/ci/download-build-deps.sh +++ b/tools/ci/download-build-deps.sh @@ -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" diff --git a/tools/ci/k8s-templates/branch-deployment.template b/tools/ci/k8s-templates/branch-deployment.template index 7d73e7c014..f2a8918faf 100644 --- a/tools/ci/k8s-templates/branch-deployment.template +++ b/tools/ci/k8s-templates/branch-deployment.template @@ -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: diff --git a/tools/ci/k8s-templates/branch-service.template b/tools/ci/k8s-templates/branch-service.template index fb090ca588..9a3b8213c0 100644 --- a/tools/ci/k8s-templates/branch-service.template +++ b/tools/ci/k8s-templates/branch-service.template @@ -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 diff --git a/tools/ci/k8s-templates/pr-deployment.template b/tools/ci/k8s-templates/pr-deployment.template index 14e250bfb5..08ed3e19fc 100644 --- a/tools/ci/k8s-templates/pr-deployment.template +++ b/tools/ci/k8s-templates/pr-deployment.template @@ -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: diff --git a/tools/ci/k8s-templates/pr-service.template b/tools/ci/k8s-templates/pr-service.template index 4e54efce6d..a6cc70090c 100644 --- a/tools/ci/k8s-templates/pr-service.template +++ b/tools/ci/k8s-templates/pr-service.template @@ -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 diff --git a/tools/ci/k8s-templates/redis-pr-deployment.template b/tools/ci/k8s-templates/redis-pr-deployment.template index eb701752d3..3d69adb52e 100644 --- a/tools/ci/k8s-templates/redis-pr-deployment.template +++ b/tools/ci/k8s-templates/redis-pr-deployment.template @@ -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 diff --git a/tools/ci/k8s-templates/redis-pr-service.template b/tools/ci/k8s-templates/redis-pr-service.template index 96692a7124..ee1ee1a367 100644 --- a/tools/ci/k8s-templates/redis-pr-service.template +++ b/tools/ci/k8s-templates/redis-pr-service.template @@ -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