gradle 发布GitHub包返回422错误

thtygnil  于 2023-05-18  发布在  Git
关注(0)|答案(3)|浏览(306)

我已经在Android项目中使用GitHub包有一段时间了,没有任何问题。现在,当我尝试发布一个新的包时,我得到了一个错误:
无法从服务器接收状态码422:无法处理的实体
为了确保我没有改变任何东西,我回到了一个git-tag,几天前我成功地发布了一个包,我只改变了版本来生成一个不同的包。我得到了同样的错误。
我添加了日志,我可以看到令牌被正确读取,所有的值(GROUP,VERSION等)似乎正确,我试图发布的文件是在正确的文件夹。我也尝试创建和使用一个新的令牌,以防旧令牌出现问题,但它没有帮助。
如果我发布了太多文件,GitHub会拒绝发布该错误吗?我没有找到任何关于你在这种情况下得到的错误的文档。

编辑

我也试着创建一个新的项目并发布到那个项目,以防在最初的项目中有什么东西搞砸了,但它也没有工作。
我试着直接使用CURL来放置一个文件,这是有效的,这意味着令牌是正确的,问题不是发布包的总大小限制:

curl -X PUT \
"https://maven.pkg.github.com/companyname/repositoryname/com/companyname/artifactid/v2.1.520/artifactid-v2.1.520.aar" \
-H "Authorization: token mytoken” \
--upload-file “/full/path/to/file.aar" -vvv

当然,这不是解决方案,因为我需要发布maven repo与pom等。

结束编辑

这里我的配置已经工作了很长一段时间,这只是遵循文档+日志,我添加了调查问题。
build.gradle中:

allprojects {
    repositories {
        google()
        jcenter()
        maven {
            name = "GitHubPackages"
            url = uri("https://maven.pkg.github.com/companyname/companyname-android-sdk")
            credentials {
                username = project.findProperty("gpr.user") ?: System.getenv("GitHubPackagesUsername")
                password = project.findProperty("gpr.key") ?: System.getenv("GitHubPackagesToken")
                println "GitHubPackages build.gradle\n\tusername=$username\n\ttoken=$password"
            }
        }
    }
}

publish-artifacts.gradle

publishing {
    repositories {
        maven {
            name = "GitHubPackages"
            url = uri("https://maven.pkg.github.com/companyname/companyname-android-sdk")
            credentials {
                username = project.findProperty("gpr.user") ?: System.getenv("GitHubPackagesUsername")
                password = project.findProperty("gpr.key") ?: System.getenv("GitHubPackagesToken")
                println "GitHubPackages Publish Artifact:\n\tusername=$username\n\ttoken=$password"
            }
        }
    }

    publications {
        gpr(MavenPublication) {
            println "\tskSdkVersion=$SK_SDK_VERSION\n\tarchivesBaseName=$archivesBaseName\n\tGROUP=$GROUP\n\tdesciption=$POM_DESCRIPTION"
            println "artifact from $buildDir/outputs/aar/$archivesBaseName-${VARIANT_SUFFIX}.aar"
            groupId SK_GROUP
            version SK_SDK_VERSION
            artifactId archivesBaseName
            artifact "$buildDir/outputs/aar/$archivesBaseName-${VARIANT_SUFFIX}.aar"
            description POM_DESCRIPTION
            pom.packaging POM_PACKAGING
            pom.withXml {
                def dependenciesNode = asNode().appendNode('dependencies')
                configurations.implementation.allDependencies.each {
                    println "dependency=$it"
                    def dependencyNode = dependenciesNode.appendNode('dependency')
                    dependencyNode.appendNode('groupId', it.group)
                    dependencyNode.appendNode('artifactId', it.name)
                    dependencyNode.appendNode('version', it.version)
                }
            }
        }
    }
}

gradle.properties文件中:

POM_NAME=PackageName
POM_PACKAGING=aar
GROUP=com.companyname
POM_DESCRIPTION=CompanyName SDK Core library

VARIANT_SUFFIX由env变量设置。
archivesBaseName设置在模块的build.gradle

b1payxdu

b1payxdu1#

你能不能试着把你的艺术品编号降低一点?我也面临着同样的问题,下套管使它工作。
参考:https://github.community/t/gradle-maven-deploy-failing-with-422-unprocessable-entity/137299/3

8zzbczxx

8zzbczxx2#

在我的例子中,当工件的名称为apiserviceserde时,它被阻止了。例如. this worked <artifactId>database-ervice</artifactId> this did not database-service
编辑:当使用Postman做我得到的put请求时
Package "io.XXX.mydomain.xyz-service" is already associated with another repository.因此意识到该软件包以前在另一个回购中被销毁。
maven-deployer-plugin在报告PUT响应的错误消息方面非常差,所以不得不使用mintm来查找URL,使用Postman来弄清楚消息。

uemypmqf

uemypmqf3#

如果你遇到这个问题422: Unprocessable Entity,它也可能是b/c,你把它推到了同一个组织中的另一个仓库。
来源:https://github.com/orgs/community/discussions/23474

相关问题