50万奖金+官方证书,深圳国际金融科技大赛正式启动,点击报名 了解详情
写点什么

AWS CodeBuild 将提供本地构建支持

  • 2019-10-18
  • 本文字数:1810 字

    阅读完需:约 6 分钟

AWS CodeBuild 将提供本地构建支持

今天,我们很高兴宣布 AWS CodeBuild 将提供本地构建支持。


AWS CodeBuild


是完全托管的构建服务。没有需要预置和扩展的服务器,或需要安装、配置和操作的软件。您只需指定您的源代码位置并选择构建设置,CodeBuild 就会通过运行构建脚本,对您的代码进行编译、测试和打包。在本博文中,我将向您演示如何在本地设置 CodeBuild 来构建并测试示例 Java 应用程序。


通过在本地计算机上构建应用程序,您可以:


  • 在本地测试 buildspec 文件的完整性和内容。

  • 提交之前,在本地测试并构建应用程序。

  • 快速识别并修复本地开发环境中的错误。

先决条件

在这篇博文中,我将使用 AWS Cloud9 IDE 作为开发环境。


如果您要将 AWS Cloud9 用作 IDE,请遵循“AWS Cloud9 用户指南”中的快速设置步骤


AWS Cloud9 IDE 中已安装了 DockerGit。如果您打算使用笔记本电脑或台式机作为开发环境,请先安装 Docker 和 Git。

在本地构建 CodeBuild 映像的步骤

运行 git clone https://github.com/aws/aws-codebuild-docker-images.git,将此存储库下载到本地计算机。


Git


$ git clone https://github.com/aws/aws-codebuild-docker-images.git
复制代码


我们来为 JDK 8 环境构建一个本地 CodeBuild 映像。JDK 8 的 Dockerfile 位于 /aws-codebuild-docker-images/ubuntu/java/openjdk-8


编辑 Dockerfile 删除最后一行 ENTRYPOINT [“dockerd-entrypoint.sh”],并保存该文件。


运行 cd ubuntu/java/openjdk-8 以更改本地工作区中的目录。


运行 docker build -t aws/codebuild/java:openjdk-8 以在本地构建 Docker 映像。运行完该命令需要几分钟的时间。


Bash


$ cd aws-codebuild-docker-images$ cd ubuntu/java/openjdk-8$ docker build -t aws/codebuild/java:openjdk-8 .
复制代码


设置 CodeBuild 本地代理的步骤

运行以下 Docker pull 命令,下载本地 CodeBuild 代理。


Bash


$ docker pull amazon/aws-codebuild-local:latest --disable-content-trust=false
复制代码


现在,您的计算机上已经具有本地代理映像,并可以运行本地构建了。


运行以下 git 命令下载示例 Java 项目。


Bash


$ git clone https://github.com/karthiksambandam/sample-web-app.git
复制代码

使用本地代理构建示例项目的步骤

我们来使用本地代理构建示例 Java 项目。


执行以下 Docker 命令,运行本地代理并构建您之前克隆的示例 Web 应用程序存储库。


$ docker run -it -v /var/run/docker.sock:/var/run/docker.sock -e "IMAGE_NAME=aws/codebuild/java:openjdk-8" -e "ARTIFACTS=/home/ec2-user/environment/artifacts" -e "SOURCE=/home/ec2-user/environment/sample-web-app" amazon/aws-codebuild-local
复制代码


注意 :我们需要提供三个环境变量,即 IMAGE_NAME、SOURCE 和 ARTIFACTS。


IMAGE_NAME :构建环境映像的名称。


SOURCE :源代码目录的绝对路径。


ARTIFACTS :工件输出文件夹的绝对路径。


如果您在其他操作系统上运行,绝对路径可能会有所不同:


Linux:/home/user/…


MacOS :/Users/user/…


当您运行示例项目时,会出现运行时错误,提示 YAML 文件不存在。这是因为示例 Web 项目中未包含 buildspec.yml 文件。AWS CodeBuild 需要 buildspec.yml 来运行构建。有关 buildspec.yml 的更多信息,请参阅“AWS CodeBuild 用户指南”中的构建规范示例


我们来将 buildspec.yml 文件及以下内容添加到 sample-web-app 文件夹,然后重新构建项目。


YAML


version: 0.2
phases: build: commands: - echo Build started on `date` - mvn install
artifacts: files: - target/javawebdemo.war
复制代码



$ docker run -it -v /var/run/docker.sock:/var/run/docker.sock -e "IMAGE_NAME=aws/codebuild/java:openjdk-8" -e "ARTIFACTS=/home/ec2-user/environment/artifacts" -e "SOURCE=/home/ec2-user/environment/sample-web-app" amazon/aws-codebuild-local
复制代码


