Aller au contenu

Messages recommandés

Posté(e) (modifié)

Bonjour,

J'utilise docker 26.0.0 via l'IHM Portainer.

J'ai créé les 2 containers suivants avec succès:

  • Jenkins sur l'url http://0.0.0.0:32780 (localhost)
  • GitLAb sur l'url http://0.0.0.0:32769 (localhost)

Utilisés indépendemment, ces 2 applications fonctionnent bien. Mais je ne parviens pas à les faire communiquer.

 

Par exemple, j'ai créé un projet dans GitLab et un projet sous Jenkins.

Le projet sous Jenkins doit faire un "git clone" du projet sous GitLab, mais ça ne fonctionne pas.

Pourtant j'ai bien créé un jeton "Personal Access Token" sous GitLab de type "GitLab Token" ert de scope "API".

Et j'ai bien créé un crédential sous Jenkins qui utilise ce jeton (token).

Mais le test de connexion n'aboutit jamais 😞

J'obtiens tout le temps : Client error: Connect to 0.0.0.0:32769 [/0.0.0.0] failed: Connection refused (Connection refused)

Si quelqu'un a une idée ?

Merci.

 

Dominique

 

  • Niveau : Néophyte
  • Image : portainer/portainer-ce:latest, jenkins/jenkins-lts-jdk11, gitlab/gitlab-ce:latest
Modifié par domiq44
Posté(e)
Le 29/03/2024 à 6:33 PM, domiq44 a dit :

http://0.0.0.0:32780 (localhost)

0.0.0.0 ce n'est pas localhost (127.0.0.1), ce n'est même pas une interface, c'est un wildcard pour désigner toutes les IPv4.

Si tes conteneurs sont dans un même réseau bridge personnalisé, ils peuvent communiquer l'un avec l'autre via leur nom de conteneur.
S'ils sont définis dans la même stack, ils peuvent également communiquer par leur nom de service.

Pour joindre Gitlab l'URL est donc http://<nom_du_conteneur_gitlab>:32769 (sans les accolades)

Posté(e) (modifié)

Bonsoir et merci .Shad.

Voici mes containers qui sont dans un même réseau bridge, celui par défaut :

image.thumb.png.99affd5e5e1a7c8371cf0a2f3b0e84f2.png

Finalement, si j'utilise ladresse IP (je l'ai flouté dans la copie d'écran) comme ceci ça fonctionne :

  • GitLab : http://<IP Address de GitLab>:8080
  • Jenkins : http://<IP Address de Jenkins>:80

 

Par contre, si je prends le nom du container, ça ne fonctionne pas 😞

Pour exemple, ceci ne fonctionne hélas pas :

  • GitLab : http://gitlab:32770
  • Jenkins : http://jenkins:32771

Merci pour votre aide 😉

 

Modifié par domiq44
Posté(e)
Il y a 12 heures, domiq44 a dit :

Finalement, si j'utilise ladresse IP (je l'ai flouté dans la copie d'écran) comme ceci ça fonctionne :

Il n'y a aucun intérêt à flouter une IP privée, ce n'est pas routable publiquement, et ça donne des infos pour la résolution du problème.

Dans le réseau bridge par défaut, la résolution DNS par nom de conteneur ne fonctionne pas, il faut créer un réseau bridge personnalisé.
Il peut être interne (créé et supprimé suivant l'état des conteneurs qui l'intègrent) ou externe (persistant).

Comment tu as créé tes conteneurs ? via l'UI DSM sans ou avec projet ? Via l'UI Portainer ? en ligne de commande ?

Posté(e)
Il y a 11 heures, .Shad. a dit :

Comment tu as créé tes conteneurs ? via l'UI DSM sans ou avec projet ? Via l'UI Portainer ? en ligne de commande

Je les ai créé via l'UI Portainer.

Posté(e)
il y a 45 minutes, domiq44 a dit :

Je les ai créé via l'UI Portainer.

Si c'est le réseau en 172.17, les conteneurs ne peuvent pas communiquer entre eux nativement, quelles sont les IP de tes conteneurs ?

Posté(e)
Il y a 8 heures, .Shad. a dit :

