构建环境
本文描述云效使用的构建环境。下面会介绍可用的环境,如果您在构建中遇到了问题,可以查看构建环境调试。
基础环境
所有构建环境基于Ubuntu
系统。
执行构建命令的用户是admin
,拥有sudo
权限。所以您可以使用sudo apt-get update && sudo apt-get install -y xxx
来安装需要的软件。
已经预装的软件:
g++ 4.9.2
gcc 4.9.2
make 4.0
curl
wget
unzip
python 3.5(不在PATH中,需要使用
/usr/alibaba/install/python-3.5.0/bin/python3
来引用)git 1.9
各个语言的环境
通过设置release文件中的code.language
的值,您可以使用相应语言、版本的构建环境。
Java环境
基于基础环境,并安装了:
maven 3.5
gradle 4.1
提供三个JDK版本:
oracle-jdk1.7 (
code.language=oracle-jdk1.7
)oracle-jdk1.8 (
code.language=oracle-jdk1.8
)oracle-jdk1.9 (
code.language=oracle-jdk1.9
)
NodeJS环境
基于基础环境,并安装了:
python 2.7,默认置于PATH中,支持node-gyp编译。
提供Node.js版本:
node6.11.3 npm3.10.10 yarn0.27.5 cnpm6.0.0(
code.language=node6.x
)node7.10.0 npm4.20 yarn0.27.5 cnpm6.0.0(
code.language=node7.x
)node8.4.0 npm5.3.0 yarn0.27.5 cnpm6.0.0(
code.language=node8.x
)node9.11.2 npm5.6.0 yarn1.15.2 cnpm6.0.0(
code.language=node9.x
)node10.15.3 npm6.4.1 yarn1.15.2 cnpm6.0.0(
code.language=node10.x
)node11.15.0 npm6.7.0 yarn1.15.2 cnpm6.0.0(
code.language=node11.x
)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环境
基于基础环境,并安装了:
composer 1.0
提供两个php版本:
php5.6 phpunit 5.7(
code.language=php5.6
)php7.0 phpunit 6.3(
code.language=php7.0
)
Golang环境
基于基础环境,并安装了:
go-wrapper
提供两个Golang版本:
go1.8.5 (
code.language=golang1.8
)go1.9.2(
code.language=golang1.9
)go1.11.10(
code.language=golang1.11
)go1.12.5(
code.language=golang1.12
)
Python环境
基于基础环境,提供两个python版本:
python2.7.13(
code.language=python2.7
)python3.5.0 (
code.language=python3.5
)
其它
如果您的构建对环境没有特殊需求,可以使用code.language=scripts
。此时会使用基础环境。
构建环境调试
云效使用docker镜像的方式提供构建环境,镜像可以公开下载到,具体的镜像地址可以在构建日志中看到(信息红色字体标识,可以搜索关键字build image),如下图所示:构建命令在日志中也可以看到(信息红色标识,可搜关键字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
……
如果我们的镜像不能满足您的需求,建议使用自定义构建镜像。