Ecosyste.ms: Awesome

An open API service indexing awesome lists of open source software.

Awesome Lists | Featured Topics | Projects

https://github.com/netcorebcn/quiz

Example real time quiz application with .NET Core, React, DDD, Event Sourcing, Docker and built-in infrastructure for CI/CD with k8s, jenkins and helm
https://github.com/netcorebcn/quiz

aspnetcore ci-cd cqrs ddd docker dotnetcore eventsourcing helm helm-charts jenkins jenkins-pipeline k8s kubernetes microservices minikube postgres postgresql rabbit rabbitmq react

Last synced: 29 days ago
JSON representation

Example real time quiz application with .NET Core, React, DDD, Event Sourcing, Docker and built-in infrastructure for CI/CD with k8s, jenkins and helm

Awesome Lists containing this project

README

        

# Quiz App
Simple EventSourcing example using .NET Core, React, Docker, Jenkins and K8s.

## Docker
* run with [**docker**](https://www.docker.com/products/docker) from bash with ``.\run.sh``

Open for quiz voting and for quiz results

## Minikube
* run with [**minikube**](https://github.com/kubernetes/minikube)

* Setup minikube

```./k8s/hack/setupkube.sh```

* Setup dnsmasq (optional)

```sudo INGRESS_DOMAIN=quiz.internal ./k8s/hack/setupdns.sh```

**__Notes__**: For automatic dns wilcards resolution use [dnsmasq](https://blog.thesparktree.com/local-development-with-wildcard-dns)

* Install jenkins and quiz app
* Export the following environment variables:

```bash
export INGRESS_DOMAIN='quiz.internal'
export QUIZ_ENVIRONMENT='production'
export TAG_BRANCH=master
export REGISTRY=localhost:30400
export TAG=latest

export JENKINS_PASSWORD=changeit
export GITHUB_REPO=netcorebcn/quiz
export GITHUB_USER=mygithubuser
export GITHUB_TOKEN=''
```

* Execute ```./k8s/hack/install.sh```

* Add ingress hosts to local host file (only if dnsmasq is not setup)

```echo $(minikube ip) {jenkins,rabbit,registry}.quiz.internal quiz.internal | sudo tee -a /etc/hosts```

* Open and Build!

* Once its build Open and

* Github integration for Pull Request workflow

* Add Integration & Service: Manage Jenkins (GitHub plugin)

http://jenkins.quiz.internal/github-webhook/

* For local jenkins integration you can use [ngrok](https://ngrok.com/)

```bash
./ngrok http jenkins.quiz.internal:80 -host-header=jenkins.quiz.internal
```
### Setup script example
You can use full example setup with ngrok and dnsmasq integration: ```./k8s/hack/setup.sh```, it requires to store the enviroment variables in a secrets file.

## Notes
Some slides on the process here:

We aren't starting from the scratch. We are using ideas and code from other awesome repos.

* Running Jenkins in Docker

* K8s ingress configuration for ci cd with jenkins

* Marten Event Store library for .NET and postgresql

* WebSockets helper classes thanks to



* dnsmasq integrate with minikube