当前位置: 首页 > 知识库问答 >
问题:

AWS CodePipeline Action执行失败

太叔鸿
2023-03-14

我试图用S3钩住我的GitHub repo,因此每次有提交时,AWS CodePipeline都会部署/

到目前为止,在我的管道中,源代码可以工作(连接到GitHub并获取新的提交),但是部署失败,因为:操作执行失败捆绑类型必须是YAML或JSON

我是这样设置的:

  • 行动名称:来源
  • 操作提供程序:GitHub
  • 存储库:帐户/回购
  • 分支机构:硕士
  • GitHub webhooks
  • 计算类型: AWS Lambda
  • 服务角色:myRole
  • 部署设置:CodeDeployDefault.我的名字是什么?
  • AWS服务
  • 选择将使用此角色的服务:Lambda/CodeDeploy
  • 选择您的用例:CodeDeploy
  • 政策:AWSCodeDeployRole

我明白在根文件夹中必须有一个buildspec.yml文件。我试过用一些我能找到的文件,但它们似乎不起作用。我做错了什么,或者我应该如何编辑构建规范文件来做我想要的?

使现代化

感谢@米兰Cermak。我明白我需要做:

CodePipeline:

  • 阶段1:来源:与GitHub repo挂钩。这个正在工作。
  • 阶段2:构建:使用CodeBuild,使用repo根文件夹中的buildspec.yml文件,仅获取想要的文件夹。
  • 阶段3:部署:使用
Action Provider: S3
Input Artifacts: OutputArtifacts (result of stage 2).
Bucket: the bucket that hosts the static website.

CodePipeline工作。但是,输出只包含文件(. html),而不包含嵌套在公共文件夹中的文件夹。

我已经检查了这一点,并想出了如何删除路径的嵌套文件夹与丢弃路径:是,但我无法得到所有的子文件夹内的。/


共有3个答案

袁泓
2023-03-14

Buildspec是针对代码构建的,正如t_yamo所指出的。

您使用的是CodeDeploy,它使用一个appspec.yml文件,在我的配置中类似于此。

version: 0.0
os: linux
files:
  - source: /
    destination: /path/to/destination
hooks:
  BeforeInstall:
    - location: /UnzipResourceBundle.sh
  ApplicationStart:
    - location: /RestartServer.sh
      timeout: 3600

UnzipResourceBundle.sh只是一个bash脚本,可以用来做任何事情。

#!/bin/bash
// Do something

您可以在此处的Amazon文档中找到AppSpec.yml文件的示例-https://docs.aws.amazon.com/codedeploy/latest/userguide/reference-appspec-file-example.html#appspec-文件示例lambda

海雪松
2023-03-14

您不应该使用CodeDeploy,因为这是一种自动化应用程序部署的服务,而应该使用CodeBuild,它执行命令并准备部署构件,以便在管道中进一步使用。

这些命令位于buildspec.yml文件中(通常位于repo的根目录中,但它是可配置的)。对于您的用例,它不会太复杂,因为您没有编译任何东西或运行测试等。

尝试将此作为起点:

version: 0.2

phases:
  build:
    commands:
      - ls

artifacts:
  files:
    - public/*

phases部分是必需的,这就是为什么它被包括在内(至少,由于ls命令,您将看到CodeBuild环境中存在哪些文件),但是对于您的案例来说它并不有趣。有趣的是工件部分。这就是您定义代码构建阶段的输出的地方,即在管道中进一步传递到下一步的内容。

根据您想要如何构造文件(例如,您想要将公共目录也放在工件中,还是只想要文件本身,而不需要父目录),您可能想要使用工件部分中可能的其他配置。有关详细信息,请参见buildspec参考。

记住使用CodeBuild步骤的输出工件作为Deploy to S3步骤的输入工件。

苍元章
2023-03-14

CodeBuild使用buildspec,但CodeDeploy使用appspec。

有任何appspec文件吗?

 类似资料:
  • 无法执行目标org.apache.maven.plugins:maven-compiler-plugin:3.1:在项目gameoflife上编译(default-compile)-core:编译失败[错误]此环境中未提供编译器。也许您运行的是JRE而不是JDK? 我已经在我的机器上安装了Java,但仍然面临这个问题。 我在做EC2。

  • 我试图使用JsonSlurper从不同的文件输入变量。但它在第二次执行时失败了。有人能帮帮我吗? 从步骤 主要的棒极了 Java全球设置。json 詹金斯档案 错误记录

  • 在两台不同的笔记本电脑上使用maven构建相同的项目。一个是运行良好,一个是显示错误。 状态:两个系统的配置相同。 使用的命令:mvn clean install-DskipTests=true 错误: 我什至尝试删除所有内容,例如再次创建. m2文件夹。

  • > 错误:任务“:app:CompileDebugKotlin”执行失败。

  • 我已经通过libav-tools对安装了ffmpeg的应用程序进行了dockerize。该应用程序启动时没有问题,但是当Fluent-ffmpeg npm模块试图执行ffmpeg命令时出现了问题,但没有找到。当我想检查ffmpeg的版本和图像中设置的linux发行版时,我使用了命令,但它给出了以下错误: 然后我意识到,我尝试在图像或容器中运行的所有命令都会出现同样的错误。 这是我的Dockerfi

  • 问题内容: 我试图通过Python调用带有多个参数的进程。执行批处理文件本身对我来说很好,但是将其翻译成Python会让我大叫。这里是批处理文件的内容: 批处理文件运行的可执行文件名为。可执行文件的输出提供以下信息:– backend 。 另请注意,某些参数是字符串,而有些则不是。 解 现在对我有用: 问题答案: 在Windows中执行批处理文件: 如果您不想执行批处理文件,而是直接从Python

  • 有一些话题和我的相似,但对我没有帮助。也许会有新的事情发生。 问题:我无法执行wkhtmltopdf表单PHP。我的基本代码是:

  • 尝试在IntelliJ中调试项目时出现此错误。有人能帮忙吗? 任务应用程序的执行失败。main()。 进程'命令'/usr/lib/jvm/java-1.11.0-openjdk-amd64/bin/java"以非零退出值1完成