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