Si c'est le réseau en 172.17, les conteneurs ne peuvent pas communiquer entre eux nativement, quelles sont les IP de tes conteneurs ?

Oui c'est bien ça :

image.thumb.png.bd7548ac06f7bcee95dd8c150ecaf50c.png

Posté(e)

@domiq44

Tu dois créer un réseau, que ce soit depuis Portainer, Container Manager ou en ligne de commande, par exemple :

create-docker-network-1.png

Et y adjoindre tes conteneurs.
Une fois tous membres d'un même "user-defined network", ils pourront communiquer entre eux par leur nom de conteneur.

Posté(e) (modifié)

Voilà qui est fait @.Shad.

 

image.thumb.png.32425195407af81ba2fbf405fad8a384.png

 

Et j'y ai adjoint les containers Jenkins et GitLab :

image.thumb.png.e86c93deb2adf8d7ae91ec190720abf6.png

 

J'ai laissé le container Portainer avec le network bridge par défaut.

Ce qui done :

image.thumb.png.d033c03cf42177dd88714752b4ca4462.png

 

Modifié par domiq44
Posté(e) (modifié)
Il y a 22 heures, .Shad. a dit :

@domiq44 Ok, mais ça marche ? 😄 

Ca va mieux, mais ça ne marche pas encore 😞

Voici ce que j'ai paramétré :

image.png.2e253552c1927cff99b68a1103319e89.png

Puis :

image.png.11de4c67070d4bd9221da95e83e3b40d.png

 

Cool ! Les test de connexion fonctionne enfin 🙂

Puis le petit projet test :

image.png.919c12fb021e22a65da980194894f0de.png

Qui plante lors du build :

 

Started by user Dominique Crétel
Running as SYSTEM
Building in workspace /var/jenkins_home/workspace/PremierGit
The recommended git tool is: NONE
No credentials specified
 > git rev-parse --resolve-git-dir /var/jenkins_home/workspace/PremierGit/.git # timeout=10
Fetching changes from the remote Git repository
 > git config remote.origin.url http://gitlab/root/jenkins-helloworld # timeout=10
Fetching upstream changes from http://gitlab/root/jenkins-helloworld
 > git --version # timeout=10
 > git --version # 'git version 2.39.2'
 > git fetch --tags --force --progress -- http://gitlab/root/jenkins-helloworld +refs/heads/*:refs/remotes/origin/* # timeout=10
ERROR: Error fetching remote repo 'origin'
hudson.plugins.git.GitException: Failed to fetch from http://gitlab/root/jenkins-helloworld
	at hudson.plugins.git.GitSCM.fetchFrom(GitSCM.java:999)
	at hudson.plugins.git.GitSCM.retrieveChanges(GitSCM.java:1241)
	at hudson.plugins.git.GitSCM.checkout(GitSCM.java:1305)
	at hudson.scm.SCM.checkout(SCM.java:540)
	at hudson.model.AbstractProject.checkout(AbstractProject.java:1248)
	at hudson.model.AbstractBuild$AbstractBuildExecution.defaultCheckout(AbstractBuild.java:649)
	at jenkins.scm.SCMCheckoutStrategy.checkout(SCMCheckoutStrategy.java:85)
	at hudson.model.AbstractBuild$AbstractBuildExecution.run(AbstractBuild.java:521)
	at hudson.model.Run.execute(Run.java:1895)
	at hudson.model.FreeStyleBuild.run(FreeStyleBuild.java:44)
	at hudson.model.ResourceController.execute(ResourceController.java:101)
	at hudson.model.Executor.run(Executor.java:442)
Caused by: hudson.plugins.git.GitException: Command "git fetch --tags --force --progress -- http://gitlab/root/jenkins-helloworld +refs/heads/*:refs/remotes/origin/*" returned status code 128:
stdout: 
stderr: remote: HTTP Basic: Access denied. The provided password or token is incorrect or your account has 2FA enabled and you must use a personal access token instead of a password. See http://gitlab/help/topics/git/troubleshooting_git#error-on-git-fetch-http-basic-access-denied
fatal: Authentication failed for 'http://gitlab/root/jenkins-helloworld.git/'

	at org.jenkinsci.plugins.gitclient.CliGitAPIImpl.launchCommandIn(CliGitAPIImpl.java:2846)
	at org.jenkinsci.plugins.gitclient.CliGitAPIImpl.launchCommandWithCredentials(CliGitAPIImpl.java:2185)
	at org.jenkinsci.plugins.gitclient.CliGitAPIImpl$1.execute(CliGitAPIImpl.java:635)
	at hudson.plugins.git.GitSCM.fetchFrom(GitSCM.java:997)
	... 11 more
