我创建了一个Pipeline,它从CodeCommit存储库获取代码,通过CodeBuild构建它并将代码推送到S3存储桶。
对于我的Codebuild,我使用AWS托管图像。 AWS / codebuild /的NodeJS:7.0.0
如果我通过CodeBuild控制台手动启动构建并指定存储库,那么当我在buildspec中运行以下命令时,我会获得存储库URL
- printf ${CODEBUILD_SOURCE_REPO_URL}
但是如果通过推送到存储库自动触发CodeBuild。 CODEBUILD_SOURCE_REPO_URL不返回任何内容
答案 0 :(得分:1)
如果从代码管道运行该进程,则该进程将为空。
查看以下内容:https://docs.aws.amazon.com/codebuild/latest/userguide/build-env-ref-env-vars.html
CODEBUILD_SOURCE_REPO_URL:输入工件或源代码存储库的URL。对于Amazon S3,它是s3://,后跟存储区名称和输入工件的路径。对于AWS CodeCommit和GitHub,这是存储库的克隆URL。 如果构建源自AWS CodePipeline,则该内容可能为空。
答案 1 :(得分:0)
如果通过CodeCommit连接,则可以使用以下方法拆分字符串以获取更多有用的值,例如“帐户ID”和“回购名称”
echo "Region = ${AWS_REGION}"
echo "Account Id = $(echo $CODEBUILD_BUILD_ARN | cut -f5 -d ':')"
echo "Repo Name = $(echo $CODEBUILD_SOURCE_VERSION | cut -f2 -d '/')"
echo "Commit Id = ${CODEBUILD_RESOLVED_SOURCE_VERSION}"
哪个输出:
Region = us-west-2
Account Id = 0123456789
Repo Name = my-app
Commit Id = a46218c9160f932f2a91748a449b3f9818964642