我正尝试切换到使用CodeBuild来构建代码,这样我便可以轻松地将其推送到我的EC2实例,而无需手动构建和复制。
我可以在我的工作站上手动运行ant,并且一切都会按其应有的方式构建。 我现在正在尝试使用AWS CodeBuild控制台尝试此操作。 我压缩了源代码文件,并将其放在S3存储桶中,并将其位置放在AWS CodeBuild的源字段中。我在同一存储桶中有build.xml,并且还将build.xml放在代码zip文件的底部。在构建命令中,我放置了“ ant”。
我认为build.xml需要去其他地方吗? 在构建命令中,我是否还需要“蚂蚁”呢?这就是我手动构建项目时使用的所有内容。
从我阅读的内容中我应该能够压缩我的代码,将其放在S3位置,然后CodeBuild将其提取并正确构建?
此外,在“环境:如何构建”下-“输出文件”部分的作用是什么?不是为了构建正确的工件?
还有其他提示或技巧吗?我对所有这些都非常陌生,因此不胜感激!我这周刚刚了解了蚂蚁。这正在构建一个包含许多类的相当大的项目-这会引起问题吗?就像我之前说过的-如果我在系统上手动运行文件,我会建立文件。
这是通过代码构建进行构建时遇到的错误:
[Container] 2019/03/21 15:32:27 Entering phase BUILD
[Container] 2019/03/21 15:32:27 Running command ant
Buildfile: build.xml does not exist!
Build failed
我发现了我的问题-我从文件夹级别而不是根级别压缩了构建文件。我重新压缩后,现在可以看到build.xml。
我通过这些更改再次构建,看来我已经接近了!下列操作失败-
https://forums.aws.amazon.com/ 2019/03/21 20:57:13 Expanding myapp.jar
https://forums.aws.amazon.com/ 2019/03/21 20:57:13 Skipping invalid artifact path myapp.jar
https://forums.aws.amazon.com/ 2019/03/21 20:57:13 Phase complete: UPLOAD_ARTIFACTS Success: false
https://forums.aws.amazon.com/ 2019/03/21 20:57:13 Phase context status code: CLIENT_ERROR Message: no matching artifact paths found
myapp.jar不是构建正在创建的内容吗?
对于工件/名称应该是什么,我感到很困惑-这不是从构建中创建的吗?它要求一个ARN-当未创建ARN时,如何为其提供ARN?
对于什么是环境/输出文件也很困惑?这是必需的,但我不知道该领域应该做什么?它指出输出文件不能为空。这是否意味着它想要所有正在构建的类文件?如果是这样,那么此版本将在多个位置创建30多个类文件-这是一堆列出的文件。
谢谢 厄尼
答案 0 :(得分:1)
我正在使用它!我将我的发现发布给其他可能会遇到困难的人-
所以我发现“输出”表示构建完所有最终工件后要进入的所有文件和/或目录。
我在最终的jar工件中有两个目录。一个是WebContent,另一个是build。它们都有多个子目录。我将"WebContent/*,build/*"
放在输出文件字段中。它给了我一个jar工件,但是当我打开jar时,它没有任何子目录。为了使其包含所有子目录,我必须使用"WebContent/**/*,build/**/*"
来设置输出文件字段。现在,所有子目录都位于zip中,并且看起来好像构建成功。
希望这可以帮助其他人。
现在,为此创建一个脚本,并使其从GitLab运行。