Skip to main content

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

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.