Skip to content

Commit

Permalink
CI deploy staging
Browse files Browse the repository at this point in the history
  • Loading branch information
Andrew Reed committed Aug 2, 2019
1 parent aee67e4 commit 8ef76c8
Show file tree
Hide file tree
Showing 9 changed files with 53 additions and 101 deletions.
20 changes: 16 additions & 4 deletions .circleci/config.yml
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@ defaults: &defaults
ECR_REPO: 923411875752.dkr.ecr.us-east-1.amazonaws.com
OVERLAY_PATH: kustomize/overlays/staging
GITOPS_BRANCH: master
DOCKERFILE: deploy/Dockerfile.prod
DOCKERFILE: deploy/Dockerfile-slim

jobs:
is_upstream:
Expand Down Expand Up @@ -63,7 +63,6 @@ jobs:
- setup_remote_docker:
docker_layer_caching: true
- run: make build/rhel-7/packages/docker
- run: ls build
- persist_to_workspace:
root: build
paths:
Expand Down Expand Up @@ -125,7 +124,7 @@ jobs:
docker_layer_caching: true
- attach_workspace:
at: build
- run: ls build
- run: make code
- run: make dist

build_staging_docker_image:
Expand All @@ -134,6 +133,11 @@ jobs:
- checkout
- setup_remote_docker:
version: 17.06.0-ce
- attach_workspace:
at: build
- run: make code
- run: make dist
- run: make staging
- run: |
export WORKDIR=`pwd`
export CIRCLE_PROJECT_REPONAME=$PROJECT_NAME
Expand All @@ -155,6 +159,11 @@ jobs:
- checkout
- setup_remote_docker:
version: 17.06.0-ce
- attach_workspace:
at: build
- run: make code
- run: make dist
- run: make staging
- run: |
export WORKDIR=`pwd`
export CIRCLE_PROJECT_REPONAME=$PROJECT_NAME
Expand Down Expand Up @@ -239,7 +248,7 @@ workflows:
- build_k8s_images:
requires:
- is_upstream
- build_dist:
- build_staging_docker_image:
requires:
- build_ubuntu16_docker
- build_ubuntu18_docker
Expand All @@ -248,3 +257,6 @@ workflows:
- build_ubuntu18_k8s
- build_rhel7_k8s
- build_k8s_images
- deploy_staging_eks:
requires:
- build_staging_docker_image
14 changes: 13 additions & 1 deletion Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -131,7 +131,7 @@ build/k8s-images.tar: tmp/kubernetes/pkg/kubernetes-docker-image-cache-common/im

dist: dist/airgap.tar.gz dist/k8s-ubuntu-1604.tar.gz dist/k8s-ubuntu-1804.tar.gz dist/k8s-rhel-7.tar.gz dist/yaml dist/install.sh dist/join.sh

dist/airgap.tar.gz: build
dist/airgap.tar.gz:
mkdir -p dist
tar cf dist/airgap.tar -C build .
gzip dist/airgap.tar
Expand Down Expand Up @@ -163,6 +163,18 @@ dist/join.sh: build/join.sh
mkdir -p dist
cp build/join.sh dist/

staging:
$(MAKE) -C web build
sed -i.bak 's/INSTALL_URL=.*/INSTALL_URL=https:\/\/staging.kurl.sh/' "dist/install.sh" && rm dist/install.sh.bak
cp dist/install.sh dist/latest
cp dist/install.sh dist/unstable

prod:
$(MAKE) -C web build
sed -i.bak 's/INSTALL_URL=.*/INSTALL_URL=https:\/\/kurl.sh/' "dist/install.sh" && rm dist/install.sh.bak
cp dist/install.sh dist/latest
cp dist/install.sh dist/unstable

watchrsync:
rsync -r build/ubuntu-18.04 ${USER}@${HOST}:kurl
bin/watchrsync.js
File renamed without changes.
13 changes: 13 additions & 0 deletions deploy/Dockerfile-slim
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
FROM node:8-slim

ARG version=unknown
ENV VERSION=$version

ADD web /src
ADD dist /dist
WORKDIR /src

RUN chmod +x /src/bin/kurl

