Publicar paquetes Java con Gradle

Puedes usar Gradle para publicar paquetes Java en un registro como parte de tu flujo de trabajo de integración continua (CI).

Nota: Los ejecutores hospedados en GitHub no son compatibles con GitHub Enterprise Server actualmente. Puedes encontrar más información sobre el soporte que se tiene planeado en el futuro en el Itinerario público de GitHub.

Introducción

Esta guía te muestra cómo crear un flujo de trabajo que publique paquetes de Java en Registro del paquete de GitHub y en el Repositorio Central de Maven. Con un solo flujo de trabajo, puedes publicar los paquetes en un solo repositorio o en varios repositorios.

Prerrequisitos

Te recomendamos que tengas una comprensión básica de los archivos de flujo de trabajo y las opciones de configuración. Para obtener más información, consulta la sección "Aprende sobre GitHub Actions".

Para obtener más información acerca de la creación de un flujo de trabajo de CI para tu proyecto Java con Gradle, consulta "Construir y probar Java con Gradle".

También puede ser útil tener un entendimiento básico de lo siguiente:

Acerca de la configuración del paquete

Los campos groupId y artifactId en la sección MavenPublication del archivo build.gradle crean un identificador único para tu paquete que los registros usan para vincular tu paquete a un registro. Esto es similar a los campos groupId y artifactId del archivo pom.xml de Maven. Para obtener más información, consulta "Maven Publish Plugin" en la documentación de Gradle.

El archivo build.gradle también contiene la configuración de los repositorios de administración de distribución en los que Gradle publicará los paquetes. Cada repositorio debe tener un nombre, una URL de implementación y credenciales para la autenticación.

Publicar paquetes en el repositorio central de Maven

Cada vez que creas un lanzamiento nuevo, puedes desencadenar un flujo de trabajo para publicar tu paquete. El flujo de trabajo en el ejemplo a continuación se ejecuta cuando el evento lanzamiento desencadena con tipo creado. El flujo de trabajo publica el paquete en el repositorio central de Maven si se pasan las pruebas de CI. Para obtener más información acerca del evento release, consulta "Eventos que activan flujos de trabajo".

Puedes definir un nuevo repositorio de Maven en el bloque de publicación de tu archivo build.gradle que apunta al repositorio de tu paquete. Por ejemplo, si estás desplegando en el repositorio central de Maven a través del proyecto de alojamiento OSSRH, tu build.gradle podría especificar un repositorio con el nombre "OSSRH".

groovy
plugins {
  ...
  id 'maven-publish'
}

publishing {
  ...

  repositories {
    maven {
      name = "OSSRH"
      url = "https://oss.sonatype.org/service/local/staging/deploy/maven2/"
      credentials {
        username = System.getenv("MAVEN_USERNAME")
        password = System.getenv("MAVEN_PASSWORD")
      }
    }
  }
}

Con esta configuración, puedes crear un flujo de trabajo que publique tu paquete en el repositorio central de Maven al ejecutar el comando gradle publish. En el paso de implementación, necesitarás establecer variables de entorno para el nombre de usuario y la contraseña o token que usas para autenticar en el repositorio de Maven. Para obtener más información, consulta "Crear y usar secretos cifrados."

YAML
# This workflow uses actions that are not certified by GitHub.
# Estas las proporcionan entidades terceras y las gobiernan
# condiciones de servicio, políticas de privacidad y documentación de soporte
# documentación.

name: Publish package to the Maven Central Repository
on:
  release:
    types: [created]
jobs:
  publish:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v2
      - name: Set up Java
        uses: actions/setup-java@v2
        with:
          java-version: '11'
          distribution: 'adopt'
      - name: Validate Gradle wrapper
        uses: gradle/wrapper-validation-action@e6e38bacfdf1a337459f332974bb2327a31aaf4b
      - name: Publish package
        run: gradle publish
        env:
          MAVEN_USERNAME: ${{ secrets.OSSRH_USERNAME }}
          MAVEN_PASSWORD: ${{ secrets.OSSRH_TOKEN }}

