Gitlab CI
Pull rate limit
Une des solutions temporaires pour contourner les problèmes de pull rate limit du Docker Hub est de s'identifier avec son compte Docker Hub.
Le fichier de configuration Docker config.json
contient les credentials utilisés de la forme username:password
en base 64.
Source
Pour l'update dans la CI, on peut utiliser la variables d'environnement DOCKER_AUTH_CONFIG
variables:
DOCKER_AUTH_CONFIG: '{ "auths": { "https://index.docker.io/v1/": { "auth": "$DOCKER_AUTH" } }}'
Et la valeur de DOCKER_AUTH
peut être généré avec :
echo -n "username:password" | base64
Artifact
Avec l'authentification, la pull rate limit est passé de 100 pull toutes les 6h à 200 pull toutes les 6h. Cela n'est encore pas assez et il y a des problèmes si plusieurs personnes développent sur gameday-master. C'est pourquoi, l'artifactory d'IPPON a été mis en place sur gameday-master. L'UI d'artifactory est accessible avec vos identifiants IPPON via Jfrog.
Cela consistait à rajouter l'adresse du repo de l'artifactory qui permet de faire du cache sur les images courantes (python, alpine...).
Cela consiste à remplacer une image
python:latest
En
docker-io-remote.artifactory.ippon.fr/python:latest
Ce repo va télécharger l'image une première fois puis il va la garder en cache pendant un certain temps. Cela permet de pull l'image une seule fois sur docker hub et de la stocker sur l'artifactory pour pouvoir la pull "gratuitement" ensuite.
Cependant, l'artifactory est aussi utilisé pour des images personalisées que l'on peut retrouver dans le repo gameday-config dans le dossier images. Ce repo push automatiquement les images dans le repo
docker-repository.artifactory.ippon.fr/cloud-challenge
Ensuite, la CI utilise ces images pour build ou exécuter du terraform.
Pipelines
- gameday-master
- gameday-infra
- gameday-nuke
- gameday-docs
- gameday-config
Upload S3
Ce job a pour but de prendre les scénarios de git pour les upload sur un bucket S3 sur AWS.
Tests
Ce job a pour but de lancer les tests réalisés sur admin-server et sur dashboard.
Analysis
Ce job a pour but de lancer les SonarQube sur admin-server et sur dashboard pour avoir les métriques d'avancement du projet sur https://sonar.ippon.fr/
Build
Ce job a pour but de build les changements des différents éléments nécessaires au fonctionnement de l'application et de les push dans l'ECR, soit :
- Cloudmapper, qui permet de générer un diagramme de l'infrastructure créée sur un compte.
- Cloudpdf, qui permet de générer des rapports suite aux staffing.
- Dashboard, qui permet de générer le dashboard.
- Nginx, qui permet de générer le cloupmapper.
- Server, qui permet de générer admin-server.
Deploy
Ce job a pour but de deploy l'application en forçant l'ECS a s'update en récupérant la nouvelle version de l'application disponible sur l'ECR suite au build. Il permet aussi de tag les ressources ECS avec le numéro du commit leur correspondant.
Account
Ce job a pour but de mettre en place la policy nécessaire à chaque compte pour jouer (teamPolicy), les budgets AWS pour chaque compte avec alerte, la pile SQS et les resources event bridge pour remonter l'utilisation de chaque resources AWS au compte Master et permettre le scoring pour le gameday.
Elle permet de mettre en place le budget pour Azure.
Static S3
Ce job a pour but de déployer des buckets S3 pour accueillir les fichiers statiques liés aux scénarios et les rapports de candidats.
Infrastructure
Ce job permet la mise en place des éléments de l'infrastructure comme les queues sur Azure ou les IAM et variables sensibles sur AWS.
WAF
Ce job a pour but de mettre en place le Web Application Firewall associé à l'Application Load Balancer de l'infrastructure.
Nuke-players
Ce job a pour but de nuke chaque compte sur AWS en supprimant toutes les instances crées dessus. Pour Azure, on supprime tout les resource groups des équipes.
Init
Ce job a pour but de créer le bucket S3 qui hébergera l'application https://doc.gameday.aws.ippon.fr
Build
Ce job a pour but de build l'application.
Deploy
Ce job a pour but d'envoyer le build de l'application sur le bucket S3 pour déployer celle-ci.
Build
Ce job a pour but de build toutes les images nécessaires au gameday et de les push sur l'artifactory d'Ippon.