Add a Java Spring Boot example

Along with supporting CI/CD jobs.

Change-Id: I068831ff1cce00c79f358c298333c9d749d1fbdf
This commit is contained in:
Radosław Piliszek 2023-05-23 19:08:40 +02:00
parent c3f396ae0b
commit 101733991b
9 changed files with 171 additions and 0 deletions

0
.gitignore vendored Normal file
View File

33
java-spring-boot-demo/.gitignore vendored Normal file
View File

@ -0,0 +1,33 @@
HELP.md
target/
!.mvn/wrapper/maven-wrapper.jar
!**/src/main/**/target/
!**/src/test/**/target/
### STS ###
.apt_generated
.classpath
.factorypath
.project
.settings
.springBeans
.sts4-cache
### IntelliJ IDEA ###
.idea
*.iws
*.iml
*.ipr
### NetBeans ###
/nbproject/private/
/nbbuild/
/dist/
/nbdist/
/.nb-gradle/
build/
!**/src/main/**/build/
!**/src/test/**/build/
### VS Code ###
.vscode/

View File

@ -0,0 +1,15 @@
#
# Build stage
#
FROM docker.io/library/maven:3.9.2-eclipse-temurin-17 AS build
COPY src /home/app/src
COPY pom.xml /home/app
RUN mvn -f /home/app/pom.xml clean package
#
# Package stage
#
FROM docker.io/library/eclipse-temurin:17-jre
COPY --from=build /home/app/target/demo-0.0.1-SNAPSHOT.jar /usr/local/lib/demo.jar
EXPOSE 8080
ENTRYPOINT ["java","-jar","/usr/local/lib/demo.jar"]

View File

@ -0,0 +1,39 @@
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>3.1.0</version>
<relativePath/> <!-- lookup parent from repository -->
</parent>
<groupId>com.example</groupId>
<artifactId>demo</artifactId>
<version>0.0.1-SNAPSHOT</version>
<name>demo</name>
<description>Demo project for Spring Boot</description>
<properties>
<java.version>17</java.version>
</properties>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
</project>

View File

@ -0,0 +1,13 @@
package com.example.demo;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
@SpringBootApplication
public class DemoApplication {
public static void main(String[] args) {
SpringApplication.run(DemoApplication.class, args);
}
}

View File

@ -0,0 +1,13 @@
package com.example.demo;
import org.junit.jupiter.api.Test;
import org.springframework.boot.test.context.SpringBootTest;
@SpringBootTest
class DemoApplicationTests {
@Test
void contextLoads() {
}
}

48
zuul.d/jobs.yaml Normal file
View File

@ -0,0 +1,48 @@
- secret:
name: nebulous-opendev-quay.io
data:
quay.io:
username: nebulous+opendev
password: !encrypted/pkcs1-oaep
- GBkjBjEWyZXkCGKTaNF8e7A2SwGfOuLMHV27+GReJjgh2+shxVfYyXwhVW3ZhP2/ICl4Q
vHPKtkqEYUNsUMLkPTWA7VEljZoyKUIZjEBJO9VoMWt79VYC0oS6qzjVmuCblev2nPFQT
jJLvdhyXh/uNbVlQ4X8H2ha0+8a7ClBneW6jA0Wu77cuAYnQRmHhtD+Mob+pTrxzyta37
wjA/97DMLqKd62M285LFdE1GGh2+PhfUuP//+wz7Ha3XJw1sMQziUWcEAWW7puUDpPI5b
Qpx3NCGInXH3utIpuFo76lTeN5OVAvjotqNWrngA2FRsNKUtH9DEqv5Prl0CuJRs9QEZm
PTJRwN/2LG97VtNCUdW4J5laNTCUR/cVIgTbh+YIvJWjAn4HqgUjS5SXBkR5nVA9pSlGJ
lu1y4WCuxieRdNBZfLcMJUSuLrbRY1De5c5cTcz6R64/2D+h2YTSdp4WzlzHvsEL97eZI
gNRhv3vOHKcWdWeVMXiaAjcBSuuXZGtcuH+pWte+cRYHjRIgjxlQMHAltgfA71JZI+xnh
SB6gmEwff5LL0fB1KULXBKhePnlC8xcr80hwubFzmAa4VcCQ+Fv/v6zbajUV9RfkAm26F
dp5S9xBoTTAlmcJ/cEz4Eq+URYe9jiU/PKYqEzLGhpKpGWzH86kpkWXJOzceCA=
- job:
name: nebulous-component-template-build-container-images
parent: opendev-build-container-image
description: Build the container images.
vars: &image_vars
promote_container_image_method: intermediate-registry
promote_container_image_job: nebulous-component-template-upload-container-image
container_images:
- context: java-spring-boot-demo
registry: quay.io
repository: quay.io/nebulous/component-template-java-spring-boot-demo
- job:
name: nebulous-component-template-upload-container-images
parent: opendev-upload-container-image
description: Build and upload the container images.
vars: *image_vars
secrets:
- name: container_registry_credentials
secret: nebulous-opendev-quay.io
pass-to-parent: true
- job:
name: nebulous-component-template-promote-container-images
parent: opendev-promote-container-image
description: Promote previously uploaded container images.
vars: *image_vars
secrets:
- name: container_registry_credentials
secret: nebulous-opendev-quay.io
pass-to-parent: true

10
zuul.d/project.yaml Normal file
View File

@ -0,0 +1,10 @@
- project:
check:
jobs:
- nebulous-component-template-build-container-images
gate:
jobs:
- nebulous-component-template-upload-container-images
promote:
jobs:
- nebulous-component-template-promote-container-images