AWS CodeBuild 和 CodeCommit 存储库作为 npm 依赖项
AWS CodeBuild and CodeCommit repo as npm dependency
我们有 2 份报告
- 回购 1
- 回购 2
Repo 1 内部 > package.json 有一个依赖关系
"dependencies": {
"repo-2": "git+https://git-codecommit.us-east-1.amazonaws.com/v1/repos/repo-2/"
}
然后,在 "repo-1" 的 CodeBuild 中,我们有以下构建规范
version: 0.2
phases:
install:
runtime-versions:
nodejs: 10
commands:
- mkdir -p ./deploy
build:
commands:
- echo "Server copy START $(date)"
- cp -r ./index.js ./deploy/index.js
- cp -r ./package.json ./deploy/package.json
- cp -r ./buildspec.yml ./deploy/buildspec.yml
- echo "Server copy END $(date)"
- echo "Server npm install START $(date)"
- cd ./deploy && npm install --production
- echo "Server npm install END $(date)"
post_build:
commands:
artifacts:
files:
- '**/*'
base-directory: 'deploy'
CodeBuild抛出的错误如下
npm ERR! fatal: unable to access 'https://git-codecommit.us-east-1.amazonaws.com/v1/repos/repo-2/': The requested URL returned error: 403
基本上,问题是:我可以使用 CodeCommit 存储库作为 npm 依赖项吗?正确的方法是什么?
尝试#1
我尝试添加这个(和类似的变体)但没有成功
https://medium.com/@ngchiwang/aws-npm-install-private-codecommit-module-8512c3203c37
#尝试2
我也试过把依赖URL改成这个
"repo-2": "git://git-codecommit.us-east-1.amazonaws.com/v1/repos/repo-2"
但是出现以下错误
npm WARN optional SKIPPING OPTIONAL DEPENDENCY: fatal: unable to connect to git-codecommit.us-east-1.amazonaws.com:
npm WARN optional SKIPPING OPTIONAL DEPENDENCY: git-codecommit.us-east-1.amazonaws.com[0: 52.94.233.146]: errno=Connection refused
尝试使用您的私有 AWS CodeCommit 存储库作为您的 npm 模块,使用以下命令:
git config --global credential.helper '!aws codecommit credential-helper $@'
git config --global credential.UseHttpPath true
git config --global url."ssh://".insteadOf https://
npm install --save git+https://<your_repo_url>#master
如果您想改为使用 npm 依赖项,请在此处查看类似问题的答案:npm install private github repositories by dependency in package.json
我今天 运行 遇到了同样的问题,并通过在 envgit-credential-helper =20=] buildspec 文件的部分。
示例:
version: 0.2
env:
git-credential-helper: yes
phases:
install:
runtime-versions:
nodejs: 10
commands:
- npm install
build:
commands:
- npm run build
这与策略中的 CodeCommit 权限(您说您已经拥有)相结合,导致使用来自 CodeCommit 的私有 npm 包进行工作构建。
上周我遇到了类似的问题,所以将分享为亚马逊团队推荐的解决方案。
更好的方法是在构建规范文件的 env 部分将 "git-credential-helper" 设置为 yes [1],然后可以使用 https 访问存储库。请参考下面的 BuildSpec 示例。
================构建规范代码段=================
版本:0.2
env:
git-credential-helper: yes
phases:
pre_build:
commands:
- /usr/bin/git ls-remote -h -t https://git-codecommit.us-east-1.amazonaws.com/v1/repos/repo-2/
================构建规范代码段=================
此外,请确保您已提供访问 CodeBuild IAM 角色中的 CodeCommit 存储库所需的权限。我在下面提供了相同的示例 IAM 策略,您可以参考这些策略来根据您的用例提供权限:
===========IAM 策略示例=============
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "VisualEditor0",
"Effect": "Allow",
"Action": [
"codecommit:GetRepository",
"codecommit:GitPull",
"codecommit:GetFolder"
],
"Resource": "arn:aws:codecommit:us-east-1:<put repo Name or *>"
},
{
"Sid": "VisualEditor1",
"Effect": "Allow",
"Action": "codecommit:ListRepositories",
"Resource": "*"
}
]
}
===========IAM 策略示例=============
请检查上述方法是否有助于实现您的用例。
请注意,上面的构建规范片段只是一个示例,用于说明如何访问 CodeCommit 存储库,需要根据您的要求进行修改。例如,您可以在 package.json 中描述您的存储库依赖性,如下所示,我假设您已经在做,并且 运行 npm install 通过代码构建中的构建规范文件进行安装。
"dependencies": {
"my-npm": "git+https://git-codecommit.us-east-1.amazonaws.com/v1/repos/<repo name>"
},
我们有 2 份报告
- 回购 1
- 回购 2
Repo 1 内部 > package.json 有一个依赖关系
"dependencies": {
"repo-2": "git+https://git-codecommit.us-east-1.amazonaws.com/v1/repos/repo-2/"
}
然后,在 "repo-1" 的 CodeBuild 中,我们有以下构建规范
version: 0.2
phases:
install:
runtime-versions:
nodejs: 10
commands:
- mkdir -p ./deploy
build:
commands:
- echo "Server copy START $(date)"
- cp -r ./index.js ./deploy/index.js
- cp -r ./package.json ./deploy/package.json
- cp -r ./buildspec.yml ./deploy/buildspec.yml
- echo "Server copy END $(date)"
- echo "Server npm install START $(date)"
- cd ./deploy && npm install --production
- echo "Server npm install END $(date)"
post_build:
commands:
artifacts:
files:
- '**/*'
base-directory: 'deploy'
CodeBuild抛出的错误如下
npm ERR! fatal: unable to access 'https://git-codecommit.us-east-1.amazonaws.com/v1/repos/repo-2/': The requested URL returned error: 403
基本上,问题是:我可以使用 CodeCommit 存储库作为 npm 依赖项吗?正确的方法是什么?
尝试#1
我尝试添加这个(和类似的变体)但没有成功 https://medium.com/@ngchiwang/aws-npm-install-private-codecommit-module-8512c3203c37
#尝试2
我也试过把依赖URL改成这个
"repo-2": "git://git-codecommit.us-east-1.amazonaws.com/v1/repos/repo-2"
但是出现以下错误
npm WARN optional SKIPPING OPTIONAL DEPENDENCY: fatal: unable to connect to git-codecommit.us-east-1.amazonaws.com:
npm WARN optional SKIPPING OPTIONAL DEPENDENCY: git-codecommit.us-east-1.amazonaws.com[0: 52.94.233.146]: errno=Connection refused
尝试使用您的私有 AWS CodeCommit 存储库作为您的 npm 模块,使用以下命令:
git config --global credential.helper '!aws codecommit credential-helper $@'
git config --global credential.UseHttpPath true
git config --global url."ssh://".insteadOf https://
npm install --save git+https://<your_repo_url>#master
如果您想改为使用 npm 依赖项,请在此处查看类似问题的答案:npm install private github repositories by dependency in package.json
我今天 运行 遇到了同样的问题,并通过在 envgit-credential-helper =20=] buildspec 文件的部分。
示例:
version: 0.2
env:
git-credential-helper: yes
phases:
install:
runtime-versions:
nodejs: 10
commands:
- npm install
build:
commands:
- npm run build
这与策略中的 CodeCommit 权限(您说您已经拥有)相结合,导致使用来自 CodeCommit 的私有 npm 包进行工作构建。
上周我遇到了类似的问题,所以将分享为亚马逊团队推荐的解决方案。
更好的方法是在构建规范文件的 env 部分将 "git-credential-helper" 设置为 yes [1],然后可以使用 https 访问存储库。请参考下面的 BuildSpec 示例。
================构建规范代码段=================
版本:0.2
env:
git-credential-helper: yes
phases:
pre_build:
commands:
- /usr/bin/git ls-remote -h -t https://git-codecommit.us-east-1.amazonaws.com/v1/repos/repo-2/
================构建规范代码段=================
此外,请确保您已提供访问 CodeBuild IAM 角色中的 CodeCommit 存储库所需的权限。我在下面提供了相同的示例 IAM 策略,您可以参考这些策略来根据您的用例提供权限:
===========IAM 策略示例=============
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "VisualEditor0",
"Effect": "Allow",
"Action": [
"codecommit:GetRepository",
"codecommit:GitPull",
"codecommit:GetFolder"
],
"Resource": "arn:aws:codecommit:us-east-1:<put repo Name or *>"
},
{
"Sid": "VisualEditor1",
"Effect": "Allow",
"Action": "codecommit:ListRepositories",
"Resource": "*"
}
]
}
===========IAM 策略示例=============
请检查上述方法是否有助于实现您的用例。
请注意,上面的构建规范片段只是一个示例,用于说明如何访问 CodeCommit 存储库,需要根据您的要求进行修改。例如,您可以在 package.json 中描述您的存储库依赖性,如下所示,我假设您已经在做,并且 运行 npm install 通过代码构建中的构建规范文件进行安装。
"dependencies": {
"my-npm": "git+https://git-codecommit.us-east-1.amazonaws.com/v1/repos/<repo name>"
},