Accès à un repo git via remote.git.username(JAVA_OPTS) | REMOTE_GIT_USERNAME(env) ne fonctionne pas

Bonsoir,

j’essaye d’externaliser mes credentials git pour les modules et j’ai invariablement quelle que soit la solution utlisée via remote.git.username(JAVA_OPTS) | REMOTE_GIT_USERNAME(env).

com.simplicite.util.exceptions.GitException: https://gitlabee.dt.renault.com/IRN-74196/simplicite/modules/RenaultAPI.git: Authentication is required but no CredentialsProvider has been registered

Ai-je raté quelque-chose ?

[Platform]
Status=OK
Version=5.2.45
BuiltOn=2023-08-07 15:34

Bonjour Bruno,

Je pense avoir trouvé le bug de chargement de ces paramètres, surement une coquille de copier/coller :

m_remoteGitUsername = getProperty("remote.git.username", System.getenv("REMOTE_GIT_USERNAME"));
m_remoteGitUsername = getProperty("remote.git.password", System.getenv("REMOTE_GIT_PASSWORD"));

m_remoteGitPassword n’est pas chargé, et le username prend le password…
Il n’y a pas d’accesseur en écriture pour t’aider à forcer les valeurs par code.
Il va falloir attendre la correction.

C’est poussé dans la revision 5.2.46

1 Like

Bonsoir François,

j’ai déployé la 5.2.47 en activant ce paramétrage (git.username/password) mais il y a encore un trou dans la raquette apparemment:

Les paramètres sont bien pris en compte pour les interactions “Repository Git” (initialisation, commit/push/pull) mais pas pour “Importer le module” :

Idem pour la fonction git-importspec via le ci/cd Dockerfile :

2023-09-15 20:22:23,226|SIMPLICITE|ERROR|There were errors during business modules imports
2023-09-15 20:22:23,225|SIMPLICITE|ERROR|Error during module RenaultQoD import
2023-09-15 20:22:23,223|SIMPLICITE|ERROR|https://gitlabee.dt.renault.com/IRN-74196/simplicite/modules/renaultqod.git: Authentication is required but no CredentialsProvider has been registered
    com.simplicite.util.exceptions.GitException: https://gitlabee.dt.renault.com/IRN-74196/simplicite/modules/renaultqod.git: Authentication is required but no CredentialsProvider has been registered
     at com.simplicite.util.tools.GitTool.clone(GitTool.java:313)
     at com.simplicite.util.Integration.importModuleFromSpec(Integration.java:786)

En remettant les username/password fourni via l’environnement dans le paramétrage du module, ça fonctionne :

Effectivement il manquait quelques passages de ces username/password fournis via des variables d’environnement.

Ce sera corrigé en 5.2.48 et 5.3.15

1 Like

Bonsoir David,

merci beaucoup pour la livraison de la 5.2.48.
J’ai installé le patch ce soir et il semble que ça ne fonctionne toujours pas dans le contexte git-importspec.yaml :

2023-09-21 22:26:07,044|SIMPLICITE|INFO|Platform: Simplicite 5.P02 2023-09-21 14:20 (revision 48) / UTF-8
...
2023-09-21 22:26:22,633|SIMPLICITE|INFO|Importing module RenaultQoD...
2023-09-21 22:26:26,807|SIMPLICITE|ERROR|https://gitlabee.dt.renault.com/IRN-74196/simplicite/modules/renaultapi.git: Authentication is required but no CredentialsProvider has been registered
2023-09-21 22:26:26,808|SIMPLICITE|ERROR|Error during module RenaultAPI import

Les variables sont bien disponibles dans l’environnement du conteneur :

ubuntu@xxxxxxxxxx:~$ kubectl exec -it $CNT -- /bin/bash -c "env | grep REMOTE_GIT"
Defaulted container "p01-template" out of: p01-template, cloudsql-proxy-template, install-oneagent (init)
REMOTE_GIT_PASSWORD=xxxxxxxxxxxxxxxxxxxxxxx
REMOTE_GIT_USERNAME=xxxxxxxxxxxx

Est-ce que ça marche pour un clone/import manuel ?

