标签: github-package-registry

GitHub 包注册表中的公共和私有包

是否可以将包可见性从私有更改为公共,反之亦然?

文档中有一个声明:

私有和公共软件包:您可以私下托管软件包或将其设为公开。您可以私下托管包并与您的同事或组织共享,或将它们向全世界公开。

但是我在 repo 中找不到任何设置,也没有在文档中找到有关如何将包公开的信息。

我试图实现的用例:带有 SDK 源代码和公共(稳定版本)/私有(内部测试)包的私有存储库。

我们可以使用公共版本创建一个单独的公共存储库,但这有点开销并且破坏了将代码和包托管在一个地方的主要思想

GitHub Package Registry 是一种软件包托管服务,类似于 npmjs.org、rubygems.org 或 hub.docker.com,它允许您在一个地方托管您的包和代码。

将不胜感激任何帮助和信息。

github github-package-registry

6
推荐指数
1
解决办法
1572
查看次数

在 CircleCI 中安装 GitHub 包

对于我的项目,我正在尝试从 GitHub Packages 安装(而不是发布!)一个 npm 包。它托管在组织中的私有存储库上。我已经制作了一个个人访问令牌,具有从该 repo 和 org 读取所需的权限。所有这些都可以通过以下步骤在本地工作

  • .npmrc文件中设置注册表:registry=https://npm.pkg.github.com/OWNER
  • 终端登录:npm login --registry=https://npm.pkg.github.com 然后会提示:
> Username: USERNAME
> Password: TOKEN
> Email: PUBLIC-EMAIL-ADDRESS
Run Code Online (Sandbox Code Playgroud)
  • Username 是你的标准 github 用户名
  • Token 是使用正确权限创建的个人访问令牌
  • Email 可以是随机的

填写完成后,一切正常,我可以安装该包,以及托管在普通 npm 注册表中的所有其他包。现在问题来了:我试图在 circleCI 上复制相同的内容,但它似乎并没有让我覆盖 npm 注册表。该项目在.npmrc其所在的同一文件夹中包含一个文件package.json。这是圆 ci conf 的一部分:

      - run:
          name: "Set NPM registry"
          command: npm config set registry https://npm.pkg.github.com/OWNER
      - run:
          name: "Authenticate with GitHub package registry"
          command: echo "//npm.pkg.github.com/:_authToken=${GITHUB_PACKAGES}" > web_ui/frontend/.npmrc
      - …
Run Code Online (Sandbox Code Playgroud)

github circleci circleci-2.0 github-package-registry

6
推荐指数
1
解决办法
2003
查看次数

使用 GitHub 包注册表作为 PowerShell 包存储库

据我所知,PowerShell 存储库是 NuGet 存储库...

GitHub 刚刚发布了他们的包注册表,我的公司目前将其用于 npm,但也有一个用于 NuGet 的端点。

