我试图在AWS CodeArtifact中使用Dependabot,并且一直存在身份验证问题。
Dependabot无法对私有包注册表进行身份验证,因此使用了以下私有包注册表并导致更新失败:###-###.d.codeartifact..amazonaws.com/npm/private.
日志:
代理2022/06/29 16:52:05 022获取https://###-###.d.codeartifact.###.amazonaws.com:443/npm/private/hermes-engine proxy 2022/06/29 16:52:06 022 401 https://###-###.d.codeartifact.###.amazonaws.com:443/npm/private/hermes-engine proxy 2022/06/29 16:52:06 024 GET https://###-###.d.codeartifact.###.amazonaws.com:443/npm/private/hermes-engine proxy 2022/06/29 16:52:06 024 401 https://###-###.d.codeartifact.###.amazonaws.com:443/npm/private/hermes-engine更新程序信息处理错误,同时更新hermes-engine: private_source_authentication_failure
我尝试过使用不同的dependabot.yml配置,比如使用完整的CodeArtifact URL和路径,或者使用token而不是用户名和密码。
我的dependabot.yml
version: 2
registries:
npm-codeartifact:
type: npm-registry
url: https://<registry>-<account>.d.codeartifact.<region>.amazonaws.com
username: aws
password: ${{secrets.CODEARTIFACT_TOKEN}}
- package-ecosystem: "npm"
schedule:
interval: "daily"
registries:
- npm-codeartifact我应该使用什么来使CodeArtifact可靠地工作?
发布于 2022-06-30 18:23:19
如果您使用的是令牌,则不需要指定用户名:
version: 2
registries:
npm-codeartifact:
type: npm-registry
url: https://<registry>-<account>.d.codeartifact.<region>.amazonaws.com
token: ${{secrets.CODEARTIFACT_TOKEN}}
updates:
# Keep npm dependencies up to date
- package-ecosystem: "npm"
schedule:
interval: "daily"
registries:
- npm-codeartifact发布于 2022-12-02 06:16:07
这个答案是基于@aphexlog答案和@Andrea De Luisi关于如何更新代码伪标记的评论,因为它在12小时后到期。我的解决方案以Nuget为例,并使用了一个单独的GitHub操作(.yml文件),它运行一个cron作业,它与依赖项配置是分开的。
Prequisites
YourProject/.github/dependabot.ymlYourProject\.github\workflows\aws-code-artifact-updatetoken.yml的aws-代码-工件-updateToken.yml(任意命名)要创建您的PAT (经典)转到您的个人帐户设置,向下滚动直到您看到<> Developer Settings,然后转到个人访问令牌下拉并选择令牌(经典)。生成一个新令牌,并确保单击(经典)。如果您不属于一个组织,单击工作流作用域(这将强制回购作用域)。如果您确实属于组织,也可以单击admin:org作用域。
备选案文1
选项2
我已经将我的秘密创建为一个名为CODE_ARTIFACT_TOKEN_PRIVATE_REPOS的可靠的组织秘密,并且它只能被私有存储库访问。我的初始值是一个虚拟值"test“,因为它将在工作流运行后被运行并更新为适当的令牌。
aws-code-artifact-updatetoken.yml
name: Update AWS Code Artifact Token
on:
schedule:
# Runs every 10 hours
- cron: "0 */10 * * *"
workflow_dispatch:这将为工作流创建一个名称,并设置一个cron作业,以便每10小时自动在GitHub操作上运行。
jobs:
update-code-artifact-token:
runs-on: ubuntu-latest
env:
AWS_ACCESS_KEY_ID: ${{ secrets.AWS_ACCESS_KEY_ID }}
AWS_SECRET_ACCESS_KEY: ${{ secrets.AWS_SECRET_ACCESS_KEY }}
AWS_DEFAULT_REGION: us-west-2
GH_TOKEN: ${{ secrets.ORG_SECRETS }}
steps:
- name: Get Code Artifact Token
run: |
export CODEARTIFACT_AUTH_TOKEN=`aws codeartifact get-authorization-token --domain fullstackindie --domain-owner 896630178141 --query authorizationToken --output text`创建一个运行在ubuntu上的作业。以一种格式创建环境变量,该格式将由安装在 Action上的和GitHub (github)自动使用。我正在将CODEARTIFACT_AUTH_TOKEN作为变量导出到当前的shell中,以便在以后的步骤中使用。这个变量得到一个正确的CodeArtifact令牌。替换
- name: Update Code Artifact Token
run: |
gh secret set CODE_ARTIFACT_TOKEN_PRIVATE_REPOS --org FullStackIndieLLC --visibility private --app dependabot --body "$CODEARTIFACT_AUTH_TOKEN"最后一步使用github来设置,Dependabot / organization,这是之前为您的回购或组织创建的。您可以为gh秘密集设置不同的标志/args,但是必须包含-app依赖项才能更新dependabot机密。您还必须嵌入包含令牌的--body arg。在使用环境变量时,必须使用"$MY_ENV“格式。因为我的依赖组织秘密只对私有存储库有效,所以我将可见性设置为私有库。我还使用--org标志来更改我的Dependabot秘密。如果使用秘密,那么您的令牌将类似于以下内容
- name: Update Code Artifact Token
run: |
gh secret set CODE_ARTIFACT_TOKEN_PRIVATE_REPOS --repo MyRepo --visibility private --app dependabot --body "$CODEARTIFACT_AUTH_TOKEN"我建议通过转到回购中的"Actions“选项卡,单击工作流,然后单击下拉列表中的”运行工作流“来强制工作流运行。如果没有,您的回购可能会在第一次运行之前更新令牌大约10个小时。
https://stackoverflow.com/questions/72805464
复制相似问题