gpt4 book ai didi

github - 在 GitHub Action Workflow 中安装 GitHub 存储库

转载 作者:行者123 更新时间:2023-12-04 00:56:35 24 4
gpt4 key购买 nike

我正在尝试构建一个 GitHub 操作工作流程,其中涉及安装其他私有(private)代表中存在的依赖项。我已经尝试了各种排列(我现在有点迷失了),但我无法让它们中的任何一个起作用。

我创建了一个 secret ,存储在 TOKEN_GITHUB 中授予对其他存储库的访问权限,因此我可以正确安装,因为我相信提供的存储库仅限于当前代表。

这是一个示例 GitHub 工作流文件,它最终通过 CDK 部署多个 Lambda,但为简单起见,我将其排除在外:
部署.yml

name: Lint, Audit, Test & Deploy

on:
push:
branches: [master]

jobs:
build:
runs-on: ubuntu-latest
if: "!contains(github.event.head_commit.message, 'ci skip')"

steps:
- uses: actions/checkout@v2
- uses: actions/setup-node@v1
with:
node-version: 12
- name: getList Lambda
run: |
cd lambdas
cd getList
npm ci
npm audit --production --audit-level=moderate
- name: getItem Lambda
run: |
cd lambdas
cd getItem
npm ci
npm audit --production --audit-level=moderate
- name: saveItem Lambda
run: |
cd lambdas
cd saveItem
npm ci
npm audit --production --audit-level=moderate



所以基本上这在 npm ci 期间失败了对于 getList lambda 。我遇到了各种错误,例如:

npm ERR! git@github.com: Permission denied (publickey). npm ERR! fatal: Could not read from remote repository.


package.json对于我的 getList lambda 看起来像:
{
"name": "getList",
"version": "1.0.0",
"description": "",
"main": "index.js",
"scripts": {
"test": "jest"
},
"dependencies": {
"dotenv": "^8.2.0",
"mongodb": "^3.5.7",
"get-db": "MyUsername/getDB"
},
"devDependencies": {
"jest": "^26.0.1"
}
}

我也试过包括 username:token在 package.json 文件中,虽然我不喜欢将我的 token 放在他们的而不是 secret 中,但这无论如何都没有用。我还尝试使用 https 进行 npm 安装小路:
https://x-oauth-basic@github.com/MyUsername/getDB.git
带有 gitconfig 行 git config --global url."https://${{secrets.TOKEN_GITHUB}}:x-oauth-basic@github.com/".insteadOf https://x-oauth-basic@github.com/
谁能看到我在这里可能做错了什么?唯一想到的可能是设置 gitconfig不是跨步骤共享的吗?

值得注意的是,我的所有步骤都需要一个私有(private)依赖安装,这就是我以这种方式拆分它的原因。我尝试的几乎所有东西在本地都运行良好,只是在行动中失败了。

最佳答案

您的 git config 行不起作用的原因是身份验证与 actions/checkout 一起使用的方式。 .您更改身份验证的尝试被操作所保留的凭据所覆盖。我之前遇到过与此相关的其他问题,您可以阅读一些关于我发现的内容 here如果你感兴趣。

您会很高兴知道这里有一个简单的解决方法。只需通过 actions/checkout 禁用在 git config 中持久化的身份验证.

      - uses: actions/checkout@v2
with:
persist-credentials: false

你的 package.json 依赖关系很好。
    "dependencies": {
...
"get-db": "MyUsername/getDB"
},

这是一个示例工作流程。 PATrepo范围 Personal Access Token .请注意 git config更改在步骤之间持续存在,因此您只需在每个作业中运行一次。
      - uses: actions/checkout@v2
with:
persist-credentials: false
- uses: actions/setup-node@v1
with:
node-version: 12.x
- run: git config --global url."https://${{ secrets.PAT }}@github.com/".insteadOf ssh://git@github.com/
- run: npm ci
...

关于github - 在 GitHub Action Workflow 中安装 GitHub 存储库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62122834/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com