From 18879786bfba6c6b29ee15b5adc910040be3e108 Mon Sep 17 00:00:00 2001 From: sivan <sivanduijn@gmail.com> Date: Fri, 2 Apr 2021 12:45:33 +0200 Subject: [PATCH] adjusted template files, added yml files --- .gitlab-ci.yml | 68 ++++++++++++++++++++++++++++++++--- Dockerfile | 3 ++ Makefile | 29 ++++++++------- builds/.gitignore | 5 --- builds/README.md | 3 -- coverage/.gitignore | 5 --- coverage/README.md | 3 -- deployments/deployment.yml | 32 +++++++++++++++++ deployments/svc.yml | 8 +++++ go.mod | 1 - go.sum | 2 -- internal/consumer/consumer.go | 14 ++++---- 12 files changed, 126 insertions(+), 47 deletions(-) create mode 100644 Dockerfile delete mode 100644 builds/.gitignore delete mode 100644 builds/README.md delete mode 100644 coverage/.gitignore delete mode 100644 coverage/README.md create mode 100644 deployments/deployment.yml create mode 100644 deployments/svc.yml diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index ef2b463..2e040ad 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -2,6 +2,9 @@ image: golang:1.16 stages: - test + - build + - docker + - deploy lint: stage: test @@ -13,10 +16,10 @@ unit_tests: script: - make dep - make test - - gocover-cobertura < coverage/coverage.txt > coverage/coverage.xml + - gocover-cobertura < coverage.txt > coverage.xml artifacts: reports: - cobertura: coverage/coverage.xml + cobertura: coverage.xml race: stage: test @@ -29,7 +32,7 @@ coverage: - make coverage after_script: - mkdir coverage/$CI_COMMIT_BRANCH - - cp coverage/cover.html coverage/$CI_COMMIT_BRANCH + - cp cover.html coverage/$CI_COMMIT_BRANCH - mv coverage/$CI_COMMIT_BRANCH/cover.html coverage/$CI_COMMIT_BRANCH/index.html # install openssh client and add ssh keys - apt-get install openssh-client curl -y >/dev/null @@ -41,9 +44,64 @@ coverage: - echo "$SSH_KNOWN_HOSTS" >> ~/.ssh/known_hosts - chmod 644 ~/.ssh/known_hosts - ssh -fN -L 1234:science-vs260.science.uu.nl:22 sivan@up.science.uu.nl - - scp -r -o StrictHostKeyChecking=no -P 1234 -i ~/.ssh/id_rsa coverage/$CI_COMMIT_BRANCH root@localhost:/datadisk/documentation-coverage/home/backend/query-service/features + - scp -r -o StrictHostKeyChecking=no -P 1234 -i ~/.ssh/id_rsa coverage/$CI_COMMIT_BRANCH root@localhost:/datadisk/documentation-coverage/home/backend/$SERVICE_NAME/features artifacts: untracked: false expire_in: 30 days paths: - - "coverage/cover.html" + - cover.html + +build: + stage: build + script: + - make linux + only: + - develop + artifacts: + paths: + - builds/ + dependencies: [] + + +docker: + image: docker:stable + tags: + - docker + stage: docker + only: + - develop + before_script: + - docker login datastropheregistry.azurecr.io -u $REGISTRY_USERNAME -p $REGISTRY_PASSWORD + script: + - ls + - cd builds + - ls + - cd .. + - docker build --progress plain -t $SERVICE_NAME:latest . + - docker tag $SERVICE_NAME datastropheregistry.azurecr.io/$SERVICE_NAME:latest + - docker push datastropheregistry.azurecr.io/$SERVICE_NAME:latest + dependencies: + - build + + +deploy: + stage: deploy + only: + - develop + script: + - apt-get install openssh-client curl -y >/dev/null + - mkdir ~/.ssh/ + - eval $(ssh-agent -s) + - echo "$SSH_PRIVATE_KEY" | tr -d '\r' > ~/.ssh/id_rsa + - chmod 600 ~/.ssh/id_rsa + - ssh-add ~/.ssh/id_rsa + - echo "$SSH_KNOWN_HOSTS" >> ~/.ssh/known_hosts + - chmod 644 ~/.ssh/known_hosts + - ssh -fN -L 1234:science-vs260.science.uu.nl:22 sivan@up.science.uu.nl + # Copy kubernetes files over + - scp -r -o StrictHostKeyChecking=no -P 1234 -i ~/.ssh/id_rsa deployments/* root@localhost:/root/kubernetes/$SERVICE_NAME + # Deploy all yml files + - ssh -p 1234 -i ~/.ssh/id_rsa root@localhost "for i in kubernetes/$SERVICE_NAME/*.yml; do kubectl apply -f \$i; done" + # Perform rolling update for deployment + - ssh -p 1234 -i ~/.ssh/id_rsa root@localhost "kubectl rollout restart -f kubernetes/$SERVICE_NAME/deployment.yml" + dependencies: [] diff --git a/Dockerfile b/Dockerfile new file mode 100644 index 0000000..8d02ac6 --- /dev/null +++ b/Dockerfile @@ -0,0 +1,3 @@ +FROM busybox +ADD ./builds/main / +CMD /main diff --git a/Makefile b/Makefile index 0160b0e..469c8d8 100644 --- a/Makefile +++ b/Makefile @@ -1,8 +1,10 @@ +.PHONY: all dep build test lint + lint: dep ## Lint the files @golint -set_exit_status ./... test: ## Run unittests - @go test -cover -coverprofile=coverage/coverage.txt -covermode count ./... + @go test -cover -coverprofile=coverage.txt -covermode count ./... race: dep ## Run data race detector @go test -race -short ./... @@ -13,24 +15,21 @@ dep: ## Get the dependencies @go get -u github.com/boumenot/gocover-cobertura coverage: dep - @go test -v -coverpkg=./... -coverprofile=coverage/cover.out ./... - @go tool cover -func coverage/cover.out | grep total - @go tool cover -html=coverage/cover.out -o coverage/cover.html + @go test -v -coverpkg=./... -coverprofile=cover.out ./... + @go tool cover -func cover.out | grep total + @go tool cover -html=cover.out -o cover.html windows: - $(eval GOOS := windows) - @go build -o main ./cmd/service-template/ - @mv main builds + $(eval export GOOS := windows) + @go build -o builds/main ./cmd/service-template/ -macos: dep - $(eval GOOS := darwin) - @go build -o main ./cmd/service-template/ - @mv main builds +macos: + $(eval export GOOS := darwin) + @go build -o builds/main ./cmd/service-template/ linux: # Build for linux - $(eval GOOS := linux) - @go build -o main ./cmd/service-template/ - @mv main builds + $(eval export GOOS := linux) + CGO_ENABLED=0 go build -o builds/main ./cmd/service-template/ run: - ./builds/main \ No newline at end of file + ./builds/main diff --git a/builds/.gitignore b/builds/.gitignore deleted file mode 100644 index b07ba2c..0000000 --- a/builds/.gitignore +++ /dev/null @@ -1,5 +0,0 @@ -# Ignore everything in this directory -* -# Except this file -!.gitignore -!README.md \ No newline at end of file diff --git a/builds/README.md b/builds/README.md deleted file mode 100644 index b7f8eb7..0000000 --- a/builds/README.md +++ /dev/null @@ -1,3 +0,0 @@ -# `/builds` - -Where the built binaries are placed. Everything in this folder should be ignored by a .gitignore file. \ No newline at end of file diff --git a/coverage/.gitignore b/coverage/.gitignore deleted file mode 100644 index b07ba2c..0000000 --- a/coverage/.gitignore +++ /dev/null @@ -1,5 +0,0 @@ -# Ignore everything in this directory -* -# Except this file -!.gitignore -!README.md \ No newline at end of file diff --git a/coverage/README.md b/coverage/README.md deleted file mode 100644 index 6bd99e5..0000000 --- a/coverage/README.md +++ /dev/null @@ -1,3 +0,0 @@ -# `/coverage` - -Where code coverage statistics go when running command like `make coverage`. \ No newline at end of file diff --git a/deployments/deployment.yml b/deployments/deployment.yml new file mode 100644 index 0000000..d18bb00 --- /dev/null +++ b/deployments/deployment.yml @@ -0,0 +1,32 @@ +apiVersion: apps/v1 +kind: Deployment +metadata: + name: query-handler-deployment + labels: + app: query-handler +spec: + replicas: 3 + selector: + matchLabels: + app: query-handler + template: + metadata: + labels: + app: query-handler + spec: + containers: + - name: query-handler + image: datastropheregistry.azurecr.io/query-handler-service:latest + ports: + - containerPort: 3000 + env: + - name: RABBIT_HOST + value: rabbitmq + - name: RABBIT_PORT + value: "5672" + - name: RABBIT_USER + value: I9YPuqNYvN_o4597-LJ6i0sWZTDTV5kk + - name: RABBIT_PASSWORD + value: zBA4m-IzK6ejLtCdr2gxB6kHmURaUvy4 + imagePullSecrets: + - name: docker-regcred \ No newline at end of file diff --git a/deployments/svc.yml b/deployments/svc.yml new file mode 100644 index 0000000..2008dda --- /dev/null +++ b/deployments/svc.yml @@ -0,0 +1,8 @@ +# Service that exposes this deployment +kind: Service +apiVersion: v1 +metadata: + name: query-handler-service +spec: + selector: + app: query-handler diff --git a/go.mod b/go.mod index 640347d..a7dc102 100644 --- a/go.mod +++ b/go.mod @@ -3,7 +3,6 @@ module query-service go 1.15 require ( - github.com/rs/xid v1.3.0 github.com/streadway/amqp v1.0.0 github.com/thijsheijden/alice v0.1.5 ) diff --git a/go.sum b/go.sum index 33802db..c523523 100644 --- a/go.sum +++ b/go.sum @@ -1,5 +1,3 @@ -github.com/rs/xid v1.3.0 h1:6NjYksEUlhurdVehpc7S7dk6DAmcKv8V9gG0FsVN2U4= -github.com/rs/xid v1.3.0/go.mod h1:trrq9SKmegXys3aeAKXMUTdJsYXVwGY3RLcfgqegfbg= github.com/streadway/amqp v1.0.0 h1:kuuDrUJFZL1QYL9hUNuCxNObNzB0bV/ZG5jV3RWAQgo= github.com/streadway/amqp v1.0.0/go.mod h1:AZpEONHx3DKn8O/DFsRAY58/XVQiIPMTMB1SddzLXVw= github.com/thijsheijden/alice v0.1.5 h1:kOZHhLGSHMja77I/Wvd19M7nvxgEWVIJ4vk5antCKdQ= diff --git a/internal/consumer/consumer.go b/internal/consumer/consumer.go index e742681..f0a6a63 100644 --- a/internal/consumer/consumer.go +++ b/internal/consumer/consumer.go @@ -1,7 +1,9 @@ package consumer import ( + "os" "query-service/internal/errorhandler" + "strconv" "time" "github.com/streadway/amqp" @@ -16,14 +18,10 @@ type ConsumeMessageFunc func(*[]byte) func StartConsuming(consumeMessage ConsumeMessageFunc, exchangeID string, routingKey string) { // Create connection config using environment variables - // rabbitUser := os.Getenv("RABBIT_USER") - // rabbitPassword := os.Getenv("RABBIT_PASSWORD") - // rabbitHost := os.Getenv("RABBIT_HOST") - // rabbitPort, err := strconv.Atoi(os.Getenv("RABBIT_PORT")) - rabbitUser := "haha-test" - rabbitPassword := "dikkedraak" - rabbitHost := "192.168.178.158" - rabbitPort := 5672 + rabbitUser := os.Getenv("RABBIT_USER") + rabbitPassword := os.Getenv("RABBIT_PASSWORD") + rabbitHost := os.Getenv("RABBIT_HOST") + rabbitPort, err := strconv.Atoi(os.Getenv("RABBIT_PORT")) config := alice.CreateConfig(rabbitUser, rabbitPassword, rabbitHost, rabbitPort, true, time.Minute*1, alice.DefaultErrorHandler) -- GitLab