The CI platform for FA consist in a Jenkins X installation in an AWS EKS cluster that defines CI/CD pipelines for different apps within the FA company. Note: This project is part of a Jenkins X, Terraform and EKS sample assessment.
- The platform is mounted in a Kubernetes environment with EBS persistent volumes for its high availability and scalability.
- The pipelines are defined in Jenkinsfiles.
- The infrastructure for the platform and the apps is defined in Terraform.
- For testing purposes we will use a personal domain: somosaltum.com.
- Code coverage tests with Sonarqube.
- Notifications in Github by Jenkins (GitOps).
- Monitoring with Prometheus and Grafana.
- terraform/: contains the infrastructure as code in Terraform for the FA apps and FA ci-platform.
- helm/: contains the values for the deployed charts (in our case, the nginx controller via Terraform).
- Install JX CLI brew tap jenkins-x/jx brew install jx
- Install EKSCTL tool brew tap weaveworks/tap brew install eksctl
jx install --provider=eks --default-environment-prefix=fa-jx --skip-ingress --ingress-deployment=nginx-ingress-controller --ingress-service=nginx-ingress-controller --domain=somosaltum.com
helm upgrade prometheus stable/prometheus -f helm/prometheus.yaml --namespace monitoring --set rbac.create=true --install
helm upgrade grafana stable/grafana --set=ingress.enabled=True,ingress.hosts={grafana.somosaltum.com} --namespace monitoring --set rbac.create=true --install
helm upgrade sonarqube stable/sonarqube --set=ingress.enabled=True,ingress.hosts={sonar.somosaltum.com} --namespace jx --install
When working in a PR branch:
- Application tests
- Quality code analysis
- CI Build and push snapshot
When the PR is merged to master:
- Integration tests
- Quality code analysis in master
- Build Release
- Promote to Staging
- Promote to Production (manual step)
- Get a SSL certificate to configure the HTTPS communication.
- Different EKS clusters for different environments.
- Notifications to Github and Slack if stages fail.