HOWTO
- https://www.jenkins.io/doc/tutorials/build-a-java-app-with-maven/
- http://www.mastertheboss.com/soa-cloud/docker/deploying-applications-on-your-docker-wildfly-image
- https://www.eclipse.org/community/eclipse_newsletter/2020/november/3.php
- https://www.jenkins.io/doc/book/pipeline/docker/
- https://www.jenkins.io/blog/2017/02/07/declarative-maven-project/
- https://medium.com/faun/docker-build-push-with-declarative-pipeline-in-jenkins-2f12c2e43807
- https://github.com/wildfly/quickstart/tree/master/helloworld
GitHub projects
Pipeline file https://github.com/dveselka/java-ee-8/blob/main/java-ee8-minimal/Jenkinsfile
Add jenkins user into docker group
sudo usermod -aG docker jenkins
sudo systemctl restart jenkins
Checkout app from GitHub
stage('Checkout') {
git url: 'https://github.com/dveselka/java-ee-8/', credentialsId: 'dave-devops', branch: 'main'
}
Build application using Maven
stage('Build') {
dir('java-ee8-minimal'){
withMaven(maven:'Maven'
) {
sh 'pwd'
sh 'env'
sh 'mvn clean package'
def pom = readMavenPom file:'pom.xml'
print pom.version
env.version = pom.version
}
}
}
Build Docker image
stage("BuildDockerImage"){
dir('java-ee8-minimal'){
def customImage = docker.build("my-image:${env.BUILD_ID}")
}
}
Jenkins log - Docker image build [Pipeline] { (Image)
[Pipeline] dir
Running in /var/lib/jenkins/workspace/java-ee-8/java-ee8-minimal
[Pipeline] {
[Pipeline] isUnix
[Pipeline] sh
+ docker build -t com.dave/java-ee8-minimal:4 .
Sending build context to Docker daemon 46.59kB
Step 1/4 : FROM jboss/wildfly
---> 8d9094a2468d
Step 2/4 : RUN /opt/jboss/wildfly/bin/add-user.sh admin Admin#123 --silent
---> Using cache
---> 8b8272a09327
Step 3/4 : COPY ./target/java-ee8-minimal.war /opt/jboss/wildfly/standalone/deployments/
---> 229ba08da529
Step 4/4 : CMD ["/opt/jboss/wildfly/bin/standalone.sh", "-b", "0.0.0.0", "-bmanagement", "0.0.0.0"]
---> Running in fdea8bab71ee
Removing intermediate container fdea8bab71ee
---> c165d87af41e
Successfully built c165d87af41e
Successfully tagged com.dave/java-ee8-minimal:4
Push Docker image to repository (optional)
Run container
stage ('Run') {
dir('java-ee8-minimal'){
docker.image("com.dave/java-ee8-minimal:${env.BUILD_ID}").run('-it --name java-ee8-minimal com.dave/java-ee8-minimal')
}
}
Install Jenkins Docker plugin to remove this error
groovy.lang.MissingPropertyException: No such property: docker for class: groovy.lang.Binding
at groovy.lang.Binding.getVariable(Binding.java:63)
at org.jenkinsci.plugins.scriptsecurity.sandbox.groovy.SandboxInterceptor.onGetProperty(SandboxInterceptor.java:270)
Jenkins log - run Docker container
[Pipeline] { (Run)
[Pipeline] dir
Running in /var/lib/jenkins/workspace/java-ee-8/java-ee8-minimal
[Pipeline] {
[Pipeline] isUnix
[Pipeline] sh
+ docker run -d -it --name java-ee8-minimal com.dave/java-ee8-minimal:6
[Pipeline] }
[Pipeline] // dir
[Pipeline] }
[Pipeline] // stage
[Pipeline] }
[Pipeline] // node
[Pipeline] End of Pipeline
Finished: SUCCESS
Docker process docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
0eb3d2588c6b com.dave/java-ee8-minimal:6 "/opt/jboss/wildfly/…" 2 minutes ago Up 2 minutes 8080/tcp java-ee8-minimal