我的构建通过直接在元素上使用 User + PAT(个人访问令牌)在本地运行pom.xml <repository>:
<repository>
<id>github</id>
<name>GitHub Packages</name>
<url>https://[USER]:[PAT]@maven.pkg.github.com/myaccount/myrepo</url>
</repository>
Run Code Online (Sandbox Code Playgroud)
从github下载:https://[USER]:[PAT]@maven.pkg.github.com/myaccount/myrepo/org/springframework/flex/spring-flex-core/1.6.1.BUILD-SNAPSHOT/maven- metadata.xml(796 B,592 B/s)
我的没有settings.xml配置。
然而,它在 Github Actions 工作流程上出现了问题:
警告:无法从 github 传输元数据 org.springframework.flex:spring-flex-core:1.6.1.BUILD-SNAPSHOT/maven-metadata.xml (***maven.pkg.github.com/myaccount/myrepo ):https: //maven.pkg.github.com/myaccount/myrepo/org/springframework/flex/spring-flex-core/1.6.1.BUILD-SNAPSHOT/maven-metadata.xml身份验证失败 401 未经授权
无法在 org.springframework.flex:spring-flex-core:jar:1.6.1.BUILD-SNAPSHOT 收集依赖项:无法读取 org.springframework.flex:spring-flex-core:jar:1.6.1 的工件描述符.构建快照
我的工作流程是这样的:
steps:
- uses: actions/checkout@v2
- name: Set up JDK 1.8
uses: actions/setup-java@v1
with:
java-version: 1.8
- name: Cache Maven packages
uses: actions/cache@v2
with:
path: ~/.m2
key: ${{ runner.os }}-m2-${{ hashFiles('**/pom.xml') }}
restore-keys: ${{ runner.os }}-m2
- name: Build with Maven …Run Code Online (Sandbox Code Playgroud) 试图将Gradle项目推送到Github程序包注册表,但是没有按预期工作。
使用io.freefair.github.package-registry-maven-publishGradle插件。
在GitHub中配置build.gradle发布所需的数据-以下代码。并运行发布任务publishAllPublicationsToGutHub。没有得到任何错误,但是我在GitHub软件包注册表中看不到我的软件包。
github {
slug
username = "myGitUserName"
token = "myTokenWithRightAccess"
tag = "HEAD"
travis = true
}
Run Code Online (Sandbox Code Playgroud)
期待一些如何使用Gradle发布到Github软件包注册表的示例,或者发布时我做错了什么
我在 Github Enterprise 上有一个 Lerna monorepo,它目前有两个 npm 包,我试图将它们发布到同一个 repo 下的 Github 包注册表。
作为参考,他们是:
我按照以下说明操作:https : //help.github.com/en/github/managing-packages-with-github-packages/configuring-npm-for-use-with-github-packages#publishing-multiple-packages-to -相同的存储库
所以现在我的 2 个 package.json 文件如下所示(出于格式化目的进行了修剪):
"name": "@mycompany/package-a",
"repository": {
"url": "ssh://git@github.com:mycompany/monorepo.git"
},
"publishConfig": {
"registry": "https://npm.pkg.github.com/"
},
Run Code Online (Sandbox Code Playgroud)
"name": "@mycompany/package-b",
"repository": {
"url": "ssh://git@github.com:mycompany/monorepo.git"
},
"publishConfig": {
"registry": "https://npm.pkg.github.com/"
},
Run Code Online (Sandbox Code Playgroud)
因此,您会注意到它们都具有与推荐的存储库相同的 URL。
第一个问题:一个是我的公司已经有 repos 调用package-a和package-b。似乎您不能与 monorepo 中的包和 monorepo 外的包发生命名冲突。¹
第二个也是更重要的问题: 这对我来说似乎根本不起作用。我改名为包在各自的package.json文件,以避免命名碰撞package-a-mono和package-b-mono我真的不希望这样做,但我只是试图得到它的工作。尝试在存储库本身lerna publish或npm publish内部运行时出现 404 。就像它实际上并没有尝试读取该repository.url …
我在GitHub Packages上托管了 nuget 包。然后,当我尝试使用 列出 github nuget feed 中的包时nuget.exe,它告诉我它无法列出 feed 中的包:
> nuget list -Source "https://nuget.pkg.github.com/mabead/index.json"
WARNING: This version of nuget.exe does not support listing packages from package source 'https://nuget.pkg.github.com/mabead/index.json'.
No packages found.
Run Code Online (Sandbox Code Playgroud)
请注意,当我使用单击“管理解决方案的 Nuget 包”后打开的窗口时,这些包已在 Visual Studio 中正确列出。因此,该 feed 可以工作,但不能与 nuget cli 一起使用。
我使用的是 nuget.exe 5.5.1 版本。
知道我正在使用什么来使用 CLI 列出软件包吗?
GitHub 包在error pulling image configuration: unknown blob本周末尝试拉取 docker 镜像时开始返回。它仍然可以将图像推送到注册表。我没有发现任何指向 GitHub 问题的信息。
000eee12ec04: Pulling fs layer
db438065d064: Pulling fs layer
e345d85b1d3e: Pulling fs layer
f6285e273036: Waiting
2354ee191574: Waiting
69189c7cf8d6: Waiting
771c701acbb7: Waiting
error pulling image configuration: unknown blob
Run Code Online (Sandbox Code Playgroud)
我该如何解决这个问题?
考虑我有一个 maven 插件项目,我想将它发布到 Github 的公共 maven 存储库,称为“Github Packages”。我已经按照说明完成了所有工作,对于普通项目,一切开箱即用。但是对于带有 Packaging=maven-plugin 的 maven 插件项目,该指令不起作用。
在构建日志中,我看到如下内容:
[警告] 无法从/向 github ( https://maven.pkg.github.com/user-name/repo-name )传输元数据 repo-name/maven-metadata.xml :无法传输文件: https:/ /maven.pkg.github.com/user-name/repo-name/group-id/maven-metadata.xml。返回码是: 422 , ReasonPhrase:Unprocessable Entity。
似乎maven deploy 插件需要在group-id 的根目录下有maven-metadata.xml,但是找不到它,也没有人把它放在那里。如何解决这个问题呢?
我使用 Apache Maven 3.3.9,并使用以下命令:
mvn clean deploy
Run Code Online (Sandbox Code Playgroud)
--Addition: 我正在使用的 pom 文件示例:
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<repositories>
<repository>
<id>central</id>
<url>https://repo1.maven.org/maven2</url>
<releases>
<enabled>true</enabled>
</releases>
<snapshots>
<enabled>true</enabled>
</snapshots>
</repository>
<repository>
<id>github</id>
<name>GitHub my_repo Apache Maven Packages</name>
<url>https://maven.pkg.github.com/my_nick/my_repo</url>
</repository>
</repositories>
<version>1.0.0</version>
<groupId>x</groupId>
<artifactId>some-plugin</artifactId>
<packaging>maven-plugin</packaging>
<dependencies> …Run Code Online (Sandbox Code Playgroud) java maven-plugin maven maven-deploy-plugin github-package-registry
我尝试学习 Github 操作和包。所以,我创建了一个示例 nuget 包并成功创建。但是我无法使用它。
我按照这一步;
之后,Visual Studio 不会向我询问此地址的任何凭据。
如果没有凭据,我会期望出错。我明白了。
[github] 无法从源“ https://nuget.pkg.github.com/[OrganizationName]/query?q=&skip=0&take=26&prerelease=false&semVerLevel=2.0.0 ”检索元数据。响应状态代码不表示成功:401(未授权)。
然后,我决定使用一些凭据,如github 文档中所述。
但是我仍然收到未经授权的错误。而且当我单击错误链接时,会收到这样的消息:
{"errors":[{"code":"您的令牌尚未获得执行此查询所需的范围。'id' 字段需要以下范围之一","message":" ['read:packages' ],但您的令牌仅被授予:[''] 范围。请在以下位置修改您的令牌的范围:https : //github.com/settings/tokens。"}]}
那么,我如何添加和使用我的私有 nuget 包?
nuget nuget-package visual-studio-2019 github-package-registry
我试图使用 github 包,我遵循了他们的基本教程中的所有步骤,但我无法部署,我已经在几个网站上查看了这个问题,但没有一个起作用。
部署时出错:
部署工件失败:找不到工件
我的settings.xml(来自github包教程):
<settings xmlns="http://maven.apache.org/SETTINGS/1.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/SETTINGS/1.0.0
http://maven.apache.org/xsd/settings-1.0.0.xsd">
<activeProfiles>
<activeProfile>github</activeProfile>
</activeProfiles>
<profiles>
<profile>
<id>github</id>
<repositories>
<repository>
<id>central</id>
<url>https://repo1.maven.org/maven2</url>
<releases>
<enabled>true</enabled>
</releases>
<snapshots>
<enabled>true</enabled>
</snapshots>
</repository>
<repository>
<id>github</id>
<url>https://maven.pkg.github.com/HenryFabio/maven-packages/</url>
<releases>
<enabled>true</enabled>
</releases>
<snapshots>
<enabled>true</enabled>
</snapshots>
</repository>
</repositories>
</profile>
</profiles>
<servers>
<server>
<id>github</id>
<username>HenryFabio</username>
<password>my token =)</password>
</server>
</servers>
</settings>
Run Code Online (Sandbox Code Playgroud)
我的pom.xml(这只是一个测试项目):
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.henryfabio</groupId>
<artifactId>github-packages</artifactId>
<version>1.0</version>
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
</properties>
<distributionManagement>
<repository>
<id>github</id>
<url>https://maven.pkg.github.com/HenryFabio/maven-packages/</url>
</repository>
</distributionManagement>
</project>
Run Code Online (Sandbox Code Playgroud)
堆栈跟踪: …
我很难将 0.0.1-SNAPSHOT 版本的 Java 库发布到 GitHub Packages。该库是一个 Gradle 项目。看起来,当版本不在 GitHub 上时,它会成功创建,但此后,它永远不会被更新/覆盖,发布新快照版本的唯一方法是物理删除现有版本。我的build.gradle:
plugins {
id 'java'
id 'maven-publish'
}
version = '0.0.1-SNAPSHOT'
publishing {
publications {
maven(MavenPublication) {
from components.java
}
}
repositories {
maven {
url = "https://maven.pkg.github.com/myOrg/myRepo"
credentials {
username = "myUsername"
password = "myPassword"
}
}
}
}
Run Code Online (Sandbox Code Playgroud)
当我这样做时gradle publish(无论是本地还是通过 GitHub 操作),日志都干净整洁
> Task :compileJava UP-TO-DATE
> Task :processResources NO-SOURCE
> Task :classes UP-TO-DATE
> Task :jar UP-TO-DATE
> Task :javadoc UP-TO-DATE
> Task …Run Code Online (Sandbox Code Playgroud) gradle maven maven-publish github-actions github-package-registry
有没有人设法让 Maven 动态版本解析与 GitHub 包一起工作?
我希望能够使用动态版本声明依赖项并解决它,如下所示:
dependencies {
compile 'com.example:my-package:1.+'
}
Run Code Online (Sandbox Code Playgroud)
在幕后,Gradle(我假设也是 Maven)使用一个名为的文件中的信息,该文件maven-metadata.xml包含存储库中存在哪些包和版本的详细信息,以将动态版本解析为特定版本(例如1.+可能解析为1.1.2)。但是,当我发布到 GitHub Packages 时,Gradle 日志显示该maven-metadata.xml文件资源不存在,因此它上传了一个新资源而没有错误。但是,当我尝试卷曲该文件时,我得到一个 404(意味着我要么正在发布,而 GitHub 正在悄悄地删除该文件,要么该文件在 GitHub 中并且在发布后对我不可见)。
// inside the Gradle debug logs, showing successful upload
14:43:16.332 [DEBUG] [org.gradle.internal.operations.DefaultBuildOperationExecutor] Build operation 'Upload https://maven.pkg.github.com/ORG/REPO/com/example/group/artifact-id/maven-metadata.xml' completed
Run Code Online (Sandbox Code Playgroud)
这给出了一个 404(当它应该解析为一个文件或给我一个重定向,我可以-L在curl命令上加上一个标志):
curl -X GET -v -H 'Authorization: token <some token here>' https://maven.pkg.github.com/ORG/REPO/com/example/group/artifact-id/maven-metadata.xml
Run Code Online (Sandbox Code Playgroud)
这是我用于依赖项解析的存储库配置闭包;我使用相同的一个来使用闭包maven-publish内的插件进行发布publishing{}。
repositories {
maven {
name = "GitHubPackages"
url = uri("https://maven.pkg.github.com/ORG/REPO")
credentials …Run Code Online (Sandbox Code Playgroud) maven ×6
github ×3
gradle ×3
java ×3
nuget ×2
deployment ×1
docker ×1
maven-plugin ×1
monorepo ×1