Ian*_*Ian 3 github github-actions
我正在尝试构建一个 GitHub 操作工作流,其中涉及安装其他私人代表中存在的依赖项。我已经尝试了各种排列(我现在有点迷失了方向),但我无法让它们中的任何一个工作。
我创建了一个秘密,存储在TOKEN_GITHUB其中授予访问其他存储库的权限,因此我可以正确安装,因为我相信所提供的范围仅限于当前代表。
这是一个示例 GitHub 工作流文件,它最终通过 CDK 部署多个 Lambda,但为了简单起见,我将其排除在外:
deploy.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
Run Code Online (Sandbox Code Playgroud)
所以基本上这在lambda期间失败npm ci了getList。我遇到过各种错误,例如:
npm 错误!git@github.com:权限被拒绝(公钥)。npm 错误!致命:无法从远程存储库读取。
在package.json我的getList拉姆达的样子:
{
"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"
}
}
Run Code Online (Sandbox Code Playgroud)
我也试过username:token在 package.json 文件中包含 ,尽管我不习惯将我的令牌放在他们而不是秘密中,但这无论如何都不起作用。我也试过使用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不跨步骤共享?
值得注意的是,我的所有步骤都需要一个私有依赖项安装,这就是我以这种方式拆分它的原因。此外,我尝试过的几乎所有内容都在本地运行良好,只是在操作中失败了。
您的 git config 行不起作用的原因是身份验证与actions/checkout. 您更改身份验证的尝试将被操作保留的凭据覆盖。我之前遇到过与此相关的其他问题,如果您有兴趣,可以阅读一些我在此处发现的内容。
您会很高兴知道这里有一个简单的解决方法。只需禁用在 git config 中持久化的身份验证actions/checkout。
- uses: actions/checkout@v2
with:
persist-credentials: false
Run Code Online (Sandbox Code Playgroud)
您的 package.json 依赖项很好。
"dependencies": {
...
"get-db": "MyUsername/getDB"
},
Run Code Online (Sandbox Code Playgroud)
这是一个示例工作流程。PAT是repo范围内的个人访问令牌。请注意,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
...
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
945 次 |
| 最近记录: |