现在,您应该可以成功构建了。成功执行后,在“/artifacts”文件夹中查看构建的最终 artifacts.zip 文件并进行验证。

总结:

在这篇博文中,我向您演示了如何快速设置 CodeBuild 本地代理,以便从本地台式机或笔记本电脑上直接构建项目。如您所见,本地构建可以帮助您快速识别和修复错误,从而提高开发人员的工作效率。


希望本文会对您有所帮助。欢迎在评论中留下您的反馈或建议。


作者介绍:


Randall Hunt


AWS 全球高级布道师。此前供职于 NASA, SpaceX 及 MongoDB。


原文链接:


https://amazonaws-china.com/cn/blogs/china/local-build-support-aws-codebuild/


2019-10-18 09:00949
用户头像

发布了 1938 篇内容, 共 162.7 次阅读, 收获喜欢 81 次。

关注

评论

发布
暂无评论
发现更多内容

智慧社区综合应用平台搭建,社区管理解决方案

t13823115967

智慧社区管理平台开发 智慧平安社区平台建设

CKLC挖矿矿机系统开发案例介绍

系统开发咨询1357O98O718

CKLC挖矿矿机系统软件开发 CKLC挖矿矿机系统开发 CKLC挖矿矿机APP系统开发

MySQL为Null会导致5个问题,个个致命!

王磊

MySQL MySQL使用

AAAI 2021论文:利用深度元学习对城市销量进行预测(附论文下载)

京东科技开发者

数据库 大数据 时序预测

NoahTenet诺亚信条软件系统APP开发

系统开发

母鸡下蛋实例:多线程通信生产者和消费者wait/notify和condition/await/signal条件队列

叫练

多线程与高并发 Wait lock 线程互斥 await

IPFS云算力挖矿系统开发详解案例及源码

系统开发咨询1357O98O718

云算力挖矿系统开发详解 云算力APP系统软件开发 云算力模式系统开发源码 云算力软件系统开发定制

分享一个普通程序员的“沪漂”六年的历程以及感想

程序员老猫

回忆录 经历 年终总结 沪漂 上海买房

通达同城快递设计方案

garlic

架构师训练营第 1 期

令数字起舞,让自然微笑:TECH4ALL的2020启示录

脑极体

如何使用mock应对测试所需随机数据

华为云开发者联盟

测试 数据 Mock

SpringCloudGateway(一) 概览

Java SpringcloudGateway

5G与4G的差别及应用

anyRTC开发者

人工智能 android AI 5G WebRTC

测开之函数进阶· 第6篇《闭包》

清菡软件测试

测试开发

爆赞!P8架构师总结29篇多线程与高并发+设计模式核心笔记

Java架构追梦

Java 学习 架构 面试 多线程高并发

IPFS分布式存储矿机系统APP软件开发

系统开发

RPC Demo(二) 基于 Zookeeper 的服务发现

Java zookeeper RPC 服务发现

技术干货 | 六分钟学会使用 HBuilder 引入构建 mPaaS 小程序

蚂蚁集团移动开发平台 mPaaS

小程序 uni-app mPaaS

为了搞清楚类加载,竟然手撸JVM!

小傅哥

JVM 小傅哥 类加载 生命周期 加载机制

Spring cloud Gateway(二) 一个Http请求的流程解析

Java 网关

鸟枪换炮,利用python3对球员做大数据降维(因子分析得分),为C罗找到合格僚机

刘悦的技术博客

Python 数据分析 特征选择 降维

盘点2020 | YourBatman 2020年感悟关键词:科比、裁员、管理层、活着

YourBatman

裁员 盘点2020 科比 管理层 活着

IPFS挖矿矿机系统开发方案丨IPFS挖矿矿机源码案例

系统开发咨询1357O98O718

IPFS云算力挖矿系统开发 IPFS算力挖矿系统开发搭建

阿里面试:Mybatis中方法和SQL是怎么关联起来的呢?

田维常

mybatis

Java多线程编程核心技术

田维常

多线程

LeetCode题解:239. 滑动窗口最大值,二叉堆,JavaScript,详细注释

Lee Chen

算法 大前端 LeetCode

跨年巨作!13万字!腾讯高工纯手写“JDK源码笔记”直接带你飙向实战

比伯

Java 编程 架构 面试 计算机

IPFS挖矿系统开发详情案例

系统开发咨询1357O98O718

IPFS云算力挖矿系统开发 IPFS算力挖矿软件系统开发

公安警务报警系统,二维码一键定位报警

t13823115967

二维码定位报警系统开发 微警务 二维码定位

送你一份迷你书,全面了解如何做好大促技术备战

京东科技开发者

DevOps

重新发现科技与人文的互动

脑极体

AWS CodeBuild 将提供本地构建支持_语言 & 开发_亚马逊云科技 (Amazon Web Services)_InfoQ精选文章