Oui je confirme que ça fonctionne pour le clone/commit/push/pull depuis “Git repository” et via la fonction “Import module”.

OK il doit y avoir une subtilité résiduelle dans le cas de l’import via importspec, on regarde

1 Like

Effectivement le parsing de l’importspec ne gérait pas de fallback sur les valeurs passées en argument JVM ou variable d’environnement pour le username et le password.

On va corriger et relivrer la 5.2.48 car c’est un impact très isolé

1 Like

La 5.2.48 a été rebuildée

Merci David pour le rebuild.
J’ai déployé la nouvelle image mais ça ne fonctionne toujours pas avec cependant une autre erreur:

https://gitlabee.dt.renault.com/IRN-74196/simplicite/modules/renaultqod.git: authentication not supported
com.simplicite.util.exceptions.GitException: https://gitlabee.dt.renault.com/IRN-74196/simplicite/modules/renaultqod.git: authentication not supported
	at com.simplicite.util.tools.GitTool.clone(GitTool.java:313)
	at com.simplicite.util.Integration.importModuleFromSpec(Integration.java:786)
	at com.simplicite.util.Integration.importModulesFromSpecs(Integration.java:1347)
	at com.simplicite.util.engine.Platform.importBusinessModules(Platform.java:1281)
	at com.simplicite.util.engine.Platform.init(Platform.java:276)
	at com.simplicite.webapp.listeners.ApplicationListener.contextInitialized(ApplicationListener.java:38)
	at org.apache.catalina.core.StandardContext.listenerStart(StandardContext.java:4462)
	at org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:4914)
	at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:171)
	at org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:683)
	at org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:658)
	at org.apache.catalina.core.StandardHost.addChild(StandardHost.java:662)
	at org.apache.catalina.startup.HostConfig.deployDirectory(HostConfig.java:1184)
	at org.apache.catalina.startup.HostConfig$DeployDirectory.run(HostConfig.java:1932)
	at java.base/java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:539)
	at java.base/java.util.concurrent.FutureTask.run(FutureTask.java:264)
	at org.apache.tomcat.util.threads.InlineExecutorService.execute(InlineExecutorService.java:75)
	at java.base/java.util.concurrent.AbstractExecutorService.submit(AbstractExecutorService.java:123)
	at org.apache.catalina.startup.HostConfig.deployDirectories(HostConfig.java:1094)
	at org.apache.catalina.startup.HostConfig.deployApps(HostConfig.java:476)
	at org.apache.catalina.startup.HostConfig.start(HostConfig.java:1617)
	at org.apache.catalina.startup.HostConfig.lifecycleEvent(HostConfig.java:318)
	at org.apache.catalina.util.LifecycleBase.fireLifecycleEvent(LifecycleBase.java:114)
	at org.apache.catalina.util.LifecycleBase.setStateInternal(LifecycleBase.java:402)
	at org.apache.catalina.util.LifecycleBase.setState(LifecycleBase.java:345)
	at org.apache.catalina.core.ContainerBase.startInternal(ContainerBase.java:893)
	at org.apache.catalina.core.StandardHost.startInternal(StandardHost.java:795)
	at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:171)
	at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1332)
	at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1322)
	at java.base/java.util.concurrent.FutureTask.run(FutureTask.java:264)
	at org.apache.tomcat.util.threads.InlineExecutorService.execute(InlineExecutorService.java:75)
	at java.base/java.util.concurrent.AbstractExecutorService.submit(AbstractExecutorService.java:145)
	at org.apache.catalina.core.ContainerBase.startInternal(ContainerBase.java:866)
	at org.apache.catalina.core.StandardEngine.startInternal(StandardEngine.java:249)
	at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:171)
	at org.apache.catalina.core.StandardService.startInternal(StandardService.java:433)
	at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:171)
	at org.apache.catalina.core.StandardServer.startInternal(StandardServer.java:922)
	at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:171)
	at org.apache.catalina.startup.Catalina.start(Catalina.java:772)
	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77)
	at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
	at java.base/java.lang.reflect.Method.invoke(Method.java:568)
	at org.apache.catalina.startup.Bootstrap.start(Bootstrap.java:347)
	at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:478)