我可以使用我的 GitHub 凭据访问 NuGet 端点 ( https://nuget.pkg.github.com/mycompany/index.json ),它返回一个有效的 json:

{
      "version": "3.0.0-beta.1",
      "resources": [
        {
          "@id": "https://nuget.pkg.github.com/mycompany/download",
          "@type": "PackageBaseAddress/3.0.0",
          "comment": "Get package content (.nupkg)."
        },
        {
          "@id": "https://nuget.pkg.github.com/mycompany/query",
          "@type": "SearchQueryService",
          "comment": "Filter and search for packages by keyword."
        },
        {
          "@id": "https://nuget.pkg.github.com/mycompany/query",
          "@type": "SearchQueryService/3.0.0-beta",
          "comment": "Filter and search for packages by keyword."
        },
        {
          "@id": "https://nuget.pkg.github.com/mycompany/query",
          "@type": "SearchQueryService/3.0.0-rc",
          "comment": "Filter and search for packages by keyword."
        }, …
Run Code Online (Sandbox Code Playgroud)

powershell nuget powershell-module github-package-registry

6
推荐指数
2
解决办法
959
查看次数

发布 GitHub 包返回 422 错误

我在 Android 项目中使用 GitHub 包有一段时间了,没有任何问题。现在,当我尝试发布新包时,出现错误:

无法 PUT 从服务器接收到状态代码 422:无法处理的实体

为了确保我没有更改任何内容,我回到了几天前成功发布包的 git-tag,我只更改了版本以生成不同的包。我犯了同样的错误。

我添加了日志,我可以看到令牌被正确读取,所有值(组、版本等)似乎都是正确的,并且我尝试发布的文件位于正确的文件夹中。我还尝试创建和使用新令牌,以防旧令牌出现问题,但无济于事。

如果我发布了太多文件,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
Run Code Online (Sandbox Code Playgroud)

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

结束编辑

在这里,我的配置已经工作了很长时间,并且只是按照文档+我添加的日志来调查问题。

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"
            }
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

publish-artifacts.gradle

publishing …
Run Code Online (Sandbox Code Playgroud)

android gradle github-package-registry

6
推荐指数
2
解决办法
1702
查看次数

如何在 Github 包中添加我的 Android 库的依赖项?

我正在构建一个 Android 库(例如MyLibrary),它将添加到我公司的其他应用程序中。该库在文件中有一些依赖项,build.gradle如下所示:

dependencies{
    implementation 'com.alimuzaffar.lib:pinentryedittext:2.0.6'
    implementation "com.google.android.gms:play-services-auth-api-phone:17.3.0"
// ... other dependencies
}

Run Code Online (Sandbox Code Playgroud)

创建库后,我创建了一个 Github 包,因此我可以将其添加到s文件AppDemo中的另一个应用程序(例如),如下所示:AppDemobuild.gradle

dependencies{
    implementation 'com.mycompany:mylibrary:1.2.3'
    // other dependencies
}
Run Code Online (Sandbox Code Playgroud)

问题是我遇到依赖项错误,即缺少MyLibrarys 依赖项(在本例中为pinentryedittextplay-services-auth-api-phone如上面库的文件所示)。build.gradle我用谷歌搜索了这个问题并尝试了一些解决方案,例如Mobbeel fataar gradle 插件和其他一些类似的插件,但我无法使它们工作。有人可以帮我解决这个问题或者给我一个工作样本吗?任何帮助都将非常重要。

java android github gradle github-package-registry

5
推荐指数
1
解决办法
1704
查看次数

执行 npm 发布时 github 托管包失败

上周工作正常,所以不确定发生了什么。(对一些格式表示歉意,因为它有很多行日志)

节点版本:v10.15.3

npm 版本:6.4.1

npm publish在我的项目文件夹中执行此操作并收到以下错误:

npm ERR! code E400
npm ERR! failed to stream package from json: repo name with owner has wrong number of components: [github.com company dev-js] (wanted 2, got 3) : @company/dev-js

npm ERR! A complete log of this run can be found in:
npm ERR!     /home/luke/.npm/_logs/2020-01-27T16_00_11_703Z-debug.log
Run Code Online (Sandbox Code Playgroud)

调试日志如下:

18 verbose getPublishConfig { registry: 'https://npm.pkg.github.com/' }
19 silly mapToRegistry name @company/dev-js
20 silly mapToRegistry scope (from package name) @company
21 verbose mapToRegistry no registry URL …
Run Code Online (Sandbox Code Playgroud)

javascript node.js npm github-package-registry

5
推荐指数
1
解决办法
2355
查看次数

Github Actions - 创建快速运行的动作

我正在创建一个 github docker 容器操作,其中涉及许多依赖项 python、node、pypi 包和 npm 包。为了加快操作速度,我将大量依赖项安装从入口点移至 Dockerfile。现在我的动作运行得非常快,但每次构建动作都需要很长时间。

有没有办法可以预先构建该操作,或者我是否需要将我的操作 docker 映像发布到某处的存储库并从我的自定义映像提供数据?

作为参考,这是我的 Dockerfile。

FROM python:3

LABEL "com.github.actions.name"="kedro-action"
LABEL "com.github.actions.description"="A Github Action to run kedro commands"
LABEL "com.github.actions.icon"="it-branch"
LABEL "com.github.actions.color"="black"

LABEL "repository"="http://github.com/WaylonWalker/kedro-action"
LABEL "maintainer"="Waylon Walker <waylon@waylonwalker.com>"

RUN apt-get update
RUN apt-get install -y jq

ENV PYENV_ROOT /root/.pyenv
ENV PATH $PYENV_ROOT/shims:$PYENV_ROOT/bin:$PATH
RUN curl -L https://github.com/pyenv/pyenv-installer/raw/master/bin/pyenv-installer | bash

### INSTALL PYTHON ###
RUN pyenv install 3.7.6
RUN pyenv global 3.7.6
RUN python -m pip install --upgrade pip
RUN pip install kedro
RUN …
Run Code Online (Sandbox Code Playgroud)

docker docker-repository github-actions github-package-registry

5
推荐指数
1
解决办法
920
查看次数

从 GitHub 包注册表安装 NuGet 包

经过大量的试验和错误,我最终通过以下操作/命令在 Github 包注册表上获得了 NuGet 包:

\n
    \n
  1. 转到 GitHub\n
      \n
    • 单击您的头像(右上角) \xe2\x86\x92 设置 \xe2\x86\x92 开发人员设置 \xe2\x86\x92 个人访问令牌
    • \n
    • 生成具有以下范围的令牌:write:packages, read:packages,delete:packages
    • \n
    • 这将自动检查repo您的 OAuth 令牌的范围
    • \n
    \n
  2. \n
  3. 打开 cmd\n
      \n
    • 导航到您的项目目录或包含 NuGet 包的目录
    • \n
    • 添加新的 nuget 源\n
        \n
      • dotnet nuget add source --username [GithubUserName] --password [YourApiKey] --name github https://nuget.pkg.github.com/[UsernameOrOrganizationName]/index.json
      • \n
      \n
    • \n
    • 将包推送到github源\n
        \n
      • dotnet nuget push --source github bin\\Release\\MyAwesomePackage.1.0.0.nupkg
      • \n
      \n
    • \n
    \n
  4. \n
\n

我可以在 GitHub 上看到我的 NuGet 包,所以现在我想安装它。

\n …

nuget-package github-package-registry

5
推荐指数
1
解决办法
2872
查看次数

在 Github 操作中从 Github 包安装 Nuget 包

我正在尝试在运行 Github Action 时安装托管在 Github Packages 中的 Nuget 包。

此命令用于添加源并且构建正在运行:

dotnet nuget add source https://nuget.pkg.github.com/<ORGNAME>/index.json -n github -u <MY_USERNAME> -p ${{ secrets.GITHUB_TOKEN }} --store-password-in-clear-text
Run Code Online (Sandbox Code Playgroud)

所以 - 这是有效的,我的构建运行良好。

但是 -我想-u <MY_USERNAME>从行动中删除。我想使用像 这样的通用值${{ secrets.GITHUB_TOKEN }}。如果我离开组织或其他什么 - 我不希望依赖于特定帐户。

github nuget github-actions github-package-registry

5
推荐指数
1
解决办法
847
查看次数

用于安装 Github npm 包的个人访问令牌

我设法使用本教程在 Github packageregistry 上发布了一个简单的测试包: https: //docs.github.com/en/packages/quickstart

现在,如果我理解正确的话,要在项目中使用它,我必须创建一个包含以下行的 .npmrc 文件:

@OWNER:registry=https://npm.pkg.github.com
//npm.pkg.github.com/:_authToken=PAT
Run Code Online (Sandbox Code Playgroud)

1-如果其他人想要安装我的公共软件包,我需要向他们提供我自己的 PAT 吗?或者您可以使用自己的 PAT 安装任何 Github 公共包吗?

2-如何在 .npmrc 文件中隐藏我的 PAT?我尝试在 .env 文件中设置一个 TOKEN 变量(与 .npmrc 文件位于同一目录中)并使用 ${TOKEN} 调用它,但它似乎不起作用(运行 npm install 时身份验证失败,而直接在它起作用的文件中插入相同的 PAT)。

谢谢

github github-package-registry

5
推荐指数
1
解决办法
2万
查看次数