Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
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
- Host: GitHub
- URL: https://github.com/netcorebcn/quiz
- Owner: netcorebcn
- Created: 2017-02-21T23:00:47.000Z (almost 8 years ago)
- Default Branch: master
- Last Pushed: 2018-11-19T23:14:43.000Z (about 6 years ago)
- Last Synced: 2024-10-31T00:04:18.429Z (3 months ago)
- Topics: aspnetcore, ci-cd, cqrs, ddd, docker, dotnetcore, eventsourcing, helm, helm-charts, jenkins, jenkins-pipeline, k8s, kubernetes, microservices, minikube, postgres, postgresql, rabbit, rabbitmq, react
- Language: C#
- Homepage:
- Size: 9.19 MB
- Stars: 121
- Watchers: 12
- Forks: 38
- Open Issues: 1
-
Metadata Files:
- Readme: README.md
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=latestexport 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