# Copyright 2019 Google LLC # # Licensed under the the Apache License v2.0 with LLVM Exceptions (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at # # https://llvm.org/LICENSE.txt # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. --- apiVersion: v1 kind: Namespace metadata: name: jenkins labels: name: jenkins --- apiVersion: v1 kind: ServiceAccount metadata: name: default namespace: jenkins --- apiVersion: rbac.authorization.k8s.io/v1beta1 kind: ClusterRoleBinding metadata: name: jenkins-admin roleRef: apiGroup: rbac.authorization.k8s.io kind: ClusterRole name: cluster-admin subjects: - kind: ServiceAccount name: default namespace: jenkins --- apiVersion: v1 kind: PersistentVolume metadata: name: jenkins-home labels: failure-domain.beta.kubernetes.io/zone: us-central1-a spec: capacity: storage: 20Gi volumeMode: Filesystem accessModes: - ReadWriteOnce gcePersistentDisk: pdName: jenkins-home fsType: ext4 --- apiVersion: extensions/v1beta1 kind: Deployment metadata: name: jenkins namespace: jenkins spec: replicas: 1 template: metadata: labels: app: master spec: hostname: jenkins-master containers: - name: master image: jenkins/jenkins:2.190.3 ports: - containerPort: 8080 - containerPort: 50000 readinessProbe: httpGet: path: /login port: 8080 periodSeconds: 10 timeoutSeconds: 5 successThreshold: 2 failureThreshold: 5 env: - name: JAVA_OPTS value: '-Xmx1400m' volumeMounts: - mountPath: /var/jenkins_home name: jenkins-home resources: limits: cpu: "4" memory: 4000Mi requests: cpu: 500m memory: 2000Mi volumes: - name: jenkins-home gcePersistentDisk: pdName: jenkins-home fsType: ext4 nodeSelector: cloud.google.com/gke-nodepool: default-pool --- kind: Service apiVersion: v1 metadata: name: jenkins-ui namespace: jenkins spec: type: NodePort selector: app: master ports: - protocol: TCP port: 8080 targetPort: 8080 name: ui - protocol: TCP port: 50000 targetPort: 50000 name: agent --- apiVersion: v1 kind: PersistentVolume metadata: name: nfs-jenkins spec: capacity: storage: 10Gi accessModes: - ReadWriteMany nfs: server: nfs-service.results.svc.cluster.local path: "/exports" --- kind: PersistentVolumeClaim apiVersion: v1 metadata: name: nfs-jenkins namespace: jenkins spec: accessModes: - ReadWriteMany storageClassName: "" resources: requests: storage: 10Gi --- apiVersion: extensions/v1beta1 kind: Deployment metadata: name: agent-debian-testing-ssd namespace: jenkins spec: replicas: 2 template: metadata: labels: app: agent-debian-testing-ssd spec: containers: - name: agent-debian-testing-clang8 image: gcr.io/llvm-premerge-checks/agent-debian-testing-ssd ports: - containerPort: 22 resources: limits: cpu: 30 memory: 45Gi requests: cpu: 30 memory: 45Gi volumeMounts: - name: nfs-pvc mountPath: /mnt/nfs - name: ssd mountPath: /mnt/disks/ssd0 - mountPath: /github-ssh-key name: github-ssh-key volumes: - name: nfs-pvc persistentVolumeClaim: claimName: nfs-jenkins - name: ssd hostPath: # directory location on host path: /mnt/disks/ssd0 type: Directory - name: github-ssh-key secret: secretName: github-ssh-key nodeSelector: cloud.google.com/gke-nodepool: jenkins-agents