云服务器内容精选

  • 配置SWR服务 本文档使用SWR来保存环境镜像,需要首先配置容器镜像服务(SWR)。 在CodeArts中单击导航“控制台”。在控制台中单击左上角搜索并进入SWR服务。 请检查页面左上方的“区域”列表,请确保与编译构建任务所在区相同的区域。如果区域不同,请选择相同区域。 单击“登录指令”,页面弹框显示登录指令。 其中, -u之后的字符串为用户名。 -p之后的字符串为密码。 最后的字符串为SWR服务器地址,此地址即为后续配置并执行任务中的参数“dockerServer”。 图1 登录指令 此处生成的登录指令为临时登录指令,有效期为24小时。如果需要长期有效的登录指令,请参见获取长期有效登录指令。 单击“创建组织”,在弹框中输入组织名称“phoenix”(此名称全局唯一,如果页面提示“组织已存在”,请自定义其它名称),单击“确定”保存。 这里的组织名称,即为后续配置并执行任务中的参数“dockerOrg”。
  • 设置定时执行任务 为了防止问题代码进入生产环境,确保应用总是处于可部署的状态,团队建议对应用进行持续不断的验证。 通过以下设置,可实现构建任务的定时执行。 在任务“phoenix-sample-ci”的详情页,单击“编辑”。 选择“执行计划”页签。 打开“启用定时执行”开关,根据需要选择执行日与执行时间,保存任务。 本文档中勾选“全选”,执行时间为“12:00”(本文中使用默认时区,可以根据实际需要修改时区)。 验证配置结果:根据配置时间查看构建任务是否自动执行,本节不再赘述。
  • 设置提交代码触发自动编译 通过以下配置,可实现代码变更后自动触发构建任务的执行,从而实现项目的持续集成。 在任务“phoenix-sample-ci”的详情页,单击“编辑”。 选择“执行计划”页签。 打开“提交代码触发执行”开关,保存任务。 由于在参数设置页面为参数codeBranch配置的默认值为“master”,因此本次设置的结果是当master有代码变更时自动触发构建。 验证配置结果:修改项目代码并提交至master,即可查看构建任务是否自动执行。
  • 预置任务简介 样例项目中预置了以下5个构建任务。 表1 预置任务 预置任务 任务说明 phoenix-sample-ci 基本的构建任务。 phoenix-sample-ci-test 构建测试环境可用镜像的任务。 phoenix-sample-ci-worker 构建Worker功能镜像的任务。 phoenix-sample-ci-result 构建Result功能镜像的任务。 phoenix-sample-ci-vote 构建Vote功能镜像的任务。 本章节以任务“phoenix-sample-ci”为例进行讲解,此任务包含的步骤如下。 表2 构建步骤 构建步骤 说明 制作Vote镜像并推送到SWR仓库 依据代码仓库中的“vote/Dockerfile”文件制作Vote功能镜像,并将镜像推送到容器镜像服务。 制作Result镜像并推送到SWR仓库 依据代码仓库中的“result/Dockerfile”文件制作并推送Result功能镜像,并将镜像推送到容器镜像服务。 使用Maven安装Worker依赖包 使用Maven安装Worker功能所需的依赖。 制作Worker镜像并推送到SWR仓库 依据代码仓库中的“worker/Dockerfile”文件制作并推送Worker功能镜像,并将镜像推送到容器镜像服务。 生成Postgres and Redis Dockerfile 通过shell命令生成Dockerfile文件,用以制作Postgres(数据库)和Redis(缓存)镜像。 制作Postgres镜像并推送到SWR仓库 依据“生成Postgres and Redis Dockerfile”步骤中所生成的Dockerfile文件制作Postgres镜像,并将镜像推送到容器镜像服务。 制作Redis镜像并推送到SWR仓库 依据“生成Postgres and Redis Dockerfile”步骤中所生成的Dockerfile文件制作Redis镜像,并将镜像推送到容器镜像服务。 替换Docker-Compose部署文件镜像版本 为了将镜像部署到ECS时,能够可以拉取到正确的镜像,使用shell命令进行完成以下操作。 使用sed命令,依次将文件“docker-compose-standalone.yml”中的参数替换为构建任务的参数“dockerServer”、“dockerOrg”、“BUILDNUMBER”进行替换。 使用tar命令,将文件“docker-compose-standalone.yml”压缩为“docker-stack.tar.gz”,将部署所需文件进行打包,以便于后续步骤将该文件上传归档。 替换Kubernetes部署文件镜像版本 为了将镜像部署到CCE时,能够可以拉取到正确的镜像,使用shell命令进行完成以下操作。 使用sed命令,将代码仓库中目录“kompose”下所有以“deployment”结尾的文件中的参数“docker-server”、“docker-org”,替换为构建任务的参数“dockerServer”、“dockerOrg”。 使用sed命令,将代码仓库中“result-deployment.yaml”、“vote-deployment.yaml”、“worker-deployment.yaml”三个文件中的参数“image-version”用构建任务参数“BUILDNUMBER”进行替换。 上传Kubernetes部署文件到软件发布库 将“替换Kubernetes部署文件镜像版本”步骤中修改后的所有“.yaml”文件上传到软件发布库中归档。 上传docker-compose部署文件到软件发布库 将“替换Docker-Compose部署文件镜像版本”步骤中压缩好的“docker-stack.tar.gz”上传到软件发布库中归档。
  • 创建Java文件 参考步骤4,创建名为“src/main/java”的目录。 在“src/main/java”的目录下,参考步骤6和步骤7,创建名为“HelloWorld.java”的文件。文件中代码如下: /** * Hello world * */ public class HelloWorld { public static void main(String[] args) { System.out.println("Hello World!"); } } 单击“确定”。
  • Maven构建默认命令含义是什么? 构建服务内置的默认构建命令为 # 功能: 打包 # 参数说明: # -Dmaven.test.skip=true:跳过单元测试 # -U:每次构建检查依赖更新,可避免缓存中快照版本依赖不更新问题,但会牺牲部分性能 # -e -X :打印调试信息,定位疑难构建问题时建议使用此参数构建 # -B:以batch模式运行,可避免日志打印时出现ArrayIndexOutOfBoundsException异常 # 使用场景: 打包项目且不需要执行单元测试时使用 mvn package -Dmaven.test.skip=true -U -e -X -B 其中,各命令/参数含义为: mvn package:使用maven执行打包动作,此命令会在项目target目录下生成软件包,可根据需要自行调整目录。 -Dmaven.test.skip=true:跳过单元测试,建议保留。 -U:每次构建检查依赖更新,可避免缓存中快照版本依赖不更新问题,但会牺牲部分性能,建议保留。 -e -X:打印调试信息,定位疑难构建问题时建议使用此参数构建。 -B:以batch模式运行,可避免日志打印时出现ArrayIndexOutOfBoundsException异常
  • 背景信息 编译构建服务提供了大量构建步骤、模板等,并通过缓存、私有依赖库、开源镜像站等实现开箱即用编译构建体验。但由于构建场景多样化,初次使用编译构建服务时,仍有可能会因设计不当或理解偏差、使用方式不当,导致上手过程存在一定困难。因此,编译构建针对常见的复杂构建场景提供完整的最佳实践方案,供初次使用编译构建服务或需要尝试复杂构建场景的用户使用。 本文旨在演示如何使用编译构建服务完成Maven构建,使用构建包制作Docker镜像并推送到SWR仓库,同时对构建过程涉及的开源镜像站、私有依赖库、缓存的使用等作简要说明。 SWR,即容器镜像服务。SWR镜像仓库用于存储用户上传的Docker镜像,可以在构建、部署或其他场景使用。 父主题: 使用Maven构建自定义镜像(预置执行机,图形化构建)
  • 创建CMakeLists.txt文件 在根目录下,参考步骤6和步骤7,创建名为“CMakeLists.txt”的文件。文件中代码如下: cmake_minimum_required (VERSION 2.5) project (HolleWorld) AUX_SOURCE_DIRECTORY(. DIR_SRCS) add_executable(bin ${DIR_SRCS}) 单击“确定”。
  • 打包并制作、推送镜像 新建构建任务,其中,代码源选择前提准备中创建好的代码仓库“nodesource”,构建模板选择“npm”,并将任务名称命名为“nodesource-build”。 配置构建步骤。 配置“Npm构建”,在命令编辑器里,注释掉“npm run build”,输入“zip -r ./nodeserver.zip ./”,用来将代码打包成“nodeserver.zip”。 配置“上传软件包到软件发布库”,按如下图填写参数。 构建包路径:待上传的软件包路径。 发布版本号:软件包的版本。 包名:软件包名称。 在“上传软件包到软件发布库”构建步骤后添加“制作镜像并推送到SWR仓库”构建步骤,并按如下图填写参数。 配置完所有构建步骤,单击“新建并执行”,执行编译构建任务。 任务执行成功后,从日志里可以查看到新的镜像地址。
  • 项目说明 本文演示项目涉及两个Maven工程、一个基础Docker镜像及一个Dockerfile。 WebServer项目:此次构建主项目,期望使用CodeArts Build构建此项目,并使用得到的构建包制作Docker镜像,制作镜像所用Dockerfile存放于此项目根目录。 WebUtil项目:WebServer依赖的自研工具包,在WebServer项目pom文件中引入,主要用于演示私有依赖库使用场景。 基础镜像:以此镜像为基础,在基础镜像中添加WebServer构建包制作Docker镜像。 Dockerfile:用来制作镜像。 项目构建过程如下: 本文详细描述了从准备代码仓库到构建并制作镜像、推送镜像到SWR仓库的完整过程。大致分为以下步骤,可根据熟悉程度选择阅读: 构建准备 发布私有依赖到私有依赖库 打包并制作、推送镜像 查看构建结果 父主题: 使用Maven构建自定义镜像(预置执行机,图形化构建)
  • 操作流程 流程 说明 访问编译构建服务首页 介绍如何访问编译构建服务首页。 创建项目 为本实践创建项目。 创建CodeArts Repo代码仓 为本实践创建Repo代码仓用于存储代码文件。 创建build.yml文件 通过“build.yml”定义整个构建的流程。 创建build.yml中使用的子任务执行脚本 创建整个构建过程中依赖的构建任务的执行脚本。 创建并执行编译构建任务 创建BuildFlow编译构建任务并执行。 查看编译构建结果 查看编译构建结果。
  • 查看编译构建结果 “构建流程”页签中展示了当前构建任务运行的全量流程图,在构建任务未执行完成时,可以清晰的看到Job1和Job2是并行执行,Job3是等待Job1和Job2执行完成后才执行。 单击“构建流程”页签中左侧菜单的“Job1”或右侧界面的绿色矩形图形的“Job1”,进入Job1构建任务的执行详情页面,可以查看Job1构建任务的构建日志。 其中, “步骤日志”页签展示了当前构建任务运行顺序和资源调度情况。 “构建参数”页签展示了当前构建任务全局的参数信息。 “构建脚本”页签展示了当前构建任务执行的脚本内容。 参考1可查看“Job2”和“Job3”的构建任务执行详情。
  • 应用场景 在编译构建中,构建任务是构建的最小单元,适用于业务比较简单的场景,但是在有些复杂的构建场景下,构建任务可能并不能满足复杂的构建要求。例如,用户希望更模块化、更加细粒度的拆分构建任务,并按照构建任务之间的依赖顺序进行构建。 为此,编译构建服务支持使用BuildFlow将多个存在依赖关系的构建任务按照有向无环图(DAG)的方式组装起来,BuildFlow将会按照构建的依赖关系并发进行构建。 本示例为您演示构建任务3依赖于构建任务1和构建任务2的构建工程。
  • 创建Java文件 参考步骤4,创建名为“src/main/java”的目录。 在“src/main/java”的目录下,参考步骤6和步骤7,创建名为“HelloWorld.java”的文件。文件中代码如下: /** * Hello world * */ public class HelloWorld { public static void main(String[] args) { System.out.println("Hello World!"); } } 单击“确定”。
  • 背景说明 在编译构建服务中,默认每一次构建都会使用一个空白的且随机的目录(比如/devcloud/ws/sMMM/workspace/j_X/)作为此次构建的根目录,这个根目录所代表的空间称为BuildSpace。 BuildSpace的路径默认是随机的,即使是同一个项目的不同构建任务的BuildSpace也会被随机分配。 但是在某些场景下固定一个BuildSpace的路径是有必要的,因此编译构建服务支持配置BuildSpace,以固定构建执行目录。