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) :
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 )
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
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 :
- Ajouter les variables d'environnements :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7 - name: DOTNET_NUGET_SIGNATURE_VERIFICATION value: "false" - name: DOTNET_RUNNING_IN_CONTAINER value: "true" - name: DOTNET_RUNNING_IN_CONTAINERS value: "true"- Ajouter les volumes suivants pour gérer le cache nuget
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7 - name: nuget-cache mountPath: /var/atlassian/application-data/bamboo-agent/.nuget/packages - name: nuget-local mountPath: var/atlassian/application-data/bamboo-agent/.local/share/NuGet - name: nuget-scratch mountPath: /tmp/- Ajouter au sein des csproj la balise
Code : Sélectionner tout - Visualiser dans une fenêtre à part <NuGetAudit>false</NuGetAudit>
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
Partager