发布 GitHub 包 returns 422 错误
Publishing GitHub Packages returns 422 error
我在 Android 项目中使用 GitHub 包有一段时间了,没有任何问题。
现在,当我尝试发布新包时出现错误:
Could not PUT Received status code 422 from server: Unprocessable Entity
为了确保我没有更改任何东西,我回到了 git-tag,几天前我成功地从该标签发布了一个包,我只更改了版本以生成不同的包裹。我得到同样的错误。
我添加了日志,我可以看到令牌被正确读取,所有值(GROUP、VERSION 等)似乎都是正确的,并且我尝试发布的文件位于正确的文件夹中。
我也曾尝试创建和使用新令牌,以防旧令牌出现问题但没有帮助。
万一我发布了太多文件,GitHub 是否会因该错误而拒绝发布?我没有找到任何关于您在这种情况下遇到的错误的文档。
编辑
我也尝试过创建一个新项目并 post 到那个项目,以防万一在最初的项目中出现问题,但它也没有用。
我尝试使用 CURL 直接 PUT 文件,这成功了,这意味着令牌是正确的,问题不是已发布包的总大小限制:
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
当然,这不是解决方案,因为我需要 post 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
从环境变量设置。
archivesBaseName
设置在模块的build.gradle
您可以试试小写您的神器 ID 吗?
我遇到了同样的问题,将其小写后就可以了。
参考:https://github.community/t/gradle-maven-deploy-failing-with-422-unprocessable-entity/137299/3
在我的例子中,当工件的名称为 api
或 service
或 serde
时,它被阻止了。例如。这有效 <artifactId>database-ervice</artifactId>
这有效 不 数据库服务
编辑:
当使用 Postman 做 put 请求时,我得到了
Package "io.XXX.mydomain.xyz-service" is already associated with another repository.
意识到该包之前已部署在另一个仓库中。
maven-deployer-plugin
在报告 PUT 响应的错误消息方面非常糟糕,因此不得不使用 mintm 来查找 url 和 Postman 来找出消息。
我在 Android 项目中使用 GitHub 包有一段时间了,没有任何问题。 现在,当我尝试发布新包时出现错误:
Could not PUT Received status code 422 from server: Unprocessable Entity
为了确保我没有更改任何东西,我回到了 git-tag,几天前我成功地从该标签发布了一个包,我只更改了版本以生成不同的包裹。我得到同样的错误。
我添加了日志,我可以看到令牌被正确读取,所有值(GROUP、VERSION 等)似乎都是正确的,并且我尝试发布的文件位于正确的文件夹中。 我也曾尝试创建和使用新令牌,以防旧令牌出现问题但没有帮助。
万一我发布了太多文件,GitHub 是否会因该错误而拒绝发布?我没有找到任何关于您在这种情况下遇到的错误的文档。
编辑
我也尝试过创建一个新项目并 post 到那个项目,以防万一在最初的项目中出现问题,但它也没有用。
我尝试使用 CURL 直接 PUT 文件,这成功了,这意味着令牌是正确的,问题不是已发布包的总大小限制:
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
当然,这不是解决方案,因为我需要 post 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
从环境变量设置。
archivesBaseName
设置在模块的build.gradle
您可以试试小写您的神器 ID 吗? 我遇到了同样的问题,将其小写后就可以了。
参考:https://github.community/t/gradle-maven-deploy-failing-with-422-unprocessable-entity/137299/3
在我的例子中,当工件的名称为 api
或 service
或 serde
时,它被阻止了。例如。这有效 <artifactId>database-ervice</artifactId>
这有效 不 数据库服务
编辑: 当使用 Postman 做 put 请求时,我得到了
Package "io.XXX.mydomain.xyz-service" is already associated with another repository.
意识到该包之前已部署在另一个仓库中。
maven-deployer-plugin
在报告 PUT 响应的错误消息方面非常糟糕,因此不得不使用 mintm 来查找 url 和 Postman 来找出消息。