是否可以从AWS CodeBuild构建步骤中获取提交哈希?我尝试使用CODEBUILD_RESOLVED_SOURCE_VERSION,但它返回的是IaC存储库的“提交ID”,而不是源存储库的。
如果您具有执行ID,我知道有一种方法可以获取它:
aws codepipeline get-pipeline-execution --pipeline-name my-pipeline --pipeline-execution-id e550c757-434a-4c94-8e2e-5122ca14d861
但是我也没有pipeline-execution-id。我只有CODEBUILD_BUILD_ID。
答案 0 :(得分:2)
如果您使用的是CodePipeline,则可以使用access namespaced variables from previous stages来替代使用CLI进行查询。
namespace
赋一个值。这样您就可以从该阶段开始引用exposed variables。对于此示例,假设我有一个名为Source的阶段,并将我的命名空间命名为GitVariables
。如果您使用的是GitHub,GitLab,CodeCommit或源,则变量看起来非常一致。
当管道运行时,环境变量将被添加到名为GIT_COMMIT_ID
的CodeBuild执行中。
答案 1 :(得分:0)
找到了适合我的解决方案:
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)
SOURCE_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)
您可能需要将artifactRevisions[?name=='src']
中的“ src”更改为对您的项目有效的任何值。
答案 2 :(得分:0)
当CodeBuild作为CodePipeline阶段的一部分运行并通过webhook调用Source GitHub / CodeCommit操作时,在CodeBuild中检索Git Commit消息:
确保您的CodeBuild项目的服务角色有权在管道上执行“ ListPipelineExecutions”
在Buildspec“安装”阶段添加以下内容:
didRegisterForRemoteNotificationsWithDeviceToken
在Buildspec中添加以下内容,以获取提交消息:
apt-get install jq