Este flujo de trabajo realiza los siguientes pasos:

  1. Verifica una copia del repositorio del proyecto.

  2. Configura el JDK de Java.

  3. Valida las sumas de comprobación de cualquier archivo JAR Wrapper de Gradle en el repositorio.

  4. Ejecuta el comando gradle publish para publicar en el repositorio Maven OSSRH. La variable de entorno MAVEN_USERNAME se establecerá con los contenidos de tu OSSRH_USERNAME secreto, y la variable de entorno MAVEN_PASSWORD se establecerá con los contenidos de tu OSSRH_TOKEN secreto.

    Para obtener más información acerca del uso de secretos en tu flujo de trabajo, consulta "Crear y usar secretos cifrados".

Sube paquetes al Registro del paquete de GitHub

Cada vez que creas un lanzamiento nuevo, puedes desencadenar un flujo de trabajo para publicar tu paquete. El flujo de trabajo en el ejemplo a continuación se ejecuta cuando el evento lanzamiento desencadena con tipo creado. El flujo de trabajo publica el paquete en el Registro del paquete de GitHub si se superan las pruebas de CI. Para obtener más información acerca del evento release, consulta "Eventos que activan flujos de trabajo".

Puedes definir un nuevo repositorio de Maven en el bloque de publicación de tu build.gradle que apunte a Registro del paquete de GitHub. En esa configuración de repositorio, también puedes aprovechar las variables de entorno establecidas en tu ejecución de flujo de trabajo de CI. Puedes usar la variable de entorno GITHUB_ACTOR como nombre de usuario y puedes establecer la variable de entorno GITHUB_TOKEN con tu GITHUB_TOKEN secreto.

El secreto de GITHUB_TOKEN se configuro para un token de acceso para el repositorio cada vez que comienza un job en un flujo de trabajo. You should set the permissions for this access token in the workflow file to grant read access for the contents scope and write access for the packages scope. Para obtener más información, consulta la sección "Autenticarte con el GITHUB_TOKEN".

Por ejemplo, si tu organización se llama "octocat" y tu repositorio se llama "hello-world", entonces la configuración Registro del paquete de GitHub en build.gradle tendría un aspecto similar al ejemplo a continuación.

groovy
plugins {
  ...
  id 'maven-publish'
}

publishing {
  ...

  repositories {
    maven {
      name = "GitHubPackages"
      url = "https://maven.pkg.github.com/octocat/hello-world"
      credentials {
        username = System.getenv("GITHUB_ACTOR")
        password = System.getenv("GITHUB_TOKEN")
      }
    }
  }
}

Con esta configuración, puedes crear un flujo de trabajo que publique tu paquete en el Registro del paquete de GitHub ejecutando el comando gradle publish.

YAML
# This workflow uses actions that are not certified by GitHub.
# Estas las proporcionan entidades terceras y las gobiernan
# condiciones de servicio, políticas de privacidad y documentación de soporte
# documentación.

name: Publish package to GitHub Packages
on:
  release:
    types: [created]
jobs:
  publish:
    runs-on: ubuntu-latest 
    permissions: 
      contents: read
      packages: write 
    steps:
      - uses: actions/checkout@v2
      - uses: actions/setup-java@v2
        with:
          java-version: '11'
          distribution: 'adopt'
      - name: Validate Gradle wrapper
        uses: gradle/wrapper-validation-action@e6e38bacfdf1a337459f332974bb2327a31aaf4b
      - name: Publish package
        run: gradle publish
        env:
          GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}

Este flujo de trabajo realiza los siguientes pasos:

  1. Verifica una copia del repositorio del proyecto.

  2. Configura el JDK de Java.

  3. Valida las sumas de comprobación de cualquier archivo JAR Wrapper de Gradle en el repositorio.

  4. Ejecuta el comando gradle publish comando para publicar en Registro del paquete de GitHub. La variable de entorno GITHUB_TOKEN se establecerá con el contenido del GITHUB_TOKEN secreto. The permissions key specifies the access that the GITHUB_TOKEN secret will allow.

    Para obtener más información acerca del uso de secretos en tu flujo de trabajo, consulta "Crear y usar secretos cifrados".

