【问题标题】:AWS CodePipeline Build errorAWS CodePipeline 构建错误
【发布时间】:2017-02-11 18:19:27
【问题描述】:

我创建了一个 AWS CodePipeline 管道以从 Github 中提取、使用 Jenkins 构建并部署到 ElasticBeanstalk 项目。我可以直接将war部署到beanStack并进行验证。

当我尝试从 CodePipeLine 执行相同操作时,我在 Jenkins 的 AWS CodePipeline 轮询日志中看到以下错误 -

错误:未能记录 hudson.model.FreeStyleProject@ae44565e6[AppPortal] 的 SCM 轮询 com.amazonaws.services.codepipeline.model.ActionTypeNotFoundException:ActionType(类别:'Build',所有者:'Custom',提供者:'MPiplelineProvider',版本:'1')不可用(服务:AWSCodePipeline;状态代码:400 ; 错误代码: ActionTypeNotFoundException; 请求 ID: e35456561d-999f-56e7-3rgf-75985675533b3) 在 com.amazonaws.http.AmazonHttpClient.handleErrorResponse(AmazonHttpClient.java:1401) 在 com.amazonaws.http.AmazonHttpClient.executeOneRequest(AmazonHttpClient.java:945) 在 com.amazonaws.http.AmazonHttpClient.executeHelper(AmazonHttpClient.java:723) 在 com.amazonaws.http.AmazonHttpClient.doExecute(AmazonHttpClient.java:475) 在 com.amazonaws.http.AmazonHttpClient.executeWithTimer(AmazonHttpClient.java:437) 在 com.amazonaws.http.AmazonHttpClient.execute(AmazonHttpClient.java:386) 在 com.amazonaws.services.codepipeline.AWSCodePipelineClient.doInvoke(AWSCodePipelineClient.java:2078)

出于测试目的,我已将 SCM 轮询设置为 * * * * *。

构建后操作 - AWS CodePipeline 发布者 - 位置 - 目标/AppPortal

我在 jenkins 中只安装了 AWS Codepipeline pulgin。

你能告诉我我错过了什么吗?

谢谢

【问题讨论】:

    标签: amazon-web-services jenkins amazon-ec2


    【解决方案1】:

    您是否在 CodePipeline 中注册了 Jenkins 自定义操作类型,在您轮询的同一区域中?

    检查您的 Jenkins 作业配置:

    • AWS 区域
    • 类别
    • 提供者
    • 版本

    根据您的错误消息:

    ActionType (Category: 'Build', Owner: 'Custom', Provider: 'MPiplelineProvider', Version: '1')
    

    然后使用 AWS CLI 列出您在该区域中的自定义操作类型,并确保类别、提供商和版本匹配:

    aws codepipeline list-action-types --action-owner-filter Custom --region us-west-2
    

    如果您通过 AWS 控制台创建了 Jenkins 操作类型,它应该具有以下值:

    ActionType (Category: 'Build', Owner: 'Custom', Provider: 'Jenkins', Version: '1')
    

    如果是这种情况,将您的 Jenkins 工作提供者从 MPiplelineProvider 更新为 Jenkins 应该可以解决您的问题。

    【讨论】:

    • 谢谢。将位置和提供者名称更改为 Jenkins 后,我没有看到错误。但我仍然无法让构建工作。我检查了管道日志并看到了这些消息。 '[AWS CodePipeline 插件] 未找到工作。'我检查了 CodePipeline 使用与 Jenkins 服务器轮询的完全相同的 ProjectName 和 ActionType
    • 我重新启动了 jenkins 实例,代码管道现在构建和部署。不知道为什么重新启动与它有任何关系,但对我有用。重新启动后,jenkins 的公共 DNS 发生了变化,我无法从 codepipeline 导航到新的 jenkin 页面。它仍然引用了旧的 jenkins url,我该如何更改?
    【解决方案2】:

    在我们的场景中: 触发器:将 Jenkins master (ec2) 移动到负载均衡器后面。

    症状:更新所有安全组设置后,我们开始收到相同的错误(如上),因此负载平衡器不会妨碍。

    分辨率:

    在 Jenkins (ec2) 框中,我们删除了“项目”并使用与以前完全相同的设置(包括名称)重新创建它。这让 Jenkins 可以重新连接到 Code Pipeline,并且作业又开始工作了。

    这是代码管道阶段操作设置:

    { “输入工件”:[], "name": "foobar-test", “地区”:“us-west-2”, “actionTypeId”:{ “类别”:“测试”, “所有者”:“自定义”, “版本”:“1”, “提供者”:“foobar 提供者” }, “输出工件”:[], “配置”: { “项目名称”:“foobar-api-qa-aws_trigger” }, “运行顺序”:1

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-11-27
      • 1970-01-01
      • 1970-01-01
      • 2022-11-08
      • 2017-05-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多