Pour tout problème contactez-nous par mail : support@froggit.fr | La FAQ :grey_question: | Rejoignez-nous sur le Chat :speech_balloon:

Skip to content
Snippets Groups Projects
Commit 3c9c2c97 authored by Vercingecodix's avatar Vercingecodix :infinity:
Browse files

FIX: Bug de recuperation des gradle.properties

parent e0ec7893
No related branches found
No related tags found
1 merge request!3FIX: Bug de recuperation des gradle.properties
Pipeline #61613 passed
stages:
- check_test
- publish
- deploy_docs
variables:
GRADLE_OPTS: "-Dorg.gradle.daemon=false"
......
![Maven](https://img.shields.io/badge/maven--froggit-1.0.0-success)
# 🐸 Froggit Repository Plugin
# Froggit Repository Plugin
Plugin Gradle pour simplifier l'ajout d'un dépôt Maven hébergé sur Froggit (GitLab).
Un plugin Gradle pour simplifier l'ajout de dépôts Maven hébergés sur **Froggit** (GitLab self-hosted).
---
## 🧩 Installation
## 🚀 Installation
Ajoute le plugin dans ton `settings.gradle.kts` :
Ajoute le dépôt Froggit pour les plugins dans ton `settings.gradle.kts` :
```kotlin
pluginManagement {
......@@ -18,11 +17,11 @@ pluginManagement {
}
```
Et dans le `build.gradle.kts` de ton projet :
Puis applique le plugin dans le `build.gradle.kts` de ton projet :
```kotlin
plugins {
id("dev.arvernes.froggit-repo") version "1.0.0"
id("dev.arvernes.froggit-repo") version "<VERSION>"
}
```
......@@ -30,52 +29,52 @@ plugins {
## 📦 Utilisation
Déclare ton dépôt dans le bloc `repositories` :
Ajoute un ou plusieurs dépôts Maven Froggit dans un build.gradle.kts``` :
```kotlin
repositories {
mavenFroggit(1234, "MY_TOKEN_VAR") // projectId Froggit, nom de la variable d'environnement ou propriété
}
froggitRepositories(
listOf(1980,1981),
tokenVarName = "MY_TOKEN_VAR"
)
```
Le plugin ajoute automatiquement l'authentification par token si la variable est définie.
> 🔐 Si la variable d'environnement ou de propriété `MY_TOKEN_VAR` est définie, le plugin ajoute automatiquement lauthentification avec un **token GitLab**.
---
## 🔐 Authentification
Le token d'accès doit être un **token personnel GitLab** avec les permissions suivantes :
Le token utilisé doit être un **token d’accès personnel GitLab** avec les scopes suivants :
- `read_api`
- `read_repository`
> ℹ️ Ces scopes sont nécessaires pour accéder au registre Maven des projets privés via HTTP.
### 🔑 Où définir ton token ?
Ces autorisations sont nécessaires pour accéder aux packages Maven privés via l’API GitLab.
Pour plus de sécurité, **il est recommandé d'utiliser `~/.gradle/gradle.properties` de l'utilisateur** :
### 💾 Où définir le token ?
**Méthode recommandée** (persistante et locale) :
```properties
# ~/.gradle/gradle.properties
MY_TOKEN_VAR=glpat-xxxxxxxxxxxxxxxxxxxx
```
Alternativement, tu peux le définir via une variable d’environnement (ex : en CI/CD) :
**Méthode alternative** (volatile, utile en CI/CD) :
```bash
export MY_TOKEN_VAR=glpat-xxxxxxxxxxxxxxxxxxxx
```
---
## ️ Comportement
## ️ Comportement
- Si le token n’est pas fourni, le dépôt est quand même déclaré (utile pour des packages publics).
- Un message d'avertissement s'affiche si la variable est attendue mais manquante.
- L'authentification est appliquée uniquement si le token est trouvé.
- ✅ Le dépôt est toujours déclaré, même sans token (utile pour les projets publics).
- ⚠️ Un avertissement saffiche si le token est manquant alors qu’une variable est spécifiée.
- 🔐 L’authentification est appliquée uniquement si le token est détecté.
---
## 📘 Exemple complet
## 🧪 Exemple complet
```kotlin
plugins {
......@@ -83,6 +82,7 @@ plugins {
}
repositories {
mavenFroggit(1978, "MAVEN_CONSUMER_TOKEN")
mavenFroggit(projectId = 1978, tokenVarName = "MAVEN_CONSUMER_TOKEN")
mavenCentral()
}
```
\ No newline at end of file
package dev.arvernes.froggit.repo
import org.gradle.api.artifacts.dsl.RepositoryHandler
import org.gradle.api.Project
import org.gradle.authentication.http.HttpHeaderAuthentication
import org.gradle.api.credentials.HttpHeaderCredentials
import org.gradle.kotlin.dsl.create
import org.gradle.kotlin.dsl.credentials
import org.gradle.kotlin.dsl.repositories
import java.net.URI
@Suppress("unused")
fun RepositoryHandler.mavenFroggit(projectId: Int, tokenVarName: String? = null) {
val token = tokenVarName?.let {
System.getenv(tokenVarName)
?: project.findProperty(tokenVarName)
}
tokenVarName?.let { name ->
if (token == null) {
println("⚠️ Warning: Token '$name' not found. Access may fail if the repository is private.")
fun Project.froggitRepositories(projectIds: List<Int>, tokenVarName: String? = null) {
val token = tokenVarName?.let { name ->
System.getenv(name) ?: findProperty(name) as? String
}.also {
if (tokenVarName != null && it == null) {
println("⚠️ Warning: Token '$tokenVarName' not found. Access may fail if the repository is private.")
}
}
maven {
name = "Froggit"
url = URI("https://lab.frogg.it/api/v4/projects/$projectId/packages/maven")
token?.let {
credentials(HttpHeaderCredentials::class) {
name = "Private-Token"
value = token
}
authentication {
create<HttpHeaderAuthentication>("header")
repositories {
projectIds.forEach { projectId ->
val mavenName = "Froggit-$projectId"
if (repositories.names.contains(mavenName)) return@forEach
maven {
name = mavenName
url = URI("https://lab.frogg.it/api/v4/projects/$projectId/packages/maven")
token?.let {
credentials(HttpHeaderCredentials::class) {
name = "Private-Token"
value = token
}
authentication {
create<HttpHeaderAuthentication>("header")
}
}
}
}
}
}
\ No newline at end of file
}
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment