apiVersion: v1
kind: Template
metadata:
name: "peopleapi-template"
annotations:
description: "Demo People API"
iconClass: "icon-dotnet"
tags: "dotnet,core"
labels:
application: "peopleapi"
createdBy: "peopleapi-template"
objects:
- apiVersion: v1
kind: "ImageStream"
metadata:
name: "peopleapi"
- apiVersion: v1
kind: "ImageStream"
metadata:
name: "peopleapidb"
- apiVersion: v1
kind: "BuildConfig"
metadata:
name: "peopleapi-bc"
annotations:
description: "Defines how to build the People API webapi app."
labels:
app: peopleapi
namespace: peopleapi
spec:
completionDeadlineSeconds: 3600
env:
- name: "GIT_SSL_NO_VERIFY"
value: "true"
source:
type: "Git"
git:
ref: ${CONSUMER_GIT_BRANCH}
uri: ${CONSUMER_GIT_URL}
contextDir: "/"
strategy:
dockerStrategy:
dockerfilePath: Dockerfile
output:
to:
kind: "ImageStreamTag"
name: "peopleapi:latest"
- apiVersion: v1
kind: "BuildConfig"
metadata:
name: "peopleapidb-bc"
annotations:
description: "Defines how to build the People API database."
labels:
app: peopleapidb
namespace: peopleapi
spec:
completionDeadlineSeconds: 3600
env:
- name: "GIT_SSL_NO_VERIFY"
value: "true"
source:
type: "Git"
git:
ref: ${CONSUMER_GIT_BRANCH}
uri: ${CONSUMER_GIT_URL}
contextDir: "database"
strategy:
dockerStrategy:
dockerfilePath: Dockerfile
output:
to:
kind: "ImageStreamTag"
name: "peopleapidb:latest"
- apiVersion: v1
kind: "BuildConfig"
metadata:
name: "peopleapi-bc-pipeline"
spec:
completionDeadlineSeconds: 3600
source:
git:
ref: ${CONSUMER_GIT_BRANCH}
uri: ${CONSUMER_GIT_URL}
sourceSecret:
name: "peopleapi-source-control"
strategy:
jenkinsPipelineStrategy:
jenkinsfilePath: Jenkinsfile
- apiVersion: v1
kind: "Service"
metadata:
name: "peopleapi-svc"
annotations:
description: "Exposes and load balances the application pods"
spec:
ports:
- name: "peopleapi"
port: 8080
targetPort: 8080
selector:
name: "peopleapi"
- apiVersion: v1
kind: "Service"
metadata:
name: "peopleapidb-svc"
annotations:
description: "Exposes the application database"
spec:
ports:
- name: "peopleapidb"
port: 1433
targetPort: 1433
selector:
name: "peopleapidb"
- apiVersion: v1
kind: Route
metadata:
annotations:
openshift.io/host.generated: 'true'
labels:
app: peopleapi
name: peopleapi
namespace: peopleapi
spec:
to:
kind: Service
name: peopleapi-svc
weight: 100
wildcardPolicy: None
- apiVersion: v1
kind: "DeploymentConfig"
metadata:
name: "peopleapi-dc"
annotations:
description: "Handles deployment of the demo People API application"
generation: 2
labels:
app: peopleapi-template
application: peopleapi
createdBy: peopleapi-template
namespace: peopleapi
spec:
replicas: 1
selector:
name: peopleapi
strategy:
activeDeadlineSeconds: 21600
recreateParams:
timeoutSeconds: 600
resources: {}
type: Recreate
template:
metadata:
labels:
name: "peopleapi"
spec:
containers:
- name: peopleapi
env:
- name: ASPNETCORE_ENVIRONMENT
value: Development
- name: ASPNETCORE_URLS
value: 'http://*:8080'
- name: peopleapicontext
value: ${PEOPLEAPI_CONN_STRING}
image: 'peopleapi/peopleapi:latest'
imagePullPolicy: IfNotPresent
ports:
- containerPort: 8080
protocol: TCP
resources:
limits:
cpu: 750m
memory: 1Gi
requests:
cpu: 250m
memory: 350Mi
terminationMessagePath: /dev/termination-log
terminationMessagePolicy: File
dnsPolicy: ClusterFirst
restartPolicy: Always
schedulerName: default-scheduler
securityContext: {}
terminationGracePeriodSeconds: 30
test: false
triggers:
- type: "ConfigChange"
- type: "ImageChange"
imageChangeParams:
automatic: true
containerNames:
- "peopleapi"
from:
kind: "ImageStreamTag"
name: "peopleapi:latest"
- apiVersion: v1
kind: "DeploymentConfig"
metadata:
name: "peopleapidb-dc"
annotations:
description: "Handles deployment of the demo People API MSSQL Express Linux database"
generation: 2
labels:
app: peopleapi-template
application: peopleapi
createdBy: peopleapi-template
namespace: peopleapi
spec:
replicas: 1
selector:
name: peopleapidb
strategy:
activeDeadlineSeconds: 21600
recreateParams:
timeoutSeconds: 600
resources: {}
type: Recreate
template:
metadata:
labels:
name: "peopleapidb"
spec:
containers:
- name: peopleapidb
image: 'peopleapi/peopleapidb:latest'
imagePullPolicy: IfNotPresent
ports:
- containerPort: 1433
protocol: TCP
resources:
limits:
cpu: 500m
memory: 750Mi
requests:
cpu: 250m
memory: 250Mi
terminationMessagePath: /dev/termination-log
terminationMessagePolicy: File
volumeMounts:
- mountPath: /var/opt/mssql
name: mssql-data
dnsPolicy: ClusterFirst
restartPolicy: Always
schedulerName: default-scheduler
securityContext: {}
terminationGracePeriodSeconds: 30
volumes:
- name: mssql-data
persistentVolumeClaim:
claimName: mssql-peopleapidb-data
test: false
triggers:
- type: "ConfigChange"
- type: "ImageChange"
imageChangeParams:
automatic: true
containerNames:
- "peopleapidb"
from:
kind: "ImageStreamTag"
name: "peopleapidb:latest"
- apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: mssql-peopleapidb-data
spec:
accessModes:
- ReadWriteOnce
resources:
requests:
storage: ${MSSQL_VOLUME_CAPACITY}
- apiVersion: v1
kind: ConfigMap
metadata:
name: jenkins-agent-base
labels:
role: jenkins-slave
data:
base: |-
base
2147483647
0
jenkins
jnlp
docker.io/openshift/jenkins-slave-base-centos7
false
false
/tmp
${computer.jnlpmac} ${computer.name}
false
- apiVersion: v1
kind: ConfigMap
metadata:
name: jenkins-agent-dotnetcore21
labels:
role: jenkins-slave
data:
dotnetcore21: |-
dotnetcore21
2147483647
0
jenkins
jnlp
registry.access.redhat.com/dotnet/dotnet-21-jenkins-slave-rhel7
false
false
/tmp
${computer.jnlpmac} ${computer.name}
false
- apiVersion: v1
kind: ConfigMap
metadata:
name: jenkins-agent-sonar-dotnet
labels:
role: jenkins-slave
data:
dotnetcore21: |-
sonar-dotnet
2147483647
0
jenkins
jnlp
172.30.1.1:5000/openshift/jenkins-slave-sonarqube-dotnet
false
false
/tmp
${computer.jnlpmac} ${computer.name}
false
parameters:
- name: "CONSUMER_GIT_URL"
displayName: "Source Repository URL"
description: "The URL of the repository with your application source code"
value: "https://github.com/Cingulara/peopleapi-jenkins-auto-deploy.git"
required: true
- name: "CONSUMER_GIT_BRANCH"
displayName: "Source Repository Branch"
description: "The branch within the git repository with your application source code"
value: "develop"
required: true
- name: "PEOPLEAPI_CONN_STRING"
displayName: "Connection String for PeopleAPI"
description: "The database connection string for the peopleapidb database for this API"
value: "server=peopleapidb; user id=peopleAPI; password=myP@ssw0rd; initial catalog=peopleAPI;"
required: true
- name: MSSQL_VOLUME_CAPACITY
description: Volume space available for MSSQL
displayName: MSSQL Volume Capacity
required: true
value: 1Gi