Comment configurer Grails 2.4.0 pour résoudre les artefacts de JFrog Artifactory avec authentification ?

StackOverflow https://stackoverflow.com//questions/24000409

Question

C'est un problème qui survient tous les quelques mois.J'effectue quelques mises à niveau Grails et l'application ne parvient pas à résoudre mes artefacts à partir de mon référentiel d'artefacts sécurisé.Cette fois, j'ai effectué une mise à niveau vers Grails 2.4.0 et encore une fois le problème existe.J'ai configuré mon référentiel comme décrit dans la documentation Grails (qui semble très obsolète) mais Grails ne peut pas résoudre mes dépendances à partir de notre dépôt.Il ne s'authentifie pas correctement.

Alors mes dernières questions que beaucoup de gens ont déjà posées :

Comment configurer Grails (actuel 2.4.0) avec maven comme résolveur de dépendances pour fonctionner avec un référentiel Maven privé (artifactory) avec authentification correctement ?Que dois-je écrire dans mon BuildConfig pour qu'il fonctionne ?

Cela ne fonctionne pas :

if (Environment.current == Environment.PRODUCTION) {

    if (grails.project.dependency.resolver == "maven") {
        mavenRepo "http://repo.myRepoHost.com/plugins-release-local/", {
            auth([
                username: "reader",
                password: "readerPw"
            ])
        }
    }

}
Était-ce utile?

La solution 2

Je pourrais résoudre ce problème et découvrir pourquoi j'ai toujours eu des problèmes avec des référentiels d'artefactoriels qui nécessitent une authentification.

Il existe un problème d'état d'en-tête HTTP avec artefactory. Si vous avez effectué votre artificiel entièrement privé avec l'administrateur-> Security-> General-> Autoriser l'accès anonyme Cochez la case à cocher (non cochée) Tout fonctionne car artefactory répond avec un code d'état HTTP "401 Autorisation requise" et GRAVES fait une autre demande avec votre configuration Critiques d'autorisation qui fonctionne bien. Cochez la case non cochée

Si vous avez vérifié la case à cocher (car vous avez des référentiels privés et publics comme moi), vous obtenez des problèmes d'intro, car l'artefactory ne répond plus avec un code de statut 401. Au lieu de cela, il répond avec "404 non trouvé" même si L'artefact est dans le référentiel et seul Anonyme n'a pas accès à celui-ci. Dans Access.log, vous pouvez trouver "Téléchargement refusé" dans ce cas et Grails ne fait pas une deuxième demande avec les informations d'identification configurées en raison du code d'état 404. Cochez la case cochée

Vous devez donc créer des instances d'artefactorielles séparées pour vos référentiels publics et privés ou nous devons mettre en œuvre une nouvelle option de configuration pour les greils pour prendre en charge une fonctionnalité "Toujours authentifier" sur les référentiels choisis. Je vais le suggérer à l'équipe de développement des grails via Grails BugTracker et je rechercherai également les développeurs d'artefactory pour créer une option de contournement pour cela.

Autres conseils

La configuration suivante fonctionne pour moi avec Artifactory

grails.project.dependency.resolver = "maven"
grails.project.ivy.authentication = {
    repositories {
        mavenRepo('http://localhost:8081/artifactory/grails-remote') {
             auth([
                realm: "Artifactory Realm",
                username: 'user',
                password: 'pass'
            ])
        }
    }
}

grails.project.dependency.resolution = {
    ...
    repositories {
        inherits true
    }
    ...
}

Notez que le référentiel n'est pas défini dans le grails.project.dependency.resolution section.
De plus, vous devez vous assurer que l'utilisateur "lecteur" dispose des autorisations requises pour le référentiel "plugins-release-local".
Un bon moyen de tester la configuration du référentiel consiste à vérifier le journal des requêtes/accès Artifactory et à surveiller les requêtes effectuées par Grails.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top