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

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Quiz App

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

Docker

Minikube

  • run with 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

    • Install jenkins and quiz app

      • Export the following environment variables:

        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='<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 http://jenkins.quiz.internal/job/quiz/ and Build!

      • Once its build Open http://quiz.internal and http://quiz.internal?results

      • Github integration for Pull Request workflow

        ./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: https://www.slideshare.net/PauLpez3/built-in-cicd-with-kubernetes-jenkins-and-helm

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

About

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


Languages

Language:C# 47.6%Language:JavaScript 20.8%Language:Smarty 15.9%Language:Shell 5.4%Language:CSS 4.7%Language:Dockerfile 4.3%Language:HTML 1.3%