python - 以 GitHub 为源的 CDK Codepipeline
问题描述
因此,我正在使用 CDK codebuild.PipelineProject 创建一个新的 Codebuild 项目,但我遇到了问题,因为 APi 参考似乎没有办法将 GitHub 作为源代码库应用:
https://docs.aws.amazon.com/cdk/api/latest/python/aws_cdk.aws_codebuild/PipelineProject.html
任何人都可以让它工作或找到一种方法将 Github 设置为主要来源?
解决方案
这个问题的答案取决于你理想的最终状态是什么样的。这里有两个选项:
- CodePipeline 触发 CodeBuild
- CodeBuild 在 CodePipeline 之外由 GitHub 触发
这部分文档讨论了这两个选项之间的区别。
CodePipeline 触发 CodeBuild
codepipeline_actions
如果您想从同一源提交(如部署)执行其他操作,则使用 CodePipeline 触发 CodeBuild 非常有用。
为此,您需要在 CodePipeline 中创建一个单独的 Source 操作,并将其导出的变量用作 CodeBuild 项目 ( docs ) 的输入。
例如,
from aws_cdk import core as cdk
from aws_cdk import aws_codepipeline as codepipeline
from aws_cdk import aws_codepipeline_actions as codepipeline_actions
from aws_cdk import aws_codebuild as codebuild
class CdkPythonStack(cdk.Stack):
def __init__(self, scope: cdk.Construct, construct_id: str, **kwargs) -> None:
super().__init__(scope, construct_id, **kwargs)
source_output = codepipeline.Artifact()
source_action = codepipeline_actions.GitHubSourceAction(
action_name="Source",
owner="blimmer",
repo="my_repo",
# You'll need to create this secret per the docs
# https://docs.aws.amazon.com/cdk/api/latest/docs/aws-codepipeline-actions-readme.html#github
oauth_token=cdk.SecretValue.secrets_manager('my-github-token'),
output=source_output,
)
pipeline = codepipeline.Pipeline(
self,
"MyPipeline",
stages=[
codepipeline.StageProps(stage_name="Source", actions=[source_action]),
codepipeline.StageProps(
stage_name="Build",
actions=[
codepipeline_actions.CodeBuildAction(
action_name="Build",
# Configure your project here
project=codebuild.PipelineProject(self, "MyProject"),
input=source_output,
)
],
),
],
)
CodeBuild 在 CodePipeline 之外由 GitHub 触发
如果您不需要任何其他 CodePipeline 操作,则只创建一个没有 CodePipeline 的 CodeBuild 项目可能会更简单。
您需要将 Source 设置为 CodeBuild 项目 ( docs ) 的属性,然后定义项目。
例如:
from aws_cdk import core as cdk
from aws_cdk import aws_codebuild as codebuild
class CdkPythonStack(cdk.Stack):
def __init__(self, scope: cdk.Construct, construct_id: str, **kwargs) -> None:
super().__init__(scope, construct_id, **kwargs)
project = codebuild.Project(
self,
"MyProject",
# You'll need to configure this first. See:
# https://docs.aws.amazon.com/cdk/api/latest/docs/aws-codebuild-readme.html#githubsource-and-githubenterprisesource
source=codebuild.Source.git_hub(
owner="blimmer", repo="my_repo", webhook=True
),
# Configure your project here
)
推荐阅读
- azure - azurewebsites.net 内置证书
- sql - SQL - 我想不出任何方法来做到这一点,我已经完成了所有的研究?
- ms-access - MS ACCESS 指定字段 [XXXXX} 可以引用 FROM 中列出的多个表
- regex - Perl regex splitting a single line
- asp.net-core - 为什么与结构的模型绑定不起作用?
- css - 如何在 React Native 中使用百分比填充顶部和底部?
- php - 如何要求身份验证才能访问网络服务器(运行 Nginx)上的文件?
- swift - ScrollView 约束问题抛出情节提要
- c - 二维数组解释
- sql-server - 将列从 1 个表添加到另一个