ERROR: Error fetching remote repo 'origin'
Finished: FAILURE

 

Modifié par domiq44
Posté(e) (modifié)
il y a une heure, .Shad. a dit :

Faut préciser les ports à la suite du nom de conteneur, à moins que tout soit sur le port 80 ?

Les urls externes à Docker sont :

image.png.1a5a4da13ddbd6cff4ee458e6c1b3c1e.png

GitLab, quant à lui, est sur le port 80.

Ah oui ! Je ne l'avais pas vu, mais j'ai ça qui n'est pas accepté :

image.thumb.png.c633de87b1345067b7a54c07e80b3b7f.png

 

Modifié par domiq44
Posté(e) (modifié)
Le 04/04/2024 à 6:45 AM, .Shad. a dit :

Je ne sais pas si ça répond à ton problème : https://gitlab.com/gitlab-org/gitlab-foss/-/issues/38910

Il y a un mieux 😁

J'ai corrigé ici:

image.png.018226a091e83a239c154f82e2cab3fa.png

où j'ai flouté le token

et voici le résultat du build :

Started by user Dominique Crétel
Running as SYSTEM
Building in workspace /var/jenkins_home/workspace/PremierGit
The recommended git tool is: NONE
No credentials specified
 > git rev-parse --resolve-git-dir /var/jenkins_home/workspace/PremierGit/.git # timeout=10
Fetching changes from the remote Git repository
 > git config remote.origin.url http://root:personal_access_token@gitlab/root/jenkins-helloworld # timeout=10
Fetching upstream changes from http://root@gitlab/root/jenkins-helloworld
 > git --version # timeout=10
 > git --version # 'git version 2.39.2'
 > git fetch --tags --force --progress -- http://root:personal_access_token@gitlab/root/jenkins-helloworld +refs/heads/*:refs/remotes/origin/* # timeout=10
 > git rev-parse refs/remotes/origin/main^{commit} # timeout=10
Checking out Revision d0211590b94a817824ebff9882cc83ba25fd3bbb (refs/remotes/origin/main)
 > git config core.sparsecheckout # timeout=10
 > git checkout -f d0211590b94a817824ebff9882cc83ba25fd3bbb # timeout=10
Commit message: "Add new file"
 > git rev-list --no-walk d0211590b94a817824ebff9882cc83ba25fd3bbb # timeout=10
[PremierGit] $ /bin/sh -xe /tmp/jenkins12689535994454922481.sh
+ git clone http://gitlab/root/jenkins-helloworld.git
Cloning into 'jenkins-helloworld'...
fatal: could not read Username for 'http://gitlab': No such device or address
Build step 'Execute shell' marked build as failure
Finished: FAILURE

où j'ai remplacé "personal_access_token" par la valeur générée pour ce token dans GitLab.

J'ai l'impression que ça a un peu avancé un peu, sans aboutir.

Modifié par domiq44

Rejoindre la conversation

Vous pouvez publier maintenant et vous inscrire plus tard. Si vous avez un compte, connectez-vous maintenant pour publier avec votre compte.

Invité
Répondre à ce sujet…

×   Collé en tant que texte enrichi.   Coller en tant que texte brut à la place

  Seulement 75 émoticônes maximum sont autorisées.

×   Votre lien a été automatiquement intégré.   Afficher plutôt comme un lien

×   Votre contenu précédent a été rétabli.   Vider l’éditeur

×   Vous ne pouvez pas directement coller des images. Envoyez-les depuis votre ordinateur ou insérez-les depuis une URL.

×
×
  • Créer...

Information importante

Nous avons placé des cookies sur votre appareil pour aider à améliorer ce site. Vous pouvez choisir d’ajuster vos paramètres de cookie, sinon nous supposerons que vous êtes d’accord pour continuer.