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

Compare revisions

Changes are shown as if the source revision was being merged into the target revision. Learn more about comparing revisions.

Source

Select target project
No results found

Target

Select target project
  • arvernes.dev.public/gradle-plugin/maven-froggit-repository
1 result
Show changes
Commits on Source (2)
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
}