在 AWS 代码构建步骤中获取源存储库提交哈希值

sas*_*alm 6 amazon-web-services aws-codebuild

有没有办法从 AWS CodeBuild 构建步骤中获取提交哈希?我尝试使用 CODEBUILD_RESOLVED_SOURCE_VERSION 但它返回 IaC 存储库的提交 ID,而不是源存储库的提交 ID。

我知道如果你有执行 ID,有一种方法可以获取它:

aws codepipeline get-pipeline-execution --pipeline-name my-pipeline --pipeline-execution-id e550c757-434a-4c94-8e2e-5122ca14d861
Run Code Online (Sandbox Code Playgroud)

但是我也没有 pipeline-execution-id 。我只有 CODEBUILD_BUILD_ID。

sas*_*alm 4

找到了一个适合我的解决方案:

\n
PIPELINE_EXECUTION_ID=$(aws codepipeline get-pipeline-state --region ${AWS_REGION} --name my-pipeline --query 'stageStates[?actionStates[?latestExecution.externalExecutionId==`'${CODEBUILD_BUILD_ID}'`]].latestExecution.pipelineExecutionId' --output text)\nSOURCE_REPO_COMMIT_HASH=$(aws codepipeline get-pipeline-execution --pipeline-name my-pipeline --pipeline-execution-id $PIPELINE_EXECUTION_ID --query "pipelineExecution.artifactRevisions[?name=='src'].revisionId" --output text)\n
Run Code Online (Sandbox Code Playgroud)\n

您可能需要将“src”更改artifactRevisions[?name=='src']为对您的项目有效的任何值。

\n

来自@IfTrue的评论如下:

\n
\n

其他读者的旁注:sashoalm 提到可能需要更改的部分('src')是 CodePipeline 中“阶段”内“操作组”中输出工件的名称,它在其中监视 CodeCommit 更改。AWS 文档的这一部分还解释了查询背后的魔力:docs.aws.amazon.com/cli/latest/reference/codepipeline/\xe2\x80\xa6 \xe2\x80\x93 IfTrue

\n
\n

  • 这对我有用。你摇滚,谢谢!其他读者的旁注:sashoalm 提到可能需要更改的部分('src')是 CodePipeline 中“阶段”内“操作组”中输出工件的名称,它在其中监视 CodeCommit 更改。AWS 文档的这一部分还解释了查询背后的魔力:https://docs.aws.amazon.com/cli/latest/reference/codepipeline/get-pipeline-execution.html (2认同)