# Build Java Applications More Flexibly
# Maven
version: "1.1"
stages:
- stage:
- git-checkout:
params:
depth: 1
- stage:
- java-build:
version: "1.0"
params:
# To execute custom packaging commands, you can fill in any Linux commands.
build_cmd:
- mvn package
- echo "build success"
jdk_version: 8
workdir: ${git-checkout}
- stage:
- release:
params:
dice_yml: ${git-checkout}/erda.yml
services:
Service name in erda.yml:
image: registry.erda.cloud/erda/terminus-openjdk:v11.0.6
copys:
# Copy the JAR package packaged by java-build
- ${java-build:OUTPUT:buildPath}/target/jar package name:/target/jar package name
# Copy erda monitoring files
- ${java-build:OUTPUT:buildPath}/spot-agent:/
# ${java-build:OUTPUT:JAVA_OPTS} is the corresponding monitoring command, which is essentially -javaagent:/xxx.jar
cmd: java ${java-build:OUTPUT:JAVA_OPTS} -jar /target/jar package name
- stage:
- dice:
params:
release_id: ${release:OUTPUT:releaseID}
Tips
To specify the maven setting.xml file, change build_cmd
to mvn package -s setting.xml
.
# Gradle
version: "1.1"
stages:
- stage:
- git-checkout:
params:
depth: 1
- stage:
- java-build:
version: "1.0"
params:
# To execute custom packaging commands, you can fill in any Linux commands.
build_cmd:
- ./gradlew bootJar
- echo "build success"
jdk_version: 8
workdir: ${git-checkout}
- stage:
- release:
params:
dice_yml: ${git-checkout}/erda.yml
services:
# Multiple
Service name in erda.yml:
image: registry.erda.cloud/erda/terminus-openjdk:v11.0.6
copys:
- ${java-build:OUTPUT:buildPath}/build/jar package path/jar package name:/target/jar package name
- ${java-build:OUTPUT:buildPath}/spot-agent:/
cmd: java ${java-build:OUTPUT:JAVA_OPTS} -jar /target/jar package name
Service name in erda.yml:
image: registry.erda.cloud/erda/terminus-openjdk:v11.0.6
copys:
- ${java-build:OUTPUT:buildPath}/build/jar package path/jar package name:/target/jar package name
- ${java-build:OUTPUT:buildPath}/spot-agent:/
cmd: java ${java-build:OUTPUT:JAVA_OPTS} -jar /target/jar package name
- stage:
- dice:
params:
release_id: ${release:OUTPUT:releaseID}
# Tomcat
version: "1.1"
stages:
- stage:
- git-checkout:
params:
depth: 1
- stage:
- java-build:
version: "1.0"
params:
# To execute custom packaging commands, you can fill in any Linux commands.
build_cmd:
- mvn clean package
- echo "build success"
jdk_version: 8
workdir: ${git-checkout}
- stage:
- release:
params:
dice_yml: ${git-checkout}/erda.yml
services:
Service name in erda.yml:
image: tomcat:jdk8-openjdk-slim
copys:
- ${java-build:OUTPUT:buildPath}/target/war package name.war:/usr/local/tomcat/webapps
# Copy erda monitoring files
- ${java-build:OUTPUT:buildPath}/spot-agent:/
# Declare tomcat JAVA_OPTS. The environment variable ${java-build:OUTPUT:JAVA_OPTS} is the corresponding monitoring command with the value similar to -javaagent:/xxx.jar
cmd: export JAVA_OPTS="${java-build:OUTPUT:JAVA_OPTS}" && mv /usr/local/tomcat/webapps/war package name.war /usr/local/tomcat/webapps/ROOT.war && /usr/local/tomcat/bin/catalina.sh run
- stage:
- dice:
params:
release_id: ${release:OUTPUT:releaseID}
The parameters are as follows:
Java-Build JAR Package
params:build_cmd
: Declares various building commands or pre-execute installation commands.params:jdk_version
: Declares specific version of JDK, currently with only 8 and 11 supported.params:workdir
: Declares building commands executed in a specific directory.java-build
: Allows users to customize building commands to achieve high customization and release JAR package.
Release
params:services
: Declares the building process of multiple services, similar to the declaration ofdockerfile
.params:services[]: service name in dice_yaml
: Theservice
name in correspondingdice.yml
, declares each of them.params:services[]: service name in dice_yaml: image
: Equal to theFROM image
indockerfile
, and users can declare their own runtime environment.params:services[]: service name in dice_yaml: copys[]
: Equal tocopy
indockerfile
, and users can copy files to their own runtime environment.params:services[]: service name in dice_ yaml: cmd
: Equal tocmd
indockerfile
, and users can declare their own startup commands.release
: Allows users to achieve highly customized building viapipeline.yml
, rather than writedockerfile
in the root directory of the project.
Tips
${java-build:OUTPUT:buildPath}
is the build path of java-build
.
${java-build:OUTPUT:JAVA_OPTS}
= -javaagent:/spot-agent/spot-agent.jar