Saltar al contenido
mypipelines
Pipelines Actions Gradle Buscar

GitHub Packages: consumir y publicar SDKs

Los SDKs internos (codehunters-sdk-*) se publican y consumen desde GitHub Packages (registry Maven). Credenciales siempre por env var, nunca en el repo.

Consumir

Declarar el repo en allprojects con credenciales de entorno:

build.gradle.kts
allprojects {
repositories {
mavenCentral()
maven {
name = "GitHubPackages"
url = uri("${project.findProperty("github_packages_url")}/codehunters")
credentials {
username = System.getenv("GH_PACKAGES_USERNAME")
password = System.getenv("GH_PACKAGES_TOKEN") // PAT con read:packages
}
}
}
}
gradle.properties
github_packages_url = https://maven.pkg.github.com/CODEHUNTERS

Luego se consume como cualquier dependencia, con versión pineada:

implementation("io.codehunters:codehunters-sdk-event-messaging:${property("sdk.event.messaging.version")}")

Publicar un SDK

En el repo del SDK, maven-publish apuntando al mismo registry:

build.gradle.kts (repo del SDK)
plugins {
`java-library`
`maven-publish`
}
publishing {
publications {
create<MavenPublication>("maven") {
groupId = "io.codehunters"
artifactId = "codehunters-sdk-event-messaging"
version = project.version.toString()
from(components["java"])
}
}
repositories {
maven {
name = "GitHubPackages"
url = uri("https://maven.pkg.github.com/CODEHUNTERS/codehunters-sdk-event-messaging")
credentials {
username = System.getenv("GH_PACKAGES_USERNAME")
password = System.getenv("GH_PACKAGES_TOKEN") // PAT con write:packages
}
}
}
}

Publicar: ./gradlew publish.

Tips

  • Scopes del token: consumir → read:packages; publicar → write:packages (+ read:packages). En Actions, GITHUB_TOKEN alcanza para el mismo org.
  • Limpieza de versiones viejas: las versiones snapshot/pre-release se acumulan en el registry — usá la action Delete Package Versions para retención automática.
  • No pinees en el build: las versiones de SDK viven en gradle.properties (sdk.*.version), un solo lugar para bumpear.