构建环境

更新时间:

本文描述云效使用的构建环境。下面会介绍可用的环境,如果您在构建中遇到了问题,可以查看构建环境调试

基础环境

所有构建环境基于Ubuntu系统。

执行构建命令的用户是admin,拥有sudo权限。所以您可以使用sudo apt-get update && sudo apt-get install -y xxx 来安装需要的软件。

已经预装的软件:

  1. g++ 4.9.2

  2. gcc 4.9.2

  3. make 4.0

  4. curl

  5. wget

  6. unzip

  7. python 3.5(不在PATH中,需要使用/usr/alibaba/install/python-3.5.0/bin/python3来引用)

  8. git 1.9

各个语言的环境

通过设置release文件中的code.language的值,您可以使用相应语言、版本的构建环境。

Java环境

基于基础环境,并安装了:

  1. maven 3.5

  2. gradle 4.1

提供三个JDK版本:

  1. oracle-jdk1.7 (code.language=oracle-jdk1.7

  2. oracle-jdk1.8 (code.language=oracle-jdk1.8

  3. oracle-jdk1.9 (code.language=oracle-jdk1.9

NodeJS环境

基于基础环境,并安装了:

  1. python 2.7,默认置于PATH中,支持node-gyp编译。

提供Node.js版本:

  1. node6.11.3 npm3.10.10 yarn0.27.5 cnpm6.0.0(code.language=node6.x

  2. node7.10.0 npm4.20 yarn0.27.5 cnpm6.0.0(code.language=node7.x

  3. node8.4.0 npm5.3.0 yarn0.27.5 cnpm6.0.0(code.language=node8.x

  4. node9.11.2 npm5.6.0 yarn1.15.2 cnpm6.0.0(code.language=node9.x

  5. node10.15.3 npm6.4.1 yarn1.15.2 cnpm6.0.0(code.language=node10.x

  6. node11.15.0 npm6.7.0 yarn1.15.2 cnpm6.0.0(code.language=node11.x

  7. node12.2.0 npm6.9.0 yarn1.15.2 cnpm6.0.0(code.language=node12.x

注意 :上述node及npm版本会随着相应的node大版本的更新而更新,但code.language的取值不变。比如您配置了code.language=node6.x,目前实际使用的是node6.11.3,如果node6的版本升级到了6.12.0,则您实际用到的可能就是6.12.0。

PHP环境

基于基础环境,并安装了:

  1. composer 1.0

提供两个php版本:

  1. php5.6 phpunit 5.7(code.language=php5.6

  2. php7.0 phpunit 6.3(code.language=php7.0

Golang环境

基于基础环境,并安装了:

  1. go-wrapper

提供两个Golang版本:

  1. go1.8.5 (code.language=golang1.8

  2. go1.9.2(code.language=golang1.9

  3. go1.11.10(code.language=golang1.11

  4. go1.12.5(code.language=golang1.12

Python环境

基于基础环境,提供两个python版本:

  1. python2.7.13(code.language=python2.7

  2. python3.5.0 (code.language=python3.5

其它

如果您的构建对环境没有特殊需求,可以使用code.language=scripts。此时会使用基础环境。

构建环境调试

云效使用docker镜像的方式提供构建环境,镜像可以公开下载到,具体的镜像地址可以在构建日志中看到(信息红色字体标识,可以搜索关键字build image),如下图所示:build-image-in-log构建命令在日志中也可以看到(信息红色标识,可搜关键字build command),如下图:build-command所以如果您在构建中遇到了问题,可以将相应的镜像拉取到本地,假设镜像地址为registry.cn-beijing.aliyuncs.com/rdc-builds/oracle-jdk:1.8,则使用下面的命令进行本地调试:

//在宿主机上执行,并进入容器
$ docker exec -ti `docker run -d registry.cn-beijing.aliyuncs.com/rdc-builds/oracle-jdk:1.8` bash
//在容器中切换到admin,因为云效会使用admin账户进行构建
root@eed5d6e8a6bc:/#su admin
// 开始您的调试,比如下载代码后,运行构建命令
git clone xxxxx
mvn -U clean package -Dmaven.test.skip=true -DskipTests=true -Dappname=test-pred -DAPP_NAME=test-pred
……

如果我们的镜像不能满足您的需求,建议使用自定义构建镜像