diff --git a/pom.xml b/pom.xml
index 2c8b7574d..4a738eb42 100644
--- a/pom.xml
+++ b/pom.xml
@@ -4,19 +4,20 @@
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
4.0.0
- org.springframework.samples
- udc-petclinic
- pom
- 1.0.0-SNAPSHOT
- UDC :: Petclinic
-
org.springframework.boot
spring-boot-starter-parent
2.0.4.RELEASE
+ org.springframework.samples
+ udc-petclinic
+ pom
+ 1.0.0-SNAPSHOT
+ UDC :: Petclinic
+
udc-backend
+
diff --git a/udc-backend/pom.xml b/udc-backend/pom.xml
index 3cf4c0404..807535791 100644
--- a/udc-backend/pom.xml
+++ b/udc-backend/pom.xml
@@ -4,17 +4,15 @@
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
4.0.0
- org.springframework.samples
- udc-backend
- 1.0.0-SNAPSHOT
- UDC :: Petclinic :: Backend
-
org.springframework.samples
udc-petclinic
1.0.0-SNAPSHOT
+ udc-backend
+ UDC :: Petclinic :: Backend
+
1.8
diff --git a/udc-containers/pom.xml b/udc-containers/pom.xml
new file mode 100644
index 000000000..fb303d24e
--- /dev/null
+++ b/udc-containers/pom.xml
@@ -0,0 +1,117 @@
+
+
+ 4.0.0
+
+
+ org.springframework.samples
+ udc-petclinic
+ 1.0.0-SNAPSHOT
+
+
+ udc-containers
+ UDC :: Containers :: Parent
+ pom
+
+
+ udc-backend-service
+
+
+
+ UTF-8
+ UTF-8
+
+ true
+ true
+ TODO
+ university-course
+ localhost
+
+
+
+
+
+
+ org.apache.maven.plugins
+ maven-resources-plugin
+
+
+ copy-docker-resources
+ none
+
+ resources
+
+
+ ${project.build.directory}/context
+ true
+
+
+ src/main/resources
+ true
+
+
+
+
+
+
+
+ org.codehaus.mojo
+ exec-maven-plugin
+
+
+ docker-build
+ none
+
+ exec
+
+
+ ${docker.skip.build}
+ docker
+
+ build
+ -t
+
+ ${docker.registry.host}/${docker.repository}/${project.artifactId}:${project.version}
+
+ ${project.build.directory}/context
+
+
+
+
+ docker-push
+ none
+
+ exec
+
+
+ ${docker.skip.push}
+ docker
+
+ push
+
+ ${docker.registry.host}/${docker.repository}/${project.artifactId}:${project.version}
+
+
+
+
+
+
+
+
+
+
+
+
+ image
+
+ false
+
+
+
+ false
+ false
+
+
+
+
diff --git a/udc-containers/udc-backend-service/pom.xml b/udc-containers/udc-backend-service/pom.xml
new file mode 100644
index 000000000..ed5aaf49b
--- /dev/null
+++ b/udc-containers/udc-backend-service/pom.xml
@@ -0,0 +1,75 @@
+
+
+ 4.0.0
+
+
+ org.springframework.samples
+ udc-containers
+ 1.0.0-SNAPSHOT
+
+
+ udc-backend-service
+ UDC :: Containers :: Backend
+
+
+
+
+ org.apache.maven.plugins
+ maven-resources-plugin
+
+
+ copy-docker-resources
+ install
+
+ resources
+
+
+
+
+
+ org.apache.maven.plugins
+ maven-dependency-plugin
+
+
+ copy
+ package
+
+ copy
+
+
+
+
+ TODO
+ TODO
+ ${project.version}
+ jar
+ true
+ ${project.basedir}/target/context
+ ${project.artifactId}.jar
+
+
+ false
+ true
+
+
+
+
+
+ org.codehaus.mojo
+ exec-maven-plugin
+
+
+ docker-build
+ install
+
+
+ docker-push
+ deploy
+
+
+
+
+
+
diff --git a/udc-containers/udc-backend-service/src/main/resources/Dockerfile b/udc-containers/udc-backend-service/src/main/resources/Dockerfile
new file mode 100644
index 000000000..f0e025cb5
--- /dev/null
+++ b/udc-containers/udc-backend-service/src/main/resources/Dockerfile
@@ -0,0 +1,14 @@
+FROM ${docker.baseImage}
+
+EXPOSE 8080
+ENTRYPOINT ["/docker-entrypoint.sh"]
+WORKDIR "/udc/apps/petclinic"
+
+COPY docker-entrypoint.sh /docker-entrypoint.sh
+RUN chmod +x /docker-entrypoint.sh
+
+COPY todo.jar /udc/apps/petclinic/todo.jar
+
+LABEL project.groupid="${project.groupId}" \
+ project.artifactid="${project.artifactId}" \
+ project.version="${project.version}"
diff --git a/udc-containers/udc-backend-service/src/main/resources/docker-entrypoint.sh b/udc-containers/udc-backend-service/src/main/resources/docker-entrypoint.sh
new file mode 100644
index 000000000..a9bf588e2
--- /dev/null
+++ b/udc-containers/udc-backend-service/src/main/resources/docker-entrypoint.sh
@@ -0,0 +1 @@
+#!/bin/bash
diff --git a/udc-containers/udc-jenkins-slave/src/main/resources/Dockerfile b/udc-containers/udc-jenkins-slave/src/main/resources/Dockerfile
new file mode 100644
index 000000000..17a7d46ee
--- /dev/null
+++ b/udc-containers/udc-jenkins-slave/src/main/resources/Dockerfile
@@ -0,0 +1,15 @@
+FROM jenkinsci/jnlp-slave
+
+ENV CLOUDSDK_CORE_DISABLE_PROMPTS 1
+ENV PATH /opt/google-cloud-sdk/bin:${PATH}
+
+USER root
+
+RUN apt-get update -y
+RUN apt-get install -y jq \
+ libapparmor-dev \
+ libseccomp-dev \
+ unzip
+RUN curl https://sdk.cloud.google.com | bash && mv google-cloud-sdk /opt
+RUN gcloud components install kubectl
+RUN curl -sfSL https://raw.githubusercontent.com/kubernetes/helm/master/scripts/get | bash
diff --git a/udc-helm/cicd/jenkins/Chart.yaml b/udc-helm/cicd/jenkins/Chart.yaml
new file mode 100644
index 000000000..6662ee80a
--- /dev/null
+++ b/udc-helm/cicd/jenkins/Chart.yaml
@@ -0,0 +1,11 @@
+name: jenkins
+description: Jenkins CI for UDC
+version: 1.0.0
+keywords:
+ - cicd
+sources:
+ - https://github.com/kvendingoldo/udc-petclinic
+maintainers:
+ - name: Alex Sharov
+ email: kvendingoldo@gmail.com
+engine: gotpl
diff --git a/udc-helm/cicd/jenkins/templates/deployment.yaml b/udc-helm/cicd/jenkins/templates/deployment.yaml
new file mode 100644
index 000000000..69fba6c77
--- /dev/null
+++ b/udc-helm/cicd/jenkins/templates/deployment.yaml
@@ -0,0 +1,45 @@
+---
+apiVersion: extensions/v1beta1
+kind: Deployment
+metadata:
+ name: {{ .Values.component.name }}
+ labels:
+ heritage: {{ .Release.Service }}
+ release: {{ .Release.Name }}
+ chart: {{ .Chart.Name }}-{{ .Chart.Version }}
+ component: {{ .Values.component.name }}
+spec:
+ replicas: 1
+ template:
+ metadata:
+ name: {{ .Values.component.name }}
+ labels:
+ heritage: {{ .Release.Service }}
+ release: {{ .Release.Name }}
+ chart: {{ .Chart.Name }}-{{ .Chart.Version }}
+ component: {{ .Values.component.name }}
+ spec:
+ containers:
+ - name: {{ .Values.component.container.name }}
+ image: {{ .Values.component.container.image }}
+ imagePullPolicy: Always
+ ports:
+ - containerPort: 8080
+ protocol: TCP
+ - containerPort: 50000
+ protocol: TCP
+ env:
+ - name: JENKINS_SLAVEPORT
+ value: '50000'
+ - name: JAVA_VM_PARAMETERS
+ value: '-Xmx3072m -Xms256m'
+ - name: JAVA_OPTS
+ value: '-Djava.util.logging.config.file=/var/jenkins_home/log.properties'
+ volumeMounts:
+ - name: jenkins-persistent-storage
+ mountPath: /var/jenkins_home
+ subPath: jenkins_home
+ volumes:
+ - name: jenkins-persistent-storage
+ persistentVolumeClaim:
+ claimName: {{ .Values.component.name }}-pvc
diff --git a/udc-helm/cicd/jenkins/templates/svc.yaml b/udc-helm/cicd/jenkins/templates/svc.yaml
new file mode 100644
index 000000000..f78d01854
--- /dev/null
+++ b/udc-helm/cicd/jenkins/templates/svc.yaml
@@ -0,0 +1,37 @@
+---
+apiVersion: v1
+kind: Service
+metadata:
+ name: {{ .Values.component.name }}-ui
+spec:
+ type: LoadBalancer
+ loadBalancerIP: {{ .Values.component.external.ip }}
+ selector:
+ heritage: {{ .Release.Service }}
+ release: {{ .Release.Name }}
+ chart: {{ .Chart.Name }}-{{ .Chart.Version }}
+ component: {{ .Values.component.name }}
+ ports:
+ - protocol: TCP
+ port: {{ .Values.component.external.port }}
+ targetPort: 8080
+ name: ui
+
+---
+apiVersion: v1
+kind: Service
+metadata:
+ name: {{ .Values.component.name }}-discovery
+spec:
+ type: LoadBalancer
+ loadBalancerIP: {{ .Values.component.external.ip }}
+ selector:
+ heritage: {{ .Release.Service }}
+ release: {{ .Release.Name }}
+ chart: {{ .Chart.Name }}-{{ .Chart.Version }}
+ component: {{ .Values.component.name }}
+ ports:
+ - protocol: TCP
+ port: 50000
+ targetPort: 50000
+ name: slaves
diff --git a/udc-helm/cicd/jenkins/templates/volume.yaml b/udc-helm/cicd/jenkins/templates/volume.yaml
new file mode 100644
index 000000000..e143f1d80
--- /dev/null
+++ b/udc-helm/cicd/jenkins/templates/volume.yaml
@@ -0,0 +1,37 @@
+---
+apiVersion: v1
+kind: PersistentVolume
+metadata:
+ name: {{ .Values.component.name }}-pv
+ labels:
+ heritage: {{ .Release.Service }}
+ release: {{ .Release.Name }}
+ chart: {{ .Chart.Name }}-{{ .Chart.Version }}
+ component: {{ .Values.component.name }}
+spec:
+ capacity:
+ storage: 15Gi
+ accessModes:
+ - ReadWriteMany
+ gcePersistentDisk:
+ pdName: {{ .Values.component.volume.name }}
+ fsType: ext4
+
+---
+apiVersion: v1
+kind: PersistentVolumeClaim
+metadata:
+ name: {{ .Values.component.name }}-pvc
+spec:
+ accessModes:
+ - ReadWriteMany
+ storageClassName: ""
+ resources:
+ requests:
+ storage: 15Gi
+ selector:
+ matchLabels:
+ heritage: {{ .Release.Service }}
+ release: {{ .Release.Name }}
+ chart: {{ .Chart.Name }}-{{ .Chart.Version }}
+ component: {{ .Values.component.name }}
diff --git a/udc-helm/cicd/jenkins/values.yaml b/udc-helm/cicd/jenkins/values.yaml
new file mode 100644
index 000000000..73b526147
--- /dev/null
+++ b/udc-helm/cicd/jenkins/values.yaml
@@ -0,0 +1,10 @@
+component:
+ name: jenkins
+ container:
+ name: udc-jenkins
+ image: jenkins/jenkins:lts
+ external:
+ ip: 104.199.74.83
+ port: 8080
+ volume:
+ name: udc-infra-jenkins-pd