2017-03-03 37 views
3

我使用Bitbucket,Jenkins和AWS Elastic Beanstalk设置了一个持续交付系统。来自Bitbucket和CodePipeline的AWS S3 Gitpull

我有一个问题,它出现了我设置的Bitbucket集成,此article只是构建主分支。如果没有代码管道的直接支持,比如Github和AWS CodeCommit,我不确定如何设置特定分支的构建,例如开发或发布候选分支。

是否可以指示应该从存储库的S3 zip中的CodePipeline中构建哪个分支?

回答

1

我认为你可以用你的分支替换s3://git-to-codepipeline-us-e-1-1/v1.0/GitPullS3.zip中的“master”。在您的Lambda函数中使用新的GitPullS3.zip而不是原来的。

+0

您能否提供更多信息?你是指Lambda?我的理解是,GitPull Lambda使用SSH将回购副本拖放到S3中。默认情况下,这将是主分支。为了利用CodePipeline,我想部署开发,主控和修补程序分支来分离环境。 – fakataha

+0

我最终用这些方法解决了这个问题。我修改了python脚本以从webhook发送的Bitbucket json中获取目标分支。然后,Lambda将转到特定的S3存储桶。然后,我为'develop'和'master'创建了两个单独的管道,用于侦听来自各个S3存储桶的触发器。 – fakataha

0

我想你需要在s3://git-to-codepipeline-us-e-1-1/v1.0/GitPullS3.zip的zip中替换lambda_function.py文件中的字符串“master”根据您正在使用的区域使用正确的存储桶),然后创建一个新的zip并将其上传到S3。然后,在您的GitPull lambda函数中使用这个新的S3文件(您可以更新CloudFormation堆栈以在GitPull Lambda函数中使用您的新S3文件)。

+0

我看着这个选项,我认为这是可行的。不过,我不认为这是正确的做法。例如:Lambda:GitPull现在可以签出'develop' - > CodePipeline:构建阶段只能构建'develop'。我认为正确的做法是让CodePipeline:Build阶段开关根据需要进行分支,因为它最初拉动整个回购并基于我认为的变化进行更新*它应该已经有分支信息。 – fakataha