Caused by: org.eclipse.jgit.api.errors.TransportException: https://gitlabee.dt.renault.com/IRN-74196/simplicite/modules/renaultqod.git: authentication not supported
	at org.eclipse.jgit.api.FetchCommand.call(FetchCommand.java:224)
	at org.eclipse.jgit.api.CloneCommand.fetch(CloneCommand.java:311)
	at org.eclipse.jgit.api.CloneCommand.call(CloneCommand.java:182)
	at com.simplicite.util.tools.GitTool.clone(GitTool.java:307)
	... 46 more
Caused by: org.eclipse.jgit.errors.TransportException: https://gitlabee.dt.renault.com/IRN-74196/simplicite/modules/renaultqod.git: authentication not supported
	at org.eclipse.jgit.transport.TransportHttp.connect(TransportHttp.java:674)
	at org.eclipse.jgit.transport.TransportHttp.openFetch(TransportHttp.java:465)
	at org.eclipse.jgit.transport.FetchProcess.executeImp(FetchProcess.java:141)
	at org.eclipse.jgit.transport.FetchProcess.execute(FetchProcess.java:93)
	at org.eclipse.jgit.transport.Transport.fetch(Transport.java:1317)
	at org.eclipse.jgit.api.FetchCommand.call(FetchCommand.java:213)
	... 49 more

Est-ce que ça pourrait venir de la configuration de notre gitlab ?
Lorsque je redonne des credentials explicites dans le git-importspec.yaml, ça refonctionne… :face_with_head_bandage:

Comment passes-tu exactement le username et le password en arg JVM ou en env var ?
Ces valeurs sont en fallback des valeurs en dur dans l’importspec…

N’y aurait il pas une subtilité du genre des quotes en trop ou manquantes en fct de la syntaxe supportée par le descripteur de déploiement utilisé ?

J’utilise les env vars REMOTE_GIT_PASSWORD et REMOTE_GIT_USERNAME (sans quote)

ubuntu@FRLH158926:~$ kubectl exec -it $CNT -- /bin/bash
Defaulted container "p01-template" out of: p01-template, cloudsql-proxy-template, install-oneagent (init)
[root@p01-template-594c84c88b-nrh4r tomcat]# env|grep GIT
REMOTE_GIT_PASSWORD=motdepasse123456789
REMOTE_GIT_USERNAME=usergit1234

Plus précisément, il s’agit du nom d’un access token et de l’access token généré depuis l’UI gitlabee.

Ca devrait pourtant fonctionner, il y a une subtilité qui doit m’échapper.
Peux tu me montrer l’importspec utilisé (avec et sans les credentials) ?

Je vais essayer de tester ça au plus près de ton cas =avec un module sur Github ou Gitlab

sans

modules:
  - name: "RenaultQoD"
    version: "9.9"
    git: "https://gitlabee.dt.renault.com/IRN-74196/simplicite/modules/renaultqod.git"
  - name: "RenaultAPI"
    version: "9.9"
    git: "https://gitlabee.dt.renault.com/IRN-74196/simplicite/modules/renaultapi.git"

avec

modules:
  - name: "RenaultQoD"
    version: "9.9"
    git: "https://usergit1234:motdepasse123456789@gitlabee.dt.renault.com/IRN-74196/simplicite/modules/renaultqod.git"
  - name: "RenaultAPI"
    version: "9.9"
    git: "https://usergit1234:motdepasse123456789@gitlabee.dt.renault.com/IRN-74196/simplicite/modules/renaultapi.git"

OK tu mets directement le username/password dans l’URI du repo Git.

Ce que fallback les args JVM / var d’env c’est les attributs username et password de l’importspec, ex:

modules:
  - name: "RenaultAPI"
    version: "9.9"
    git:
      uri: "https://gitlabee.dt.renault.com/IRN-74196/simplicite/modules/renaultapi.git"
      username: "usergit1234"
      password: "motdepasse123456789"

Peux tu me dire si ça marche dans ce type de config ?

OK vu !
Il restait un raté de copier/coller = le username qui finissait dans le password…

On rebuilde à nouveau la 5.2.48. Désolé

1 Like

La 5.2.48 a été rebuildée

1 Like

Et ça fonctionne! :slight_smile: merci bcp