Как перейти в реестр пакетов Github с помощью Gradle

Попытка перенести проект Gradle в реестр пакетов Github, но не работает должным образом.

Использование плагина io.freefair.github.package-registry-maven-publish для Gradle.

Сконфигурируйте GitHub в build.gradle с данными, необходимыми для публикации - код ниже. И запустите задачу публикации 'publishAllPublicationsToGutHub'. Ошибка не появляется, но я не вижу свой пакет в реестре пакетов GitHub.

github{
slug
username="myGitUserName"
token="myTokenWithRightAccess"
tag="HEAD"
travis=true
}

Ожидаю несколько примеров того, как публиковать в Github реестр реестра с помощью Gradle, или что я делаю неправильно при публикации

1 ответ

Решение

Похоже, плагин еще не очень стабилен. Взгляните на созданный мной репозиторий, в котором все настроено. Мне удалось опубликовать несколько пакетов с этим плагином здесь.

Даже если пакеты опубликованы, Gradle показывает задачу как невыполненную из-за некоторых проблем с maven-metadata.xml:

> Task :publishMainPublicationToGitHub madhead Maven PackagesRepository FAILED
Could not transfer metadata so57323260:test/maven-metadata.xml from/to remote (https://maven.pkg.github.com/madhead): Could not get resource 'so57323260/test/maven-metadata.xml'

FAILURE: Build failed with an exception.

* What went wrong:
Execution failed for task ':publishMainPublicationToGitHub madhead Maven PackagesRepository'.
> Failed to publish publication 'main' to repository 'GitHub madhead Maven Packages'
   > Could not GET 'https://maven.pkg.github.com/madhead/so57323260/test/maven-metadata.xml'. Received status code 422 from server: Unprocessable Entity

Но это нормально, вероятно, будет исправлено в один прекрасный день.

Я заметил, что пакеты могут быть не опубликованы (см. Связанную проблему) из-за неправильной groupId из Maven публикации. Кажется, прямо сейчас оно должно быть равно названию проекта Github. Итак, в моем случае мне пришлось использовать so57323260 как groupId для madhead/so57323260 проект. Обычно в Maven пакеты не работают, так что это может быть вашей проблемой.

Также стоит настроить действие github для публикации в репозитории пакетов github:


name: Publish package to GitHub Packages
on:
  release:
    types: [created]
jobs:
  publish:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v2
      - uses: actions/setup-java@v1
        with:
          java-version: 1.8
      - name: Publish package
        run: gradle -Pversion=${{ github.event.release.tag_name }} build publish
        env:
          GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}

Это публикует пакет каждый раз, когда мы создаем тег выпуска с этим тегом в качестве версии.

Мне удалось опубликовать в реестре пакетов Github с помощью плагина maven-publish. Кажется, теперь все работает нормально.

Мой файл build.gradle выглядит так:

buildscript {
    repositories {
        mavenCentral()
    }
}

plugins {
    id 'java'
    id 'maven-publish'
}

group 'com.company.project'
archivesBaseName = 'library-name'
version '0.1.0'

repositories {
    mavenCentral()
}

dependencies {
  // java dependencies
}

publishing {
    repositories {
        maven {
            name = "Github"
            url = uri("https://maven.pkg.github.com/<OWNER>/<REPO>")
            credentials {
                username = findProperty("github.username")
                password = findProperty("github.token")
            }
        }
    }
    publications {
        register("jar", MavenPublication) {
            from(components["java"])
            pom {
                url.set("https://github.com/<OWNER>/<REPO>.git")
            }
        }
    }
}

Поместите свое имя пользователя и токен github в файл gradle.properties.

GitHub опубликовал официальный документ Как использовать Gradle с упаковщиком GitHub

https://help.github.com/en/github/managing-packages-with-github-packages/configuring-gradle-for-use-with-github-packages

Правильно заполните эти свойства

  1. ВЛАДЕЛЕЦ
  2. ХРАНИЛИЩЕ
  3. USERNAME (или свойство gradle gpr.user)
  4. ПАРОЛЬ (или свойство gradle gpr.key)

@ Смотри демонстрацию

  1. https://github.com/youngerier/packagesdemo

  2. https://help.github.com/en/github/managing-packages-with-github-packages/configuring-gradle-for-use-with-github-packages

Другие вопросы по тегам