Bonjour à tous,

Il m'est demandé dans le cadre du CI /CD de ma compagnie (utilisation d'Atlassian Bamboo) de migrer les agents de build de VM (sous debian) à des pods sous k8s

Sur le principe, cela fonctionne mais par contre c'est bien plus lent avec les projets dotnet (net 8)

Task VM Pod
dotnet restore 6s 53s
dotnet build 42s 2m 18s
dotnet test 2m 30s 3m 18s
dotnet publish 8s 2s

Les commandes sont lancées avec les paramètres suivants (au sein de scripts sh) :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
 
dotnet restore $NET_SOLUTION -p:IsDockerBuild=true
dotnet build $NET_SOLUTION --no-restore --configuration Release -p:IsDockerBuild=true -p:Version=$version
dotnet test $PARALLEL $FILTER $SLN --no-build --configuration release --collect:"XPlat Code Coverage" --results-directory ./coverage --logger trx
dotnet publish $UPDATE_DB_PROJECT --configuration Release -p:UseAppHost=false --output $UPDATE_DB_OUTPUT -p:IsDockerBuild=true
Au niveau infra, le pod est lancé sur un noeud dédié avec les mêmes ressources que la VM (4 CPU, 32 Go RAM, 300 Go disque) et sans limite de ressource fixée (le temps de la phase de test )

Le pod est basée sur l'image d'agent Bamboo (environnement Debian) sur laquelle est installé le SDK 8.0.101 ainsi que les outils dotnet-sonarscanner et dotnet-reportgenerator

Pour optimiser, au gré de mes recherches sur le problème, j'ai pour l'instant :


Les nuget sont gérés via un proxy nexus. Quand je vide le cache, il n'y a pas de soucis pour aller les récupérer depuis nexus. En mettant un peu plus de logs, j'ai vu que c'est surtout l'installation du nuget qui prend du temps.

Mais là, j'arrive à court d'idées.

Quelqu'un saurait-il comment procéder pour avoir les mêmes temps entre une VM et une solution containerisée ou tout du moins optimiser le process ?

Merci d'avance