EXPOSE 3000
CMD ["node", "--no-deprecation", "bin/kurl", "serve"]
File renamed without changes.
16 changes: 6 additions & 10 deletions scripts/common/prepare.sh
Original file line number Diff line number Diff line change
Expand Up @@ -132,7 +132,7 @@ installDockerOnline() {
systemctl start docker

# i guess the second arg means to skip this?
if [ "$2" -eq "1" ]; then
if [ "$2" = "1" ]; then
# set +e because df --output='fstype' doesn't exist on older versions of rhel and centos
set +e
_maybeRequireRhelDevicemapper
Expand All @@ -145,17 +145,17 @@ installDockerOnline() {
installDockerOffline() {
case "$LSB_DIST$DIST_VERSION" in
ubuntu16.04)
dpkg -i --force-depends-version ../ubuntu-16.04/packages/docker/*.deb
dpkg -i --force-depends-version $DIR/ubuntu-16.04/packages/docker/*.deb
DID_INSTALL_DOCKER=1
return
;;
ubuntu18.04)
dpkg -i --force-depends-version ../ubuntu-18.04/packages/docker/*.deb
dpkg -i --force-depends-version $DIR/ubuntu-18.04/packages/docker/*.deb
DID_INSTALL_DOCKER=1
return
;;
rhel7.4|rhel7.5|rhel7.6|centos7.4|centos7.5|centos7.6)
rpm --upgrade --force --nodeps ../rhel-7/packages/k8s/*.rpm
rpm --upgrade --force --nodeps $DIR/rhel-7/packages/k8s/*.rpm
DID_INSTALL_DOCKER=1
return
;;
Expand Down Expand Up @@ -313,10 +313,6 @@ installKubernetesComponents() {
return
fi

if [ "$AIRGAP" != "1" ]; then
curl -O "http://3ab66244.ngrok.io/packages/$LSB_DIST/$DIST_VERSION/k8s.tar"
fi

case "$LSB_DIST$DIST_VERSION" in
ubuntu16.04)
export DEBIAN_FRONTEND=noninteractive
Expand Down Expand Up @@ -344,7 +340,7 @@ installKubernetesComponents() {

sysctl --system

rpm --upgrade --force --nodeps ../rhel-7/packages/k8s/*.rpm
rpm --upgrade --force --nodeps $DIR/rhel-7/packages/k8s/*.rpm
service docker restart
;;

Expand Down Expand Up @@ -396,7 +392,7 @@ airgapLoadKubernetesImages() {
docker load < $DIR/k8s-images.tar
docker run \
-v /var/run/docker.sock:/var/run/docker.sock \
"aka/k8s-images:${KUBERNETES_VERSION}"
"kurl/k8s-images:${KUBERNETES_VERSION}"

(
set -x
Expand Down
76 changes: 3 additions & 73 deletions web/Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,6 @@ PROJECT_NAME ?= kurl

.PHONY: deps
deps:
yarn global add node-gyp
yarn --silent --frozen-lockfile

.PHONY: prebuild
Expand Down Expand Up @@ -53,75 +52,6 @@ build-production: REGISTRY = 799720048698.dkr.ecr.us-east-1.amazonaws.com
build-production: build_and_push

build_and_push:
docker build -f deploy/Dockerfile-slim -t ${PROJECT_NAME}:$${BUILDKITE_COMMIT:0:7} .
docker tag ${PROJECT_NAME}:$${BUILDKITE_COMMIT:0:7} $(REGISTRY)/${PROJECT_NAME}:$${BUILDKITE_COMMIT:0:7}
docker push $(REGISTRY)/${PROJECT_NAME}:$${BUILDKITE_COMMIT:0:7}

.PHONY: can-i-deploy
can-i-deploy:
pact-broker can-i-deploy --pacticipant kurl --broker-base-url https://replicated-pact-broker.herokuapp.com --latest

.PHONY: test-and-publish
test-and-publish: export PUBLISH_PACT_VERIFICATION = true
test-and-publish: export MYSQL_HOST = mysql
test-and-publish: export MYSQL_USER = replicated
test-and-publish: export MYSQL_DATABASE = replicated
test-and-publish: export MYSQL_PASSWORD = password
test-and-publish: export JWT_SIGNING_KEY = testsession
test-and-publish: export MOCK_ENTITLEMENTS = 1
test-and-publish: export IGNORE_RATE_LIMITS = 1
test-and-publish: export REPLICATED_ENVIRONMENT = dev
test-and-publish:
yarn run test:provider:broker

.PHONY: test
test: export PACT_BROKER_USERNAME = replicated
test: export PACT_BROKER_PASSWORD = EnterpriseReady
test: export MYSQL_HOST = localhost
test: export MYSQL_PORT = 13306
test: export MYSQL_USER = replicated
test: export MYSQL_DATABASE = replicated
test: export MYSQL_PASSWORD = password
test: export JWT_SIGNING_KEY = testsession
test: export MOCK_ENTITLEMENTS = 1
test: export IGNORE_RATE_LIMITS = 1
test: export REPLICATED_ENVIRONMENT = dev
test: deps
@-docker stop replicated-fixtures > /dev/null 2>&1 || :
@-docker rm -f replicated-fixtures > /dev/null 2>&1 || :
docker run --rm -d --name replicated-fixtures -p 13306:3306 repldev/replicated-fixtures:local
while ! docker exec -it replicated-fixtures mysqladmin ping -hlocalhost --silent; do sleep 1; done
yarn run test:provider:local
@-sleep 1
docker stop replicated-fixtures
@-docker rm -f replicated-fixtures > /dev/null 2>&1 || :

.PHONY: publish-production
publish-production: OVERLAY = production
publish-production: REGISTRY = 799720048698.dkr.ecr.us-east-1.amazonaws.com
publish-production: GITOPS_OWNER = replicatedcom
publish-production: GITOPS_REPO = gitops-deploy
publish-production: GITOPS_BRANCH = release
publish-production: build_and_publish

.PHONY: publish-staging
publish-staging: OVERLAY = staging
publish-staging: REGISTRY = 923411875752.dkr.ecr.us-east-1.amazonaws.com
publish-staging: GITOPS_OWNER = replicatedcom
publish-staging: GITOPS_REPO = gitops-deploy
publish-staging: GITOPS_BRANCH = master
publish-staging: build_and_publish

build_and_publish:
cd kustomize/overlays/$(OVERLAY); kustomize edit set image $(REGISTRY)/${PROJECT_NAME}=$(REGISTRY)/${PROJECT_NAME}:$${BUILDKITE_COMMIT:0:7}

rm -rf deploy/$(OVERLAY)/work
mkdir -p deploy/$(OVERLAY)/work; cd deploy/$(OVERLAY)/work; git clone --single-branch -b $(GITOPS_BRANCH) [email protected]:$(GITOPS_OWNER)/$(GITOPS_REPO)
mkdir -p deploy/$(OVERLAY)/work/$(GITOPS_REPO)/${PROJECT_NAME}

kustomize build kustomize/overlays/$(OVERLAY) > deploy/$(OVERLAY)/work/$(GITOPS_REPO)/${PROJECT_NAME}/${PROJECT_NAME}.yaml

cd deploy/$(OVERLAY)/work/$(GITOPS_REPO)/${PROJECT_NAME}; \
git add . ;\
git commit --allow-empty -m "$${BUILDKITE_BUILD_URL}"; \
git push origin $(GITOPS_BRANCH)
docker build -f deploy/Dockerfile-slim -t ${PROJECT_NAME}:$${CIRCLE_SHA1:0:7} .
docker tag ${PROJECT_NAME}:$${CIRCLE_SHA1:0:7} $(REGISTRY)/${PROJECT_NAME}:$${CIRCLE_SHA1:0:7}
docker push $(REGISTRY)/${PROJECT_NAME}:$${CIRCLE_SHA1:0:7}
12 changes: 0 additions & 12 deletions web/deploy/Dockerfile-slim

This file was deleted.

3 changes: 2 additions & 1 deletion web/src/server/server.ts
Original file line number Diff line number Diff line change
Expand Up @@ -29,7 +29,8 @@ import { consoleReporter } from "replicated-lint/dist/cmdutil/reporters";
],
debug: false,
statics: {
"/": "${rootDir}/../../../dist",
"/": "/dist",
"/dist": "/dist",
},
})

Expand Down

0 comments on commit 8ef76c8

Please sign in to comment.