首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用AWS CodeArtifact的Dependabot

使用AWS CodeArtifact的Dependabot
EN

Stack Overflow用户
提问于 2022-06-29 17:18:16
回答 2查看 340关注 0票数 1

我试图在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

代码语言:javascript
复制
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可靠地工作?

EN

回答 2

Stack Overflow用户

发布于 2022-06-30 18:23:19

如果您使用的是令牌,则不需要指定用户名:

代码语言:javascript
复制
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
票数 0
EN

Stack Overflow用户

发布于 2022-12-02 06:16:07

这个答案是基于@aphexlog答案和@Andrea De Luisi关于如何更新代码伪标记的评论,因为它在12小时后到期。我的解决方案以Nuget为例,并使用了一个单独的GitHub操作(.yml文件),它运行一个cron作业,它与依赖项配置是分开的。

Prequisites

  • dependabot.yml定位YourProject/.github/dependabot.yml
  • 位于YourProject\.github\workflows\aws-code-artifact-updatetoken.yml的aws-代码-工件-updateToken.yml(任意命名)
  • AWS凭据作为存储库/组织机密
  • 个人访问令牌经典(PAT),如果您需要安全,有效期为30-90天。对于这个用例,我认为没有到期或365天的到期是足够安全的。

要创建您的PAT (经典)转到您的个人帐户设置,向下滚动直到您看到<> Developer Settings,然后转到个人访问令牌下拉并选择令牌(经典)。生成一个新令牌,并确保单击(经典)。如果您不属于一个组织,单击工作流作用域(这将强制回购作用域)。如果您确实属于组织,也可以单击admin:org作用域

备选案文1

  • 创建或属于GitHub组织
  • 去组织设置,向下滚动到它所说的“机密”并选择并创建一个Dependabot组织秘密

选项2

  • 进入您的存储库,单击“设置”选项卡
  • 向下滚动到它所说的“机密”,并选择并创建一个新的Dependabot

我已经将我的秘密创建为一个名为CODE_ARTIFACT_TOKEN_PRIVATE_REPOS的可靠的组织秘密,并且它只能被私有存储库访问。我的初始值是一个虚拟值"test“,因为它将在工作流运行后被运行并更新为适当的令牌。

aws-code-artifact-updatetoken.yml

代码语言:javascript
复制
name: Update AWS Code Artifact Token

on:
  schedule:
    # Runs every 10 hours
    - cron: "0 */10 * * *"
  workflow_dispatch:

这将为工作流创建一个名称,并设置一个cron作业,以便每10小时自动在GitHub操作上运行。

代码语言:javascript
复制
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令牌。替换

代码语言:javascript
复制
  - 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秘密。如果使用秘密,那么您的令牌将类似于以下内容

代码语言:javascript
复制
  - 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个小时。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/72805464

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档