Publicar paquetes en el repositorio central de Maven y Registro del paquete de GitHub

Puedes publicar tus paquetes en el repositorio central de Maven y Registro del paquete de GitHub al configurar cada uno de ellos en tu archivo build.gradle.

Asegúrate de que tu archivo build.gradle incluya un repositorio para tu repositorio GitHub y para tu proveedor de repositorios centrales de Maven.

Por ejemplo, si implementas el repositorio central a través del proyecto de alojamiento OSSRH, es posible que desees especificarlo en un repositorio de administración de distribución con el name establecido en OSSRH. Si implementas para Registro del paquete de GitHub, es posible que desees especificarlo en un repositorio de administración de distribución con el name establecido en GitHubPackages.

Si tu organización se nombra como "octocat" y tu repositorio como "hello-world", entonces la configuración en build.gradle se vería similar al siguiente ejmplo.

groovy
plugins {
  ...
  id 'maven-publish'
}

publishing {
  ...

  repositories {
    maven {
      name = "OSSRH"
      url = "https://oss.sonatype.org/service/local/staging/deploy/maven2/"
      credentials {
        username = System.getenv("MAVEN_USERNAME")
        password = System.getenv("MAVEN_PASSWORD")
      }
    }
    maven {
      name = "GitHubPackages"
      url = "https://maven.pkg.github.com/octocat/hello-world"
      credentials {
        username = System.getenv("GITHUB_ACTOR")
        password = System.getenv("GITHUB_TOKEN")
      }
    }
  }
}

Con esta configuración, puedes crear un flujo de trabajo que publique tu paquete en el repositorio central de Maven y Registro del paquete de GitHub al ejecutar el comando gradle publish.

YAML
# This workflow uses actions that are not certified by GitHub.
# Estas las proporcionan entidades terceras y las gobiernan
# condiciones de servicio, políticas de privacidad y documentación de soporte
# documentación.

name: Publish package to the Maven Central Repository and GitHub Packages
on:
  release:
    types: [created]
jobs:
  publish:
    runs-on: ubuntu-latest 
    permissions: 
      contents: read
      packages: write 
    steps:
      - uses: actions/checkout@v2
      - name: Set up Java
        uses: actions/setup-java@v2
        with:
          java-version: '11'
          distribution: 'adopt'
      - name: Validate Gradle wrapper
        uses: gradle/wrapper-validation-action@e6e38bacfdf1a337459f332974bb2327a31aaf4b
      - name: Publish package
        run: gradle publish
        env: 
          MAVEN_USERNAME: ${{ secrets.OSSRH_USERNAME }}
          MAVEN_PASSWORD: ${{ secrets.OSSRH_TOKEN }}
          GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}

Este flujo de trabajo realiza los siguientes pasos:

  1. Verifica una copia del repositorio del proyecto.

  2. Configura el JDK de Java.

  3. Valida las sumas de comprobación de cualquier archivo JAR Wrapper de Gradle en el repositorio.

  4. Ejecuta el comando gradle publish para publicar en el repositorio Maven OSSRH y Registro del paquete de GitHub. La variable de entorno MAVEN_USERNAME se establecerá con los contenidos de tu OSSRH_USERNAME secreto, y la variable de entorno MAVEN_PASSWORD se establecerá con los contenidos de tu OSSRH_TOKEN secreto. La variable de entorno GITHUB_TOKEN se establecerá con el contenido del GITHUB_TOKEN secreto. The permissions key specifies the access that the GITHUB_TOKEN secret will allow.

    Para obtener más información acerca del uso de secretos en tu flujo de trabajo, consulta "Crear y usar secretos cifrados".

¿Te ayudó este documento?

Política de privacidad

¡Ayúdanos a hacer geniales estos documentos!

Todos los documentos de GitHub son de código abierto. ¿Notas algo que esté mal o que no sea claro? Emite una solicitud de cambios.

Haz una contribución

O, aprende cómo contribuir.