先展示一份配置好的 circle.yml。
- machine:
- java:
- version: openjdk8
- notify:
- branches:
- only:
- - master
- dependencies:
- override:
- - git config --global user.email "circle@circleci.com"
- - git config --global user.name "CircleCI"
- - chmod +x scripts/build.sh
- - ./scripts/build.sh
- test:
- post:
- - yes|mv -f ./target/Plugin-*.jar $CIRCLE_ARTIFACTS/Plugin-$CIRCLE_BUILD_NUM.jar
复制代码 接着解释每一行是什么意思。
第一行:
machine:
java:
version: openjdk8
这里规定了使用的环境,Minecraft 使用的开发环境为 Java,所以我们写 java。使用的版本可以是 openjdk7 或者 openjdk8 notify:
branches:
only:
- master
只提示 master 分支的构建错误等信息。 dependencies:
override:
- git config --global user.email "circle@circleci.com"
- git config --global user.name "CircleCI"
- chmod +x scripts/build.sh
- ./scripts/build.sh
这一部分是正式构建需要做的事。由于此示例项目的构建的命令放在了 script 目录下的 build.sh 中,所以我们会先给这个文件加权限(chmod +x),接着执行这个脚本文件。你也可以直接在 circle.yml 执行命令。
脚本文件大概是这个样子的:
- echo "正在构建,版本号 $CIRCLE_BUILD_NUM ..."
- mvn clean install package
复制代码 nvm clean install package
这个命令是 Maven 的基本构建生成的命令,会自动下载所有的依赖并编译源码,最后打包放入 /target 目录。
Gradle 就是 ./gradlew build。 test:
post:
- yes|mv -f ./target/Plugin-*.jar $CIRCLE_ARTIFACTS/Plugin-$CIRCLE_BUILD_NUM.jar
构建完成的 JAR 文件放在 /target 目录,但是 Circle CI 不会自动将其提取。所以我们需要手动移动(mv a.jar b.jar)构建完成的 jar 文件到输出的目录,Circle CI 使用环境变量 $CIRCLE_ARTIFACTS 来表示这个目录。这个项目使用了一些小技巧,使用了 $CIRCLE_BUILD_NUM 这个环境变量来表示构建号。
Gradle 就是 yes|mv -f ./build/lib/*.jar $CIRCLE_ARTIFACTS/Mod-$CIRCLE_BUILD_NUM.jar
详细的环境变量列表请看 https://circleci.com/docs/2.0/env-vars/ 。
|