Added tekton pipelines
This commit is contained in:
parent
24f184e4c5
commit
5a1e9fa22c
1104
tekton/1-Install/1-pipeline.yaml
Normal file
1104
tekton/1-Install/1-pipeline.yaml
Normal file
File diff suppressed because it is too large
Load Diff
705
tekton/1-Install/2-triggers.yaml
Normal file
705
tekton/1-Install/2-triggers.yaml
Normal file
@ -0,0 +1,705 @@
|
|||||||
|
# Copyright 2019 The Tekton Authors
|
||||||
|
#
|
||||||
|
# Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
# you may not use this file except in compliance with the License.
|
||||||
|
# You may obtain a copy of the License at
|
||||||
|
#
|
||||||
|
# http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
#
|
||||||
|
# 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: policy/v1beta1
|
||||||
|
kind: PodSecurityPolicy
|
||||||
|
metadata:
|
||||||
|
name: tekton-triggers
|
||||||
|
spec:
|
||||||
|
privileged: false
|
||||||
|
allowPrivilegeEscalation: false
|
||||||
|
volumes:
|
||||||
|
- 'emptyDir'
|
||||||
|
- 'configMap'
|
||||||
|
- 'secret'
|
||||||
|
hostNetwork: false
|
||||||
|
hostIPC: false
|
||||||
|
hostPID: false
|
||||||
|
runAsUser:
|
||||||
|
rule: 'RunAsAny'
|
||||||
|
seLinux:
|
||||||
|
rule: 'RunAsAny'
|
||||||
|
supplementalGroups:
|
||||||
|
rule: 'MustRunAs'
|
||||||
|
ranges:
|
||||||
|
- min: 1
|
||||||
|
max: 65535
|
||||||
|
fsGroup:
|
||||||
|
rule: 'MustRunAs'
|
||||||
|
ranges:
|
||||||
|
- min: 1
|
||||||
|
max: 65535
|
||||||
|
|
||||||
|
---
|
||||||
|
# Copyright 2019 The Tekton Authors
|
||||||
|
#
|
||||||
|
# Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
# you may not use this file except in compliance with the License.
|
||||||
|
# You may obtain a copy of the License at
|
||||||
|
#
|
||||||
|
# http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
#
|
||||||
|
# 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.
|
||||||
|
|
||||||
|
kind: ClusterRole
|
||||||
|
apiVersion: rbac.authorization.k8s.io/v1
|
||||||
|
metadata:
|
||||||
|
name: tekton-triggers-admin
|
||||||
|
rules:
|
||||||
|
- apiGroups: [""]
|
||||||
|
resources: ["configmaps", "secrets", "services"]
|
||||||
|
verbs: ["get", "list", "create", "update", "delete", "patch", "watch"]
|
||||||
|
- apiGroups: ["apps"]
|
||||||
|
resources: ["deployments", "deployments/finalizers"]
|
||||||
|
verbs: ["get", "list", "create", "update", "delete", "patch", "watch"]
|
||||||
|
- apiGroups: ["admissionregistration.k8s.io"]
|
||||||
|
resources: ["mutatingwebhookconfigurations", "validatingwebhookconfigurations"]
|
||||||
|
verbs: ["get", "list", "create", "update", "delete", "patch", "watch"]
|
||||||
|
- apiGroups: ["triggers.tekton.dev"]
|
||||||
|
resources: ["clustertriggerbindings", "eventlisteners", "triggerbindings", "triggertemplates",
|
||||||
|
"eventlisteners/finalizers"]
|
||||||
|
verbs: ["get", "list", "create", "update", "delete", "patch", "watch"]
|
||||||
|
- apiGroups: ["triggers.tekton.dev"]
|
||||||
|
resources: ["clustertriggerbindings/status", "eventlisteners/status", "triggerbindings/status",
|
||||||
|
"triggertemplates/status"]
|
||||||
|
verbs: ["get", "list", "create", "update", "delete", "patch", "watch"]
|
||||||
|
- apiGroups: ["policy"]
|
||||||
|
resources: ["podsecuritypolicies"]
|
||||||
|
resourceNames: ["tekton-triggers"]
|
||||||
|
verbs: ["use"]
|
||||||
|
|
||||||
|
---
|
||||||
|
# Copyright 2019 The Tekton Authors
|
||||||
|
#
|
||||||
|
# Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
# you may not use this file except in compliance with the License.
|
||||||
|
# You may obtain a copy of the License at
|
||||||
|
#
|
||||||
|
# http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
#
|
||||||
|
# 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: ServiceAccount
|
||||||
|
metadata:
|
||||||
|
name: tekton-triggers-controller
|
||||||
|
namespace: tekton-pipelines
|
||||||
|
|
||||||
|
---
|
||||||
|
# Copyright 2019 The Tekton Authors
|
||||||
|
#
|
||||||
|
# Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
# you may not use this file except in compliance with the License.
|
||||||
|
# You may obtain a copy of the License at
|
||||||
|
#
|
||||||
|
# http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
#
|
||||||
|
# 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: rbac.authorization.k8s.io/v1beta1
|
||||||
|
kind: ClusterRoleBinding
|
||||||
|
metadata:
|
||||||
|
name: tekton-triggers-controller-admin
|
||||||
|
subjects:
|
||||||
|
- kind: ServiceAccount
|
||||||
|
name: tekton-triggers-controller
|
||||||
|
namespace: tekton-pipelines
|
||||||
|
roleRef:
|
||||||
|
kind: ClusterRole
|
||||||
|
name: tekton-triggers-admin
|
||||||
|
apiGroup: rbac.authorization.k8s.io
|
||||||
|
|
||||||
|
---
|
||||||
|
# Copyright 2019 The Tekton Authors
|
||||||
|
#
|
||||||
|
# Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
# you may not use this file except in compliance with the License.
|
||||||
|
# You may obtain a copy of the License at
|
||||||
|
#
|
||||||
|
# https://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
#
|
||||||
|
# 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: apiextensions.k8s.io/v1beta1
|
||||||
|
kind: CustomResourceDefinition
|
||||||
|
metadata:
|
||||||
|
name: clustertriggerbindings.triggers.tekton.dev
|
||||||
|
spec:
|
||||||
|
group: triggers.tekton.dev
|
||||||
|
scope: Cluster
|
||||||
|
versions:
|
||||||
|
- name: v1alpha1
|
||||||
|
served: true
|
||||||
|
storage: true
|
||||||
|
names:
|
||||||
|
kind: ClusterTriggerBinding
|
||||||
|
plural: clustertriggerbindings
|
||||||
|
singular: clustertriggerbinding
|
||||||
|
shortNames:
|
||||||
|
- ctb
|
||||||
|
categories:
|
||||||
|
- tekton
|
||||||
|
- tekton-triggers
|
||||||
|
subresources:
|
||||||
|
status: {}
|
||||||
|
version: v1alpha1
|
||||||
|
|
||||||
|
---
|
||||||
|
# Copyright 2019 The Tekton Authors
|
||||||
|
#
|
||||||
|
# Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
# you may not use this file except in compliance with the License.
|
||||||
|
# You may obtain a copy of the License at
|
||||||
|
#
|
||||||
|
# https://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
#
|
||||||
|
# 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: apiextensions.k8s.io/v1beta1
|
||||||
|
kind: CustomResourceDefinition
|
||||||
|
metadata:
|
||||||
|
name: eventlisteners.triggers.tekton.dev
|
||||||
|
spec:
|
||||||
|
group: triggers.tekton.dev
|
||||||
|
scope: Namespaced
|
||||||
|
versions:
|
||||||
|
- name: v1alpha1
|
||||||
|
served: true
|
||||||
|
storage: true
|
||||||
|
names:
|
||||||
|
kind: EventListener
|
||||||
|
plural: eventlisteners
|
||||||
|
singular: eventlistener
|
||||||
|
shortNames:
|
||||||
|
- el
|
||||||
|
categories:
|
||||||
|
- tekton
|
||||||
|
- tekton-triggers
|
||||||
|
# Opt into the status subresource so metadata.generation
|
||||||
|
# starts to increment
|
||||||
|
subresources:
|
||||||
|
status: {}
|
||||||
|
version: v1alpha1
|
||||||
|
|
||||||
|
---
|
||||||
|
# Copyright 2019 The Tekton Authors
|
||||||
|
#
|
||||||
|
# Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
# you may not use this file except in compliance with the License.
|
||||||
|
# You may obtain a copy of the License at
|
||||||
|
#
|
||||||
|
# https://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
#
|
||||||
|
# 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: apiextensions.k8s.io/v1beta1
|
||||||
|
kind: CustomResourceDefinition
|
||||||
|
metadata:
|
||||||
|
name: triggerbindings.triggers.tekton.dev
|
||||||
|
spec:
|
||||||
|
group: triggers.tekton.dev
|
||||||
|
scope: Namespaced
|
||||||
|
versions:
|
||||||
|
- name: v1alpha1
|
||||||
|
served: true
|
||||||
|
storage: true
|
||||||
|
names:
|
||||||
|
kind: TriggerBinding
|
||||||
|
plural: triggerbindings
|
||||||
|
singular: triggerbinding
|
||||||
|
shortNames:
|
||||||
|
- tb
|
||||||
|
categories:
|
||||||
|
- tekton
|
||||||
|
- tekton-triggers
|
||||||
|
# Opt into the status subresource so metadata.generation
|
||||||
|
# starts to increment
|
||||||
|
subresources:
|
||||||
|
status: {}
|
||||||
|
version: v1alpha1
|
||||||
|
|
||||||
|
---
|
||||||
|
# Copyright 2019 The Tekton Authors
|
||||||
|
#
|
||||||
|
# Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
# you may not use this file except in compliance with the License.
|
||||||
|
# You may obtain a copy of the License at
|
||||||
|
#
|
||||||
|
# https://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
#
|
||||||
|
# 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: apiextensions.k8s.io/v1beta1
|
||||||
|
kind: CustomResourceDefinition
|
||||||
|
metadata:
|
||||||
|
name: triggertemplates.triggers.tekton.dev
|
||||||
|
spec:
|
||||||
|
group: triggers.tekton.dev
|
||||||
|
scope: Namespaced
|
||||||
|
versions:
|
||||||
|
- name: v1alpha1
|
||||||
|
served: true
|
||||||
|
storage: true
|
||||||
|
names:
|
||||||
|
kind: TriggerTemplate
|
||||||
|
plural: triggertemplates
|
||||||
|
singular: triggertemplate
|
||||||
|
shortNames:
|
||||||
|
- tt
|
||||||
|
categories:
|
||||||
|
- tekton
|
||||||
|
- tekton-triggers
|
||||||
|
# Opt into the status subresource so metadata.generation
|
||||||
|
# starts to increment
|
||||||
|
subresources:
|
||||||
|
status: {}
|
||||||
|
version: v1alpha1
|
||||||
|
|
||||||
|
---
|
||||||
|
# Copyright 2020 The Tekton Authors
|
||||||
|
#
|
||||||
|
# Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
# you may not use this file except in compliance with the License.
|
||||||
|
# You may obtain a copy of the License at
|
||||||
|
#
|
||||||
|
# https://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
#
|
||||||
|
# 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: Secret
|
||||||
|
metadata:
|
||||||
|
name: triggers-webhook-certs
|
||||||
|
namespace: tekton-pipelines
|
||||||
|
labels:
|
||||||
|
triggers.tekton.dev/release: devel
|
||||||
|
# The data is populated at install time.
|
||||||
|
---
|
||||||
|
apiVersion: admissionregistration.k8s.io/v1beta1
|
||||||
|
kind: ValidatingWebhookConfiguration
|
||||||
|
metadata:
|
||||||
|
name: validation.webhook.triggers.tekton.dev
|
||||||
|
labels:
|
||||||
|
triggers.tekton.dev/release: devel
|
||||||
|
webhooks:
|
||||||
|
- admissionReviewVersions:
|
||||||
|
- v1beta1
|
||||||
|
clientConfig:
|
||||||
|
service:
|
||||||
|
name: tekton-triggers-webhook
|
||||||
|
namespace: tekton-pipelines
|
||||||
|
failurePolicy: Fail
|
||||||
|
sideEffects: None
|
||||||
|
name: validation.webhook.triggers.tekton.dev
|
||||||
|
---
|
||||||
|
apiVersion: admissionregistration.k8s.io/v1beta1
|
||||||
|
kind: MutatingWebhookConfiguration
|
||||||
|
metadata:
|
||||||
|
name: webhook.triggers.tekton.dev
|
||||||
|
labels:
|
||||||
|
triggers.tekton.dev/release: devel
|
||||||
|
webhooks:
|
||||||
|
- admissionReviewVersions:
|
||||||
|
- v1beta1
|
||||||
|
clientConfig:
|
||||||
|
service:
|
||||||
|
name: tekton-triggers-webhook
|
||||||
|
namespace: tekton-pipelines
|
||||||
|
failurePolicy: Fail
|
||||||
|
sideEffects: None
|
||||||
|
name: webhook.triggers.tekton.dev
|
||||||
|
---
|
||||||
|
apiVersion: admissionregistration.k8s.io/v1beta1
|
||||||
|
kind: ValidatingWebhookConfiguration
|
||||||
|
metadata:
|
||||||
|
name: config.webhook.triggers.tekton.dev
|
||||||
|
labels:
|
||||||
|
triggers.tekton.dev/release: devel
|
||||||
|
webhooks:
|
||||||
|
- admissionReviewVersions:
|
||||||
|
- v1beta1
|
||||||
|
clientConfig:
|
||||||
|
service:
|
||||||
|
name: tekton-triggers-webhook
|
||||||
|
namespace: tekton-pipelines
|
||||||
|
failurePolicy: Fail
|
||||||
|
sideEffects: None
|
||||||
|
name: config.webhook.triggers.tekton.dev
|
||||||
|
namespaceSelector:
|
||||||
|
matchExpressions:
|
||||||
|
- key: triggers.tekton.dev/release
|
||||||
|
operator: Exists
|
||||||
|
|
||||||
|
---
|
||||||
|
apiVersion: rbac.authorization.k8s.io/v1
|
||||||
|
kind: ClusterRole
|
||||||
|
metadata:
|
||||||
|
name: tekton-triggers-aggregate-edit
|
||||||
|
labels:
|
||||||
|
rbac.authorization.k8s.io/aggregate-to-edit: "true"
|
||||||
|
rbac.authorization.k8s.io/aggregate-to-admin: "true"
|
||||||
|
rules:
|
||||||
|
- apiGroups:
|
||||||
|
- tekton.dev
|
||||||
|
resources:
|
||||||
|
- clustertriggerbindings
|
||||||
|
- eventlisteners
|
||||||
|
- triggerbindings
|
||||||
|
- triggertemplates
|
||||||
|
verbs:
|
||||||
|
- create
|
||||||
|
- delete
|
||||||
|
- deletecollection
|
||||||
|
- get
|
||||||
|
- list
|
||||||
|
- patch
|
||||||
|
- update
|
||||||
|
- watch
|
||||||
|
|
||||||
|
---
|
||||||
|
apiVersion: rbac.authorization.k8s.io/v1
|
||||||
|
kind: ClusterRole
|
||||||
|
metadata:
|
||||||
|
name: tekton-triggers-aggregate-view
|
||||||
|
labels:
|
||||||
|
rbac.authorization.k8s.io/aggregate-to-view: "true"
|
||||||
|
rules:
|
||||||
|
- apiGroups:
|
||||||
|
- tekton.dev
|
||||||
|
resources:
|
||||||
|
- clustertriggerbindings
|
||||||
|
- eventlisteners
|
||||||
|
- triggerbindings
|
||||||
|
- triggertemplates
|
||||||
|
verbs:
|
||||||
|
- get
|
||||||
|
- list
|
||||||
|
- watch
|
||||||
|
|
||||||
|
---
|
||||||
|
# Copyright 2019 Tekton Authors LLC
|
||||||
|
#
|
||||||
|
# Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
# you may not use this file except in compliance with the License.
|
||||||
|
# You may obtain a copy of the License at
|
||||||
|
#
|
||||||
|
# https://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
#
|
||||||
|
# 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: ConfigMap
|
||||||
|
metadata:
|
||||||
|
name: config-logging-triggers
|
||||||
|
namespace: tekton-pipelines
|
||||||
|
data:
|
||||||
|
# Common configuration for all knative codebase
|
||||||
|
zap-logger-config: |
|
||||||
|
{
|
||||||
|
"level": "info",
|
||||||
|
"development": false,
|
||||||
|
"sampling": {
|
||||||
|
"initial": 100,
|
||||||
|
"thereafter": 100
|
||||||
|
},
|
||||||
|
"outputPaths": ["stdout"],
|
||||||
|
"errorOutputPaths": ["stderr"],
|
||||||
|
"encoding": "json",
|
||||||
|
"encoderConfig": {
|
||||||
|
"timeKey": "",
|
||||||
|
"levelKey": "level",
|
||||||
|
"nameKey": "logger",
|
||||||
|
"callerKey": "caller",
|
||||||
|
"messageKey": "msg",
|
||||||
|
"stacktraceKey": "stacktrace",
|
||||||
|
"lineEnding": "",
|
||||||
|
"levelEncoder": "",
|
||||||
|
"timeEncoder": "",
|
||||||
|
"durationEncoder": "",
|
||||||
|
"callerEncoder": ""
|
||||||
|
}
|
||||||
|
}
|
||||||
|
# Log level overrides
|
||||||
|
loglevel.controller: "info"
|
||||||
|
loglevel.webhook: "info"
|
||||||
|
loglevel.eventlistener: "info"
|
||||||
|
|
||||||
|
---
|
||||||
|
# Copyright 2019 The Tekton Authors
|
||||||
|
#
|
||||||
|
# Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
# you may not use this file except in compliance with the License.
|
||||||
|
# You may obtain a copy of the License at
|
||||||
|
#
|
||||||
|
# https://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
#
|
||||||
|
# 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: ConfigMap
|
||||||
|
metadata:
|
||||||
|
name: config-observability-triggers
|
||||||
|
namespace: tekton-pipelines
|
||||||
|
data:
|
||||||
|
_example: |
|
||||||
|
################################
|
||||||
|
# #
|
||||||
|
# EXAMPLE CONFIGURATION #
|
||||||
|
# #
|
||||||
|
################################
|
||||||
|
|
||||||
|
# This block is not actually functional configuration,
|
||||||
|
# but serves to illustrate the available configuration
|
||||||
|
# options and document them in a way that is accessible
|
||||||
|
# to users that `kubectl edit` this config map.
|
||||||
|
#
|
||||||
|
# These sample configuration options may be copied out of
|
||||||
|
# this example block and unindented to be in the data block
|
||||||
|
# to actually change the configuration.
|
||||||
|
|
||||||
|
# metrics.backend-destination field specifies the system metrics destination.
|
||||||
|
# It supports either prometheus (the default) or stackdriver.
|
||||||
|
# Note: Using stackdriver will incur additional charges
|
||||||
|
metrics.backend-destination: prometheus
|
||||||
|
|
||||||
|
# metrics.stackdriver-project-id field specifies the stackdriver project ID. This
|
||||||
|
# field is optional. When running on GCE, application default credentials will be
|
||||||
|
# used if this field is not provided.
|
||||||
|
metrics.stackdriver-project-id: "<your stackdriver project id>"
|
||||||
|
|
||||||
|
# metrics.allow-stackdriver-custom-metrics indicates whether it is allowed to send metrics to
|
||||||
|
# Stackdriver using "global" resource type and custom metric type if the
|
||||||
|
# metrics are not supported by "knative_revision" resource type. Setting this
|
||||||
|
# flag to "true" could cause extra Stackdriver charge.
|
||||||
|
# If metrics.backend-destination is not Stackdriver, this is ignored.
|
||||||
|
metrics.allow-stackdriver-custom-metrics: "false"
|
||||||
|
|
||||||
|
---
|
||||||
|
# Copyright 2019 Tekton Authors LLC
|
||||||
|
#
|
||||||
|
# Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
# you may not use this file except in compliance with the License.
|
||||||
|
# You may obtain a copy of the License at
|
||||||
|
#
|
||||||
|
# https://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
#
|
||||||
|
# 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: Service
|
||||||
|
metadata:
|
||||||
|
labels:
|
||||||
|
app: tekton-triggers-controller
|
||||||
|
version: "v0.4.0"
|
||||||
|
triggers.tekton.dev/release: "v0.4.0"
|
||||||
|
name: tekton-triggers-controller
|
||||||
|
namespace: tekton-pipelines
|
||||||
|
spec:
|
||||||
|
ports:
|
||||||
|
- name: http-metrics
|
||||||
|
port: 9090
|
||||||
|
protocol: TCP
|
||||||
|
targetPort: 9090
|
||||||
|
selector:
|
||||||
|
app: tekton-triggers-controller
|
||||||
|
|
||||||
|
---
|
||||||
|
# Copyright 2019 The Tekton Authors
|
||||||
|
#
|
||||||
|
# Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
# you may not use this file except in compliance with the License.
|
||||||
|
# You may obtain a copy of the License at
|
||||||
|
#
|
||||||
|
# http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
#
|
||||||
|
# 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: apps/v1
|
||||||
|
kind: Deployment
|
||||||
|
metadata:
|
||||||
|
name: tekton-triggers-controller
|
||||||
|
namespace: tekton-pipelines
|
||||||
|
labels:
|
||||||
|
app.kubernetes.io/name: tekton-triggers
|
||||||
|
app.kubernetes.io/component: controller
|
||||||
|
# tekton.dev/release value replaced with inputs.params.versionTag in triggers/tekton/publish.yaml
|
||||||
|
triggers.tekton.dev/release: "v0.4.0"
|
||||||
|
spec:
|
||||||
|
replicas: 1
|
||||||
|
selector:
|
||||||
|
matchLabels:
|
||||||
|
app: tekton-triggers-controller
|
||||||
|
template:
|
||||||
|
metadata:
|
||||||
|
annotations:
|
||||||
|
cluster-autoscaler.kubernetes.io/safe-to-evict: "false"
|
||||||
|
labels:
|
||||||
|
app: tekton-triggers-controller
|
||||||
|
triggers.tekton.dev/release: "v0.4.0"
|
||||||
|
# version value replaced with inputs.params.versionTag in triggers/tekton/publish.yaml
|
||||||
|
version: "v0.4.0"
|
||||||
|
spec:
|
||||||
|
serviceAccountName: tekton-triggers-controller
|
||||||
|
containers:
|
||||||
|
- name: tekton-triggers-controller
|
||||||
|
image: gcr.io/tekton-releases/github.com/tektoncd/triggers/cmd/controller@sha256:bf3517ddccace756e39cee0f0012bbe879c6b28d962a1c904a415e7c60ce5bc2
|
||||||
|
args: ["-logtostderr", "-stderrthreshold", "INFO", "-el-image", "gcr.io/tekton-releases/github.com/tektoncd/triggers/cmd/eventlistenersink@sha256:76c208ec1d73d9733dcaf850240e1b3990e5977709a03c2bd98ad5b20fab9867",
|
||||||
|
"-el-port", "8080", "-period-seconds", "10", "-failure-threshold", "1"]
|
||||||
|
env:
|
||||||
|
- name: SYSTEM_NAMESPACE
|
||||||
|
valueFrom:
|
||||||
|
fieldRef:
|
||||||
|
fieldPath: metadata.namespace
|
||||||
|
- name: CONFIG_LOGGING_NAME
|
||||||
|
value: config-logging-triggers
|
||||||
|
- name: CONFIG_OBSERVABILITY_NAME
|
||||||
|
value: config-observability-triggers
|
||||||
|
- name: METRICS_DOMAIN
|
||||||
|
value: tekton.dev/triggers
|
||||||
|
|
||||||
|
---
|
||||||
|
apiVersion: v1
|
||||||
|
kind: Service
|
||||||
|
metadata:
|
||||||
|
labels:
|
||||||
|
app: tekton-triggers-webhook
|
||||||
|
version: "v0.4.0"
|
||||||
|
triggers.tekton.dev/release: "v0.4.0"
|
||||||
|
name: tekton-triggers-webhook
|
||||||
|
namespace: tekton-pipelines
|
||||||
|
spec:
|
||||||
|
ports:
|
||||||
|
- name: https-webhook
|
||||||
|
port: 443
|
||||||
|
targetPort: 8443
|
||||||
|
selector:
|
||||||
|
app: tekton-triggers-webhook
|
||||||
|
|
||||||
|
---
|
||||||
|
# Copyright 2019 The Tekton Authors
|
||||||
|
#
|
||||||
|
# Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
# you may not use this file except in compliance with the License.
|
||||||
|
# You may obtain a copy of the License at
|
||||||
|
#
|
||||||
|
# https://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
#
|
||||||
|
# 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: apps/v1
|
||||||
|
kind: Deployment
|
||||||
|
metadata:
|
||||||
|
name: tekton-triggers-webhook
|
||||||
|
namespace: tekton-pipelines
|
||||||
|
labels:
|
||||||
|
app.kubernetes.io/name: tekton-triggers
|
||||||
|
app.kubernetes.io/component: webhook-controller
|
||||||
|
# tekton.dev/release value replaced with inputs.params.versionTag in triggers/tekton/publish.yaml
|
||||||
|
triggers.tekton.dev/release: "v0.4.0"
|
||||||
|
spec:
|
||||||
|
replicas: 1
|
||||||
|
selector:
|
||||||
|
matchLabels:
|
||||||
|
app: tekton-triggers-webhook
|
||||||
|
template:
|
||||||
|
metadata:
|
||||||
|
annotations:
|
||||||
|
cluster-autoscaler.kubernetes.io/safe-to-evict: "false"
|
||||||
|
labels:
|
||||||
|
app: tekton-triggers-webhook
|
||||||
|
triggers.tekton.dev/release: "v0.4.0"
|
||||||
|
# version value replaced with inputs.params.versionTag in triggers/tekton/publish.yaml
|
||||||
|
version: "v0.4.0"
|
||||||
|
role: webhook
|
||||||
|
app.kubernetes.io/name: tekton-triggers
|
||||||
|
app.kubernetes.io/component: webhook-controller
|
||||||
|
spec:
|
||||||
|
serviceAccountName: tekton-triggers-controller
|
||||||
|
containers:
|
||||||
|
- name: webhook
|
||||||
|
# This is the Go import path for the binary that is containerized
|
||||||
|
# and substituted here.
|
||||||
|
image: gcr.io/tekton-releases/github.com/tektoncd/triggers/cmd/webhook@sha256:d7f1526a9294e671c500f0071b61e050262fb27fb633b54d764a556969855764
|
||||||
|
env:
|
||||||
|
- name: SYSTEM_NAMESPACE
|
||||||
|
valueFrom:
|
||||||
|
fieldRef:
|
||||||
|
fieldPath: metadata.namespace
|
||||||
|
- name: CONFIG_LOGGING_NAME
|
||||||
|
value: config-logging-triggers
|
||||||
|
- name: WEBHOOK_SERVICE_NAME
|
||||||
|
value: tekton-triggers-webhook
|
||||||
|
- name: METRICS_DOMAIN
|
||||||
|
value: tekton.dev/triggers
|
||||||
|
ports:
|
||||||
|
- name: metrics
|
||||||
|
containerPort: 9090
|
||||||
|
- name: profiling
|
||||||
|
containerPort: 8008
|
||||||
|
- name: https-webhook
|
||||||
|
containerPort: 8443
|
||||||
|
|
||||||
|
---
|
656
tekton/1-Install/3-webhooks.yaml
Normal file
656
tekton/1-Install/3-webhooks.yaml
Normal file
@ -0,0 +1,656 @@
|
|||||||
|
apiVersion: v1
|
||||||
|
kind: ServiceAccount
|
||||||
|
metadata:
|
||||||
|
labels:
|
||||||
|
app: tekton-webhooks-extension
|
||||||
|
name: tekton-webhooks-extension
|
||||||
|
namespace: tekton-pipelines
|
||||||
|
---
|
||||||
|
apiVersion: v1
|
||||||
|
kind: ServiceAccount
|
||||||
|
metadata:
|
||||||
|
labels:
|
||||||
|
app: tekton-webhooks-extension
|
||||||
|
name: tekton-webhooks-extension-eventlistener
|
||||||
|
namespace: tekton-pipelines
|
||||||
|
---
|
||||||
|
apiVersion: rbac.authorization.k8s.io/v1
|
||||||
|
kind: Role
|
||||||
|
metadata:
|
||||||
|
name: tekton-webhooks-extension-minimal
|
||||||
|
namespace: tekton-pipelines
|
||||||
|
rules:
|
||||||
|
- apiGroups:
|
||||||
|
- extensions
|
||||||
|
resources:
|
||||||
|
- ingresses
|
||||||
|
- ingresses/status
|
||||||
|
verbs:
|
||||||
|
- delete
|
||||||
|
- create
|
||||||
|
- patch
|
||||||
|
- get
|
||||||
|
- list
|
||||||
|
- update
|
||||||
|
- watch
|
||||||
|
- apiGroups:
|
||||||
|
- ""
|
||||||
|
resources:
|
||||||
|
- pods
|
||||||
|
- services
|
||||||
|
verbs:
|
||||||
|
- get
|
||||||
|
- list
|
||||||
|
- create
|
||||||
|
- update
|
||||||
|
- delete
|
||||||
|
- patch
|
||||||
|
- watch
|
||||||
|
- apiGroups:
|
||||||
|
- ""
|
||||||
|
resources:
|
||||||
|
- pods/log
|
||||||
|
- namespaces
|
||||||
|
- events
|
||||||
|
verbs:
|
||||||
|
- get
|
||||||
|
- list
|
||||||
|
- watch
|
||||||
|
- apiGroups:
|
||||||
|
- ""
|
||||||
|
resources:
|
||||||
|
- secrets
|
||||||
|
- configmaps
|
||||||
|
verbs:
|
||||||
|
- get
|
||||||
|
- list
|
||||||
|
- create
|
||||||
|
- delete
|
||||||
|
- update
|
||||||
|
- watch
|
||||||
|
- apiGroups:
|
||||||
|
- extensions
|
||||||
|
- apps
|
||||||
|
resources:
|
||||||
|
- deployments
|
||||||
|
verbs:
|
||||||
|
- get
|
||||||
|
- list
|
||||||
|
- create
|
||||||
|
- update
|
||||||
|
- delete
|
||||||
|
- patch
|
||||||
|
- watch
|
||||||
|
- apiGroups:
|
||||||
|
- tekton.dev
|
||||||
|
resources:
|
||||||
|
- tasks
|
||||||
|
- clustertasks
|
||||||
|
- taskruns
|
||||||
|
- pipelines
|
||||||
|
- pipelineruns
|
||||||
|
- pipelineresources
|
||||||
|
- conditions
|
||||||
|
verbs:
|
||||||
|
- get
|
||||||
|
- list
|
||||||
|
- create
|
||||||
|
- update
|
||||||
|
- delete
|
||||||
|
- patch
|
||||||
|
- watch
|
||||||
|
- apiGroups:
|
||||||
|
- triggers.tekton.dev
|
||||||
|
resources:
|
||||||
|
- eventlisteners
|
||||||
|
- triggerbindings
|
||||||
|
- triggertemplates
|
||||||
|
verbs:
|
||||||
|
- get
|
||||||
|
- list
|
||||||
|
- create
|
||||||
|
- update
|
||||||
|
- delete
|
||||||
|
- patch
|
||||||
|
- watch
|
||||||
|
- apiGroups:
|
||||||
|
- tekton.dev
|
||||||
|
resources:
|
||||||
|
- taskruns/finalizers
|
||||||
|
- pipelineruns/finalizers
|
||||||
|
- tasks/status
|
||||||
|
- clustertasks/status
|
||||||
|
- taskruns/status
|
||||||
|
- pipelines/status
|
||||||
|
- pipelineruns/status
|
||||||
|
verbs:
|
||||||
|
- get
|
||||||
|
- list
|
||||||
|
- create
|
||||||
|
- update
|
||||||
|
- delete
|
||||||
|
- patch
|
||||||
|
- watch
|
||||||
|
---
|
||||||
|
apiVersion: rbac.authorization.k8s.io/v1
|
||||||
|
kind: ClusterRole
|
||||||
|
metadata:
|
||||||
|
name: tekton-triggers-minimal
|
||||||
|
rules:
|
||||||
|
- apiGroups:
|
||||||
|
- tekton.dev
|
||||||
|
resources:
|
||||||
|
- tasks
|
||||||
|
- taskruns
|
||||||
|
verbs:
|
||||||
|
- get
|
||||||
|
- apiGroups:
|
||||||
|
- triggers.tekton.dev
|
||||||
|
resources:
|
||||||
|
- triggerbindings
|
||||||
|
- triggertemplates
|
||||||
|
- eventlisteners
|
||||||
|
verbs:
|
||||||
|
- get
|
||||||
|
- apiGroups:
|
||||||
|
- tekton.dev
|
||||||
|
resources:
|
||||||
|
- pipelineruns
|
||||||
|
- pipelineresources
|
||||||
|
- taskruns
|
||||||
|
verbs:
|
||||||
|
- create
|
||||||
|
- apiGroups:
|
||||||
|
- ""
|
||||||
|
resources:
|
||||||
|
- configmaps
|
||||||
|
verbs:
|
||||||
|
- list
|
||||||
|
- get
|
||||||
|
- watch
|
||||||
|
---
|
||||||
|
apiVersion: rbac.authorization.k8s.io/v1
|
||||||
|
kind: ClusterRole
|
||||||
|
metadata:
|
||||||
|
name: tekton-webhooks-extension-minimal-cluster-powers
|
||||||
|
rules:
|
||||||
|
- apiGroups:
|
||||||
|
- ""
|
||||||
|
resources:
|
||||||
|
- serviceaccounts
|
||||||
|
verbs:
|
||||||
|
- get
|
||||||
|
- list
|
||||||
|
- watch
|
||||||
|
- apiGroups:
|
||||||
|
- tekton.dev
|
||||||
|
resources:
|
||||||
|
- pipelines
|
||||||
|
- pipelineruns
|
||||||
|
verbs:
|
||||||
|
- get
|
||||||
|
- list
|
||||||
|
- watch
|
||||||
|
- apiGroups:
|
||||||
|
- triggers.tekton.dev
|
||||||
|
resources:
|
||||||
|
- pipelines
|
||||||
|
- pipelineruns
|
||||||
|
- tasks
|
||||||
|
- taskruns
|
||||||
|
verbs:
|
||||||
|
- get
|
||||||
|
- list
|
||||||
|
- watch
|
||||||
|
---
|
||||||
|
apiVersion: rbac.authorization.k8s.io/v1
|
||||||
|
kind: RoleBinding
|
||||||
|
metadata:
|
||||||
|
name: tekton-webhooks-extension-minimal
|
||||||
|
namespace: tekton-pipelines
|
||||||
|
roleRef:
|
||||||
|
apiGroup: rbac.authorization.k8s.io
|
||||||
|
kind: Role
|
||||||
|
name: tekton-webhooks-extension-minimal
|
||||||
|
subjects:
|
||||||
|
- kind: ServiceAccount
|
||||||
|
name: tekton-webhooks-extension
|
||||||
|
namespace: tekton-pipelines
|
||||||
|
---
|
||||||
|
apiVersion: rbac.authorization.k8s.io/v1
|
||||||
|
kind: ClusterRoleBinding
|
||||||
|
metadata:
|
||||||
|
name: tekton-webhooks-extension-eventlistener-minimal
|
||||||
|
roleRef:
|
||||||
|
apiGroup: rbac.authorization.k8s.io
|
||||||
|
kind: ClusterRole
|
||||||
|
name: tekton-triggers-minimal
|
||||||
|
subjects:
|
||||||
|
- kind: ServiceAccount
|
||||||
|
name: tekton-webhooks-extension-eventlistener
|
||||||
|
namespace: tekton-pipelines
|
||||||
|
---
|
||||||
|
apiVersion: rbac.authorization.k8s.io/v1
|
||||||
|
kind: ClusterRoleBinding
|
||||||
|
metadata:
|
||||||
|
name: tekton-webhooks-extension-minimal-cluster-powers
|
||||||
|
roleRef:
|
||||||
|
apiGroup: rbac.authorization.k8s.io
|
||||||
|
kind: ClusterRole
|
||||||
|
name: tekton-webhooks-extension-minimal-cluster-powers
|
||||||
|
subjects:
|
||||||
|
- kind: ServiceAccount
|
||||||
|
name: tekton-webhooks-extension
|
||||||
|
namespace: tekton-pipelines
|
||||||
|
---
|
||||||
|
apiVersion: v1
|
||||||
|
kind: Service
|
||||||
|
metadata:
|
||||||
|
name: tekton-webhooks-extension-validator
|
||||||
|
namespace: tekton-pipelines
|
||||||
|
spec:
|
||||||
|
ports:
|
||||||
|
- port: 80
|
||||||
|
protocol: TCP
|
||||||
|
targetPort: 8080
|
||||||
|
selector:
|
||||||
|
app: tekton-webhooks-extension-validator
|
||||||
|
type: ClusterIP
|
||||||
|
---
|
||||||
|
apiVersion: v1
|
||||||
|
kind: Service
|
||||||
|
metadata:
|
||||||
|
annotations:
|
||||||
|
tekton-dashboard-bundle-location: web/extension.c591f714.js
|
||||||
|
tekton-dashboard-display-name: Webhooks
|
||||||
|
tekton-dashboard-endpoints: webhooks.web
|
||||||
|
labels:
|
||||||
|
app: webhooks-extension
|
||||||
|
tekton-dashboard-extension: "true"
|
||||||
|
name: webhooks-extension
|
||||||
|
namespace: tekton-pipelines
|
||||||
|
spec:
|
||||||
|
ports:
|
||||||
|
- port: 8080
|
||||||
|
targetPort: 8080
|
||||||
|
selector:
|
||||||
|
app: webhooks-extension
|
||||||
|
type: NodePort
|
||||||
|
---
|
||||||
|
apiVersion: apps/v1
|
||||||
|
kind: Deployment
|
||||||
|
metadata:
|
||||||
|
name: tekton-webhooks-extension-validator
|
||||||
|
namespace: tekton-pipelines
|
||||||
|
spec:
|
||||||
|
replicas: 1
|
||||||
|
selector:
|
||||||
|
matchLabels:
|
||||||
|
app: tekton-webhooks-extension-validator
|
||||||
|
template:
|
||||||
|
metadata:
|
||||||
|
labels:
|
||||||
|
app: tekton-webhooks-extension-validator
|
||||||
|
spec:
|
||||||
|
containers:
|
||||||
|
- env:
|
||||||
|
- name: INSTALLED_NAMESPACE
|
||||||
|
valueFrom:
|
||||||
|
fieldRef:
|
||||||
|
fieldPath: metadata.namespace
|
||||||
|
image: gcr.io/tekton-releases/github.com/tektoncd/experimental/webhooks-extension/cmd/interceptor@sha256:657d40a9116ef0b6f886f94fa7980755e3267dd34017f2fd9b713b63ddfc0d55
|
||||||
|
name: validate
|
||||||
|
serviceAccountName: tekton-webhooks-extension
|
||||||
|
---
|
||||||
|
apiVersion: apps/v1
|
||||||
|
kind: Deployment
|
||||||
|
metadata:
|
||||||
|
labels:
|
||||||
|
app: webhooks-extension
|
||||||
|
name: webhooks-extension
|
||||||
|
namespace: tekton-pipelines
|
||||||
|
spec:
|
||||||
|
replicas: 1
|
||||||
|
selector:
|
||||||
|
matchLabels:
|
||||||
|
app: webhooks-extension
|
||||||
|
template:
|
||||||
|
metadata:
|
||||||
|
labels:
|
||||||
|
app: webhooks-extension
|
||||||
|
spec:
|
||||||
|
containers:
|
||||||
|
- env:
|
||||||
|
- name: PORT
|
||||||
|
value: "8080"
|
||||||
|
- name: INSTALLED_NAMESPACE
|
||||||
|
valueFrom:
|
||||||
|
fieldRef:
|
||||||
|
fieldPath: metadata.namespace
|
||||||
|
- name: DOCKER_REGISTRY_LOCATION
|
||||||
|
value: DOCKER_REPO
|
||||||
|
- name: WEB_RESOURCES_DIR
|
||||||
|
value: web
|
||||||
|
- name: WEBHOOK_CALLBACK_URL
|
||||||
|
value: http://listener.IPADDRESS.nip.io
|
||||||
|
- name: SSL_VERIFICATION_ENABLED
|
||||||
|
value: "false"
|
||||||
|
- name: SERVICE_ACCOUNT
|
||||||
|
valueFrom:
|
||||||
|
fieldRef:
|
||||||
|
fieldPath: spec.serviceAccountName
|
||||||
|
image: gcr.io/tekton-releases/github.com/tektoncd/experimental/webhooks-extension/cmd/extension@sha256:e7bcffbd2db6b874dbb4b4e71fc0c089acf7ccb803df896d9592063b649ac292
|
||||||
|
imagePullPolicy: Always
|
||||||
|
livenessProbe:
|
||||||
|
httpGet:
|
||||||
|
path: /liveness
|
||||||
|
port: 8080
|
||||||
|
name: webhooks-extension
|
||||||
|
ports:
|
||||||
|
- containerPort: 8080
|
||||||
|
readinessProbe:
|
||||||
|
httpGet:
|
||||||
|
path: /readiness
|
||||||
|
port: 8080
|
||||||
|
serviceAccountName: tekton-webhooks-extension
|
||||||
|
---
|
||||||
|
apiVersion: tekton.dev/v1beta1
|
||||||
|
kind: Task
|
||||||
|
metadata:
|
||||||
|
name: monitor-task
|
||||||
|
namespace: tekton-pipelines
|
||||||
|
spec:
|
||||||
|
params:
|
||||||
|
- description: The statuses url
|
||||||
|
name: statusesurl
|
||||||
|
type: string
|
||||||
|
- default: Success
|
||||||
|
description: The text to use in the situation where a PipelineRun has succeeded.
|
||||||
|
name: commentsuccess
|
||||||
|
type: string
|
||||||
|
- default: Failed
|
||||||
|
description: The text to use in the situation where a PipelineRun has failed.
|
||||||
|
name: commentfailure
|
||||||
|
type: string
|
||||||
|
- default: Unknown
|
||||||
|
description: The text to use in the situation where a PipelineRun has timed out.
|
||||||
|
name: commenttimeout
|
||||||
|
type: string
|
||||||
|
- default: Missing
|
||||||
|
description: The text to use in the situation where a PipelineRun cannot be found.
|
||||||
|
name: commentmissing
|
||||||
|
type: string
|
||||||
|
- default: http://localhost:9097/
|
||||||
|
description: The URL to the PipelineRuns page of the dashboard
|
||||||
|
name: dashboard-url
|
||||||
|
type: string
|
||||||
|
- default: github
|
||||||
|
description: The Git provider ("github" or "gitlab")
|
||||||
|
name: provider
|
||||||
|
type: string
|
||||||
|
- description: The Git API URL for the repository
|
||||||
|
name: apiurl
|
||||||
|
type: string
|
||||||
|
- default: "false"
|
||||||
|
description: Whether or not to verify SSL Certificates from the git server ("true"
|
||||||
|
or "false")
|
||||||
|
name: insecure-skip-tls-verify
|
||||||
|
type: string
|
||||||
|
- description: The secret containing the access token to access the git server
|
||||||
|
name: secret
|
||||||
|
type: string
|
||||||
|
resources:
|
||||||
|
inputs:
|
||||||
|
- name: pull-request
|
||||||
|
type: pullRequest
|
||||||
|
outputs:
|
||||||
|
- name: pull-request
|
||||||
|
type: pullRequest
|
||||||
|
steps:
|
||||||
|
- args:
|
||||||
|
- -ce
|
||||||
|
- "set -e\ncat <<EOF | python\nimport time, os, json, requests, pprint, shutil,
|
||||||
|
distutils.util\nfrom kubernetes import client, config\ndef diff(li1, li2): \n
|
||||||
|
\ li_dif = [i for i in li1 + li2 if i not in li1 or i not in li2] \n return
|
||||||
|
li_dif\nconfig.load_incluster_config()\napi_instance = client.CustomObjectsApi(client.ApiClient(client.Configuration()))\ngitPRcontext
|
||||||
|
= \"Tekton\"\ngitPRurl = \"\" \nif not \"$URL\".startswith(\"http\"):\n pipelineRunURLPrefix
|
||||||
|
= \"http://\" + \"$URL\"\nelse:\n pipelineRunURLPrefix = \"$URL\" \nverifySSL
|
||||||
|
= not bool(distutils.util.strtobool(\"$SKIPSSLVERIFY\"))\nif \"$GITPROVIDER\"
|
||||||
|
== \"github\":\n statusurl = \"$STATUSES_URL\"\n pendingData = {\n \"state\":
|
||||||
|
\"pending\",\n \"description\": \"pipelines in progress\",\n \"target_url\":
|
||||||
|
pipelineRunURLPrefix + \"/#/pipelineruns\",\n \"context\": \"Tekton\"\n }\n
|
||||||
|
\ resp = requests.post(statusurl, json.dumps(pendingData), headers = {'Content-Type':
|
||||||
|
'application/json', 'Authorization': \"Token $GITTOKEN\"}, verify=verifySSL)\n
|
||||||
|
\ print(resp)\nif \"$GITPROVIDER\" == \"gitlab\":\n statusurl = \"$GITAPIURL\"
|
||||||
|
+ \"/\" + \"$STATUSES_URL\" + \"?state=pending&name=Tekton&target_url=\" + pipelineRunURLPrefix
|
||||||
|
+ \"/#/pipelineruns\"\n resp = requests.post(statusurl, headers = {'Authorization':
|
||||||
|
\"Bearer $GITTOKEN\"}, verify=verifySSL)\n print(resp)\nlabelToCheck = \"triggers.tekton.dev/triggers-eventid=$EVENTID\"\nrunsPassed
|
||||||
|
= []\nrunsFailed = []\nrunsIncomplete = []\nrunsMissing = []\nfailed = 0\ni
|
||||||
|
= range(180)\ninitial_runs = api_instance.list_cluster_custom_object(\"tekton.dev\",
|
||||||
|
\"v1beta1\", \"pipelineruns\", label_selector=labelToCheck)[\"items\"]\nfor
|
||||||
|
x in i:\n time.sleep( 10 )\n runsPassed = []\n runsFailed = []\n runsIncomplete
|
||||||
|
= []\n # To test this we need a webhook that will kick off two Pipelines\n
|
||||||
|
\ # We will then delete one PipelineRun and observe it is correctly picked
|
||||||
|
up as missing\n # This is easiest done by reopening an existing PullRequest\n
|
||||||
|
\ # It's important to delete the PipelineRun only after the monitor task is
|
||||||
|
already running because \n # the first thing it's going to do is figure out
|
||||||
|
the PipelineRuns to watch over\n failed = 0\n \n found_runs = api_instance.list_cluster_custom_object(\"tekton.dev\",
|
||||||
|
\"v1beta1\", \"pipelineruns\", label_selector=labelToCheck)[\"items\"]\n missingRuns
|
||||||
|
= diff(initial_runs, found_runs)\n if len(missingRuns) > 0:\n for missingRun
|
||||||
|
in missingRuns:\n pr = missingRun[\"metadata\"][\"name\"]\n namespace
|
||||||
|
= missingRun[\"metadata\"][\"namespace\"]\n pipeline = missingRun[\"spec\"][\"pipelineRef\"][\"name\"]\n
|
||||||
|
\ link = pipelineRunURLPrefix + \"/#/namespaces/\" + namespace + \"/pipelineruns/\"\n
|
||||||
|
\ data = \"[**$COMMENT_MISSING**](\" + link + \") | \" + pipeline + \"
|
||||||
|
| \" + pr + \" | \" + namespace\n if data not in runsMissing:\n #
|
||||||
|
Don't add duplicates. Fear not, once this run is found it'll be removed\n runsMissing.append(data)\n
|
||||||
|
\ if len(found_runs) > 0:\n for entry in found_runs:\n pr = entry[\"metadata\"][\"name\"]\n
|
||||||
|
\ namespace = entry[\"metadata\"][\"namespace\"]\n pipeline = entry[\"spec\"][\"pipelineRef\"][\"name\"]\n
|
||||||
|
\ link = pipelineRunURLPrefix + \"/#/namespaces/\" + namespace + \"/pipelineruns/\"
|
||||||
|
+ pr\n missingLink = pipelineRunURLPrefix + \"/#/namespaces/\" + namespace
|
||||||
|
+ \"/pipelineruns/\"\n missingDataEntry = \"[**$COMMENT_MISSING**](\"
|
||||||
|
+ missingLink + \") | \" + pipeline + \" | \" + pr + \" | \" + namespace\n if
|
||||||
|
missingDataEntry in runsMissing:\n runsMissing.remove(missingDataEntry)\n
|
||||||
|
\ print(\"Checking PipelineRun \" + pr + \" in namespace \" + namespace)\n
|
||||||
|
\ if entry[\"status\"][\"conditions\"][0][\"status\"] == u'True' and entry[\"status\"][\"conditions\"][0][\"type\"]
|
||||||
|
== u'Succeeded':\n print(\"Success - pipelinerun \" + pr + \" in namespace
|
||||||
|
\" + namespace)\n runsPassed.append(\"[**$COMMENT_SUCCESS**](\" + link
|
||||||
|
+ \") | \" + pipeline + \" | \" + pr + \" | \" + namespace)\n continue\n
|
||||||
|
\ if entry[\"status\"][\"conditions\"][0][\"status\"] == u'False' and
|
||||||
|
entry[\"status\"][\"conditions\"][0][\"type\"] == u'Succeeded':\n failed
|
||||||
|
=+ 1\n print(\"Failed - PipelineRun \" + pr + \" in namespace \" +
|
||||||
|
namespace)\n runsFailed.append(\"[**$COMMENT_FAILURE**](\" + link +
|
||||||
|
\") | \" + pipeline + \" | \" + pr + \" | \" + namespace)\n continue\n
|
||||||
|
\ link = pipelineRunURLPrefix + \"/#/namespaces/\" + namespace + \"/pipelineruns/\"
|
||||||
|
+ pr\n runsIncomplete.append(\"[**$COMMENT_TIMEOUT**](\" + link + \")
|
||||||
|
| \" + pipeline + \" | \" + pr + \" | \" + namespace)\n if len(runsIncomplete)
|
||||||
|
== 0:\n break\n else:\n break\ngitPRdescription = \"All pipelines
|
||||||
|
succeeded!\"\ngitPRcode = \"success\"\nif failed > 0:\n gitPRdescription =
|
||||||
|
str(failed) + \" pipeline(s) failed!\"\n gitPRcode = \"failure\"\nif len(runsMissing)
|
||||||
|
> 0:\n gitPRdescription = \"Pipeline(s) missing!\"\n gitPRcode = \"failure\"\nif
|
||||||
|
len(runsIncomplete) > 0:\n print(\"Some PipelineRuns had not completed when
|
||||||
|
the monitor reached its timeout\")\n gitPRdescription = \"timed out monitoring
|
||||||
|
PipelineRuns\"\n gitPRcode = \"error\"\n\nresults = runsPassed + runsFailed
|
||||||
|
+ runsIncomplete + runsMissing\n\nif (results == []):\n gitPRdescription =
|
||||||
|
\"No PipelineRuns were ever found for my PullRequest!\"\n gitPRcode = \"error\"\n
|
||||||
|
\ data = \"**$COMMENT_MISSING** | N/A | No PipelineRuns were ever detected,
|
||||||
|
failing the build | N/A\"\n runsMissing.append(data) \n \n results
|
||||||
|
= runsMissing\n\ncomment = (\"## Tekton Status Report \\n\\n\"\n \"Status
|
||||||
|
| Pipeline | PipelineRun | Namespace\\n\"\n \":----- | :------- |
|
||||||
|
:--------------- | :--------\\n\"\n ) + \"\\n\".join(results)\n\nshutil.copyfile(\"/workspace/pull-request/pr.json\",\"/workspace/output/pull-request/pr.json\")\n#
|
||||||
|
Preserve existing comments\nshutil.copytree(\"/workspace/pull-request/comments\",\"/workspace/output/pull-request/comments\")\nhandle
|
||||||
|
= open(\"/workspace/output/pull-request/comments/newcomment.json\", 'w')\nhandle.write(comment)\nhandle.close()\nif
|
||||||
|
not \"$URL\".startswith(\"http\"):\n detailsURL = \"http://\" + \"$URL\" +
|
||||||
|
\"/#/pipelineruns\"\nelse:\n detailsURL = \"$URL\" + \"/#/pipelineruns\"\nprint(\"Set
|
||||||
|
details url to \" + detailsURL)\nstatus = json.dumps(dict(Label=gitPRcontext,state=gitPRcode,Desc=gitPRdescription,Target=detailsURL))\nprint(\"Setting
|
||||||
|
status to \" + status)\nif not os.path.exists(\"/workspace/output/pull-request/status\"):\n
|
||||||
|
\ os.makedirs(\"/workspace/output/pull-request/status\")\nhandle = open(\"/workspace/output/pull-request/status/Tekton.json\",
|
||||||
|
'w')\nhandle.write(status)\nhandle.close()\nif not os.path.exists(\"/workspace/output/pull-request/labels\"):\n
|
||||||
|
\ shutil.copytree(\"/workspace/pull-request/labels\",\"/workspace/output/pull-request/labels\")\nshutil.copyfile(\"/workspace/pull-request/base.json\",\"/workspace/output/pull-request/base.json\")
|
||||||
|
\nshutil.copyfile(\"/workspace/pull-request/head.json\",\"/workspace/output/pull-request/head.json\")\nEOF\n"
|
||||||
|
command:
|
||||||
|
- /bin/bash
|
||||||
|
env:
|
||||||
|
- name: EVENTID
|
||||||
|
valueFrom:
|
||||||
|
fieldRef:
|
||||||
|
fieldPath: metadata.labels['triggers.tekton.dev/triggers-eventid']
|
||||||
|
- name: COMMENT_SUCCESS
|
||||||
|
value: $(inputs.params.commentsuccess)
|
||||||
|
- name: COMMENT_FAILURE
|
||||||
|
value: $(inputs.params.commentfailure)
|
||||||
|
- name: COMMENT_TIMEOUT
|
||||||
|
value: $(inputs.params.commenttimeout)
|
||||||
|
- name: COMMENT_MISSING
|
||||||
|
value: $(inputs.params.commentmissing)
|
||||||
|
- name: URL
|
||||||
|
value: $(inputs.params.dashboard-url)
|
||||||
|
- name: STATUSES_URL
|
||||||
|
value: $(inputs.params.statusesurl)
|
||||||
|
- name: GITPROVIDER
|
||||||
|
value: $(inputs.params.provider)
|
||||||
|
- name: GITAPIURL
|
||||||
|
value: $(inputs.params.apiurl)
|
||||||
|
- name: SKIPSSLVERIFY
|
||||||
|
value: $(inputs.params.insecure-skip-tls-verify)
|
||||||
|
- name: GITTOKEN
|
||||||
|
valueFrom:
|
||||||
|
secretKeyRef:
|
||||||
|
key: accessToken
|
||||||
|
name: $(inputs.params.secret)
|
||||||
|
image: maiwj/kubernetes-python-client@sha256:74a868a0dff5c8ada64472db3efd09d205d4f877d14d2d3226511adbb25cfea3
|
||||||
|
name: check
|
||||||
|
---
|
||||||
|
apiVersion: triggers.tekton.dev/v1alpha1
|
||||||
|
kind: TriggerBinding
|
||||||
|
metadata:
|
||||||
|
name: monitor-task-github-binding
|
||||||
|
namespace: tekton-pipelines
|
||||||
|
spec:
|
||||||
|
params:
|
||||||
|
- name: pullrequesturl
|
||||||
|
value: $(body.pull_request.html_url)
|
||||||
|
- name: statusesurl
|
||||||
|
value: $(body.pull_request.statuses_url)
|
||||||
|
---
|
||||||
|
apiVersion: triggers.tekton.dev/v1alpha1
|
||||||
|
kind: TriggerBinding
|
||||||
|
metadata:
|
||||||
|
name: monitor-task-gitlab-binding
|
||||||
|
namespace: tekton-pipelines
|
||||||
|
spec:
|
||||||
|
params:
|
||||||
|
- name: pullrequesturl
|
||||||
|
value: $(body.object_attributes.url)
|
||||||
|
- name: statusesurl
|
||||||
|
value: projects/$(body.project.id)/statuses/$(body.object_attributes.last_commit.id)
|
||||||
|
---
|
||||||
|
apiVersion: triggers.tekton.dev/v1alpha1
|
||||||
|
kind: TriggerTemplate
|
||||||
|
metadata:
|
||||||
|
name: monitor-task-template
|
||||||
|
namespace: tekton-pipelines
|
||||||
|
spec:
|
||||||
|
params:
|
||||||
|
- description: The pull request url
|
||||||
|
name: pullrequesturl
|
||||||
|
type: string
|
||||||
|
- description: The statuses url
|
||||||
|
name: statusesurl
|
||||||
|
type: string
|
||||||
|
- default: github-secrets
|
||||||
|
description: The git secret name
|
||||||
|
name: gitsecretname
|
||||||
|
type: string
|
||||||
|
- default: token
|
||||||
|
description: The git secret key name
|
||||||
|
name: gitsecretkeyname
|
||||||
|
type: string
|
||||||
|
- default: Success
|
||||||
|
description: The text of the success comment
|
||||||
|
name: commentsuccess
|
||||||
|
type: string
|
||||||
|
- default: Failed
|
||||||
|
description: The text of the failure comment
|
||||||
|
name: commentfailure
|
||||||
|
type: string
|
||||||
|
- default: Unknown
|
||||||
|
description: The text of the timeout comment
|
||||||
|
name: commenttimeout
|
||||||
|
type: string
|
||||||
|
- default: Missing
|
||||||
|
description: The text of the missing comment
|
||||||
|
name: commentmissing
|
||||||
|
type: string
|
||||||
|
- default: http://localhost:9097/
|
||||||
|
description: The URL to the pipelineruns page of the dashboard
|
||||||
|
name: dashboardurl
|
||||||
|
type: string
|
||||||
|
- default: github
|
||||||
|
description: The git provider, "github" or "gitlab"
|
||||||
|
name: provider
|
||||||
|
type: string
|
||||||
|
- default: ""
|
||||||
|
description: The git api URL for the repository
|
||||||
|
name: apiurl
|
||||||
|
type: string
|
||||||
|
- default: "false"
|
||||||
|
description: Whether or not to skip SSL validation of certificates ("true" or
|
||||||
|
"false")
|
||||||
|
name: insecure-skip-tls-verify
|
||||||
|
type: string
|
||||||
|
resourcetemplates:
|
||||||
|
- apiVersion: tekton.dev/v1alpha1
|
||||||
|
kind: PipelineResource
|
||||||
|
metadata:
|
||||||
|
name: pull-request-$(uid)
|
||||||
|
namespace: tekton-pipelines
|
||||||
|
spec:
|
||||||
|
params:
|
||||||
|
- name: url
|
||||||
|
value: $(params.pullrequesturl)
|
||||||
|
- name: insecure-skip-tls-verify
|
||||||
|
value: $(params.insecure-skip-tls-verify)
|
||||||
|
secrets:
|
||||||
|
- fieldName: authToken
|
||||||
|
secretKey: $(params.gitsecretkeyname)
|
||||||
|
secretName: $(params.gitsecretname)
|
||||||
|
type: pullRequest
|
||||||
|
- apiVersion: tekton.dev/v1beta1
|
||||||
|
kind: TaskRun
|
||||||
|
metadata:
|
||||||
|
generateName: monitor-taskrun-
|
||||||
|
namespace: tekton-pipelines
|
||||||
|
spec:
|
||||||
|
params:
|
||||||
|
- name: commentsuccess
|
||||||
|
value: $(params.commentsuccess)
|
||||||
|
- name: commentfailure
|
||||||
|
value: $(params.commentfailure)
|
||||||
|
- name: commenttimeout
|
||||||
|
value: $(params.commenttimeout)
|
||||||
|
- name: dashboard-url
|
||||||
|
value: $(params.dashboardurl)
|
||||||
|
- name: secret
|
||||||
|
value: $(params.gitsecretname)
|
||||||
|
- name: statusesurl
|
||||||
|
value: $(params.statusesurl)
|
||||||
|
- name: provider
|
||||||
|
value: $(params.provider)
|
||||||
|
- name: apiurl
|
||||||
|
value: $(params.apiurl)
|
||||||
|
- name: insecure-skip-tls-verify
|
||||||
|
value: $(params.insecure-skip-tls-verify)
|
||||||
|
resources:
|
||||||
|
inputs:
|
||||||
|
- name: pull-request
|
||||||
|
resourceRef:
|
||||||
|
name: pull-request-$(uid)
|
||||||
|
outputs:
|
||||||
|
- name: pull-request
|
||||||
|
resourceRef:
|
||||||
|
name: pull-request-$(uid)
|
||||||
|
serviceAccountName: tekton-webhooks-extension
|
||||||
|
taskRef:
|
||||||
|
name: monitor-task
|
||||||
|
|
||||||
|
---
|
409
tekton/1-Install/4-dashboard.yaml
Normal file
409
tekton/1-Install/4-dashboard.yaml
Normal file
@ -0,0 +1,409 @@
|
|||||||
|
apiVersion: apiextensions.k8s.io/v1beta1
|
||||||
|
kind: CustomResourceDefinition
|
||||||
|
metadata:
|
||||||
|
name: extensions.dashboard.tekton.dev
|
||||||
|
spec:
|
||||||
|
group: dashboard.tekton.dev
|
||||||
|
names:
|
||||||
|
categories:
|
||||||
|
- tekton
|
||||||
|
- tekton-dashboard
|
||||||
|
kind: Extension
|
||||||
|
plural: extensions
|
||||||
|
scope: Namespaced
|
||||||
|
subresources:
|
||||||
|
status: {}
|
||||||
|
version: v1alpha1
|
||||||
|
---
|
||||||
|
apiVersion: v1
|
||||||
|
kind: ServiceAccount
|
||||||
|
metadata:
|
||||||
|
labels:
|
||||||
|
app: tekton-dashboard
|
||||||
|
name: tekton-dashboard
|
||||||
|
namespace: tekton-pipelines
|
||||||
|
---
|
||||||
|
apiVersion: rbac.authorization.k8s.io/v1
|
||||||
|
kind: ClusterRole
|
||||||
|
metadata:
|
||||||
|
name: tekton-dashboard-minimal
|
||||||
|
namespace: tekton-pipelines
|
||||||
|
rules:
|
||||||
|
- apiGroups:
|
||||||
|
- ""
|
||||||
|
resources:
|
||||||
|
- serviceaccounts
|
||||||
|
verbs:
|
||||||
|
- update
|
||||||
|
- patch
|
||||||
|
- apiGroups:
|
||||||
|
- ""
|
||||||
|
resources:
|
||||||
|
- pods
|
||||||
|
- services
|
||||||
|
verbs:
|
||||||
|
- create
|
||||||
|
- update
|
||||||
|
- delete
|
||||||
|
- patch
|
||||||
|
- apiGroups:
|
||||||
|
- ""
|
||||||
|
resources:
|
||||||
|
- secrets
|
||||||
|
- configmaps
|
||||||
|
verbs:
|
||||||
|
- create
|
||||||
|
- update
|
||||||
|
- delete
|
||||||
|
- apiGroups:
|
||||||
|
- extensions
|
||||||
|
- apps
|
||||||
|
resources:
|
||||||
|
- deployments
|
||||||
|
verbs:
|
||||||
|
- create
|
||||||
|
- update
|
||||||
|
- delete
|
||||||
|
- patch
|
||||||
|
- apiGroups:
|
||||||
|
- tekton.dev
|
||||||
|
resources:
|
||||||
|
- tasks
|
||||||
|
- clustertasks
|
||||||
|
- taskruns
|
||||||
|
- pipelines
|
||||||
|
- pipelineruns
|
||||||
|
- pipelineresources
|
||||||
|
- conditions
|
||||||
|
verbs:
|
||||||
|
- create
|
||||||
|
- update
|
||||||
|
- delete
|
||||||
|
- patch
|
||||||
|
- apiGroups:
|
||||||
|
- tekton.dev
|
||||||
|
resources:
|
||||||
|
- taskruns/finalizers
|
||||||
|
- pipelineruns/finalizers
|
||||||
|
verbs:
|
||||||
|
- create
|
||||||
|
- update
|
||||||
|
- delete
|
||||||
|
- patch
|
||||||
|
- apiGroups:
|
||||||
|
- tekton.dev
|
||||||
|
resources:
|
||||||
|
- tasks/status
|
||||||
|
- clustertasks/status
|
||||||
|
- taskruns/status
|
||||||
|
- pipelines/status
|
||||||
|
- pipelineruns/status
|
||||||
|
verbs:
|
||||||
|
- create
|
||||||
|
- update
|
||||||
|
- delete
|
||||||
|
- patch
|
||||||
|
- apiGroups:
|
||||||
|
- dashboard.tekton.dev
|
||||||
|
resources:
|
||||||
|
- extensions
|
||||||
|
verbs:
|
||||||
|
- create
|
||||||
|
- update
|
||||||
|
- delete
|
||||||
|
- patch
|
||||||
|
- apiGroups:
|
||||||
|
- triggers.tekton.dev
|
||||||
|
resources:
|
||||||
|
- clustertriggerbindings
|
||||||
|
- eventlisteners
|
||||||
|
- triggerbindings
|
||||||
|
- triggertemplates
|
||||||
|
verbs:
|
||||||
|
- create
|
||||||
|
- update
|
||||||
|
- delete
|
||||||
|
- patch
|
||||||
|
- add
|
||||||
|
- apiGroups:
|
||||||
|
- apiextensions.k8s.io
|
||||||
|
resources:
|
||||||
|
- customresourcedefinitions
|
||||||
|
verbs:
|
||||||
|
- get
|
||||||
|
- list
|
||||||
|
- apiGroups:
|
||||||
|
- security.openshift.io
|
||||||
|
resources:
|
||||||
|
- securitycontextconstraints
|
||||||
|
verbs:
|
||||||
|
- use
|
||||||
|
- apiGroups:
|
||||||
|
- route.openshift.io
|
||||||
|
resources:
|
||||||
|
- routes
|
||||||
|
verbs:
|
||||||
|
- get
|
||||||
|
- list
|
||||||
|
- apiGroups:
|
||||||
|
- extensions
|
||||||
|
- apps
|
||||||
|
resources:
|
||||||
|
- ingresses
|
||||||
|
verbs:
|
||||||
|
- get
|
||||||
|
- list
|
||||||
|
- watch
|
||||||
|
- apiGroups:
|
||||||
|
- ""
|
||||||
|
resources:
|
||||||
|
- serviceaccounts
|
||||||
|
verbs:
|
||||||
|
- get
|
||||||
|
- list
|
||||||
|
- watch
|
||||||
|
- apiGroups:
|
||||||
|
- ""
|
||||||
|
resources:
|
||||||
|
- pods
|
||||||
|
- services
|
||||||
|
verbs:
|
||||||
|
- get
|
||||||
|
- list
|
||||||
|
- watch
|
||||||
|
- apiGroups:
|
||||||
|
- ""
|
||||||
|
resources:
|
||||||
|
- pods/log
|
||||||
|
- namespaces
|
||||||
|
- events
|
||||||
|
verbs:
|
||||||
|
- get
|
||||||
|
- list
|
||||||
|
- watch
|
||||||
|
- apiGroups:
|
||||||
|
- ""
|
||||||
|
resources:
|
||||||
|
- secrets
|
||||||
|
- configmaps
|
||||||
|
verbs:
|
||||||
|
- get
|
||||||
|
- list
|
||||||
|
- watch
|
||||||
|
- apiGroups:
|
||||||
|
- extensions
|
||||||
|
- apps
|
||||||
|
resources:
|
||||||
|
- deployments
|
||||||
|
verbs:
|
||||||
|
- get
|
||||||
|
- list
|
||||||
|
- watch
|
||||||
|
- apiGroups:
|
||||||
|
- tekton.dev
|
||||||
|
resources:
|
||||||
|
- tasks
|
||||||
|
- clustertasks
|
||||||
|
- taskruns
|
||||||
|
- pipelines
|
||||||
|
- pipelineruns
|
||||||
|
- pipelineresources
|
||||||
|
- conditions
|
||||||
|
verbs:
|
||||||
|
- get
|
||||||
|
- list
|
||||||
|
- watch
|
||||||
|
- apiGroups:
|
||||||
|
- tekton.dev
|
||||||
|
resources:
|
||||||
|
- taskruns/finalizers
|
||||||
|
- pipelineruns/finalizers
|
||||||
|
verbs:
|
||||||
|
- get
|
||||||
|
- list
|
||||||
|
- watch
|
||||||
|
- apiGroups:
|
||||||
|
- tekton.dev
|
||||||
|
resources:
|
||||||
|
- tasks/status
|
||||||
|
- clustertasks/status
|
||||||
|
- taskruns/status
|
||||||
|
- pipelines/status
|
||||||
|
- pipelineruns/status
|
||||||
|
verbs:
|
||||||
|
- get
|
||||||
|
- list
|
||||||
|
- watch
|
||||||
|
- apiGroups:
|
||||||
|
- dashboard.tekton.dev
|
||||||
|
resources:
|
||||||
|
- extensions
|
||||||
|
verbs:
|
||||||
|
- get
|
||||||
|
- list
|
||||||
|
- watch
|
||||||
|
- apiGroups:
|
||||||
|
- triggers.tekton.dev
|
||||||
|
resources:
|
||||||
|
- clustertriggerbindings
|
||||||
|
- eventlisteners
|
||||||
|
- triggerbindings
|
||||||
|
- triggertemplates
|
||||||
|
verbs:
|
||||||
|
- get
|
||||||
|
- list
|
||||||
|
- watch
|
||||||
|
---
|
||||||
|
apiVersion: rbac.authorization.k8s.io/v1
|
||||||
|
kind: ClusterRoleBinding
|
||||||
|
metadata:
|
||||||
|
name: tekton-dashboard-minimal
|
||||||
|
roleRef:
|
||||||
|
apiGroup: rbac.authorization.k8s.io
|
||||||
|
kind: ClusterRole
|
||||||
|
name: tekton-dashboard-minimal
|
||||||
|
subjects:
|
||||||
|
- kind: ServiceAccount
|
||||||
|
name: tekton-dashboard
|
||||||
|
namespace: tekton-pipelines
|
||||||
|
---
|
||||||
|
apiVersion: v1
|
||||||
|
kind: Service
|
||||||
|
metadata:
|
||||||
|
labels:
|
||||||
|
app: tekton-dashboard
|
||||||
|
dashboard.tekton.dev/release: v0.6.1
|
||||||
|
version: v0.6.1
|
||||||
|
name: tekton-dashboard
|
||||||
|
namespace: tekton-pipelines
|
||||||
|
spec:
|
||||||
|
ports:
|
||||||
|
- name: http
|
||||||
|
port: 9097
|
||||||
|
protocol: TCP
|
||||||
|
targetPort: 9097
|
||||||
|
selector:
|
||||||
|
app: tekton-dashboard
|
||||||
|
---
|
||||||
|
apiVersion: apps/v1
|
||||||
|
kind: Deployment
|
||||||
|
metadata:
|
||||||
|
labels:
|
||||||
|
app: tekton-dashboard
|
||||||
|
dashboard.tekton.dev/release: v0.6.1
|
||||||
|
version: v0.6.1
|
||||||
|
name: tekton-dashboard
|
||||||
|
namespace: tekton-pipelines
|
||||||
|
spec:
|
||||||
|
replicas: 1
|
||||||
|
selector:
|
||||||
|
matchLabels:
|
||||||
|
app: tekton-dashboard
|
||||||
|
template:
|
||||||
|
metadata:
|
||||||
|
labels:
|
||||||
|
app: tekton-dashboard
|
||||||
|
name: tekton-dashboard
|
||||||
|
spec:
|
||||||
|
containers:
|
||||||
|
- env:
|
||||||
|
- name: PORT
|
||||||
|
value: "9097"
|
||||||
|
- name: READ_ONLY
|
||||||
|
value: "false"
|
||||||
|
- name: WEB_RESOURCES_DIR
|
||||||
|
value: /var/run/ko/web
|
||||||
|
- name: PIPELINE_RUN_SERVICE_ACCOUNT
|
||||||
|
value: ""
|
||||||
|
- name: INSTALLED_NAMESPACE
|
||||||
|
valueFrom:
|
||||||
|
fieldRef:
|
||||||
|
fieldPath: metadata.namespace
|
||||||
|
image: gcr.io/tekton-releases/github.com/tektoncd/dashboard/cmd/dashboard@sha256:de969ff4ced12c94701bd039137edf5fc66bbc5ccd19f09324c1d7fcfc47e5f1
|
||||||
|
livenessProbe:
|
||||||
|
httpGet:
|
||||||
|
path: /health
|
||||||
|
port: 9097
|
||||||
|
name: tekton-dashboard
|
||||||
|
ports:
|
||||||
|
- containerPort: 9097
|
||||||
|
readinessProbe:
|
||||||
|
httpGet:
|
||||||
|
path: /readiness
|
||||||
|
port: 9097
|
||||||
|
serviceAccountName: tekton-dashboard
|
||||||
|
---
|
||||||
|
apiVersion: tekton.dev/v1beta1
|
||||||
|
kind: Pipeline
|
||||||
|
metadata:
|
||||||
|
name: pipeline0
|
||||||
|
namespace: tekton-pipelines
|
||||||
|
spec:
|
||||||
|
params:
|
||||||
|
- default: /workspace/git-source
|
||||||
|
description: The path to the resource files to apply
|
||||||
|
name: pathToResourceFiles
|
||||||
|
type: string
|
||||||
|
- default: .
|
||||||
|
description: The directory from which resources are to be applied
|
||||||
|
name: apply-directory
|
||||||
|
type: string
|
||||||
|
- default: tekton-pipelines
|
||||||
|
description: The namespace in which to create the resources being imported
|
||||||
|
name: target-namespace
|
||||||
|
type: string
|
||||||
|
resources:
|
||||||
|
- name: git-source
|
||||||
|
type: git
|
||||||
|
tasks:
|
||||||
|
- name: pipeline0-task
|
||||||
|
params:
|
||||||
|
- name: pathToResourceFiles
|
||||||
|
value: $(params.pathToResourceFiles)
|
||||||
|
- name: apply-directory
|
||||||
|
value: $(params.apply-directory)
|
||||||
|
- name: target-namespace
|
||||||
|
value: $(params.target-namespace)
|
||||||
|
resources:
|
||||||
|
inputs:
|
||||||
|
- name: git-source
|
||||||
|
resource: git-source
|
||||||
|
taskRef:
|
||||||
|
name: pipeline0-task
|
||||||
|
---
|
||||||
|
apiVersion: tekton.dev/v1beta1
|
||||||
|
kind: Task
|
||||||
|
metadata:
|
||||||
|
name: pipeline0-task
|
||||||
|
namespace: tekton-pipelines
|
||||||
|
spec:
|
||||||
|
params:
|
||||||
|
- default: /workspace/git-source
|
||||||
|
description: The path to the resource files to apply
|
||||||
|
name: pathToResourceFiles
|
||||||
|
type: string
|
||||||
|
- default: .
|
||||||
|
description: The directory from which resources are to be applied
|
||||||
|
name: apply-directory
|
||||||
|
type: string
|
||||||
|
- default: tekton-pipelines
|
||||||
|
description: The namespace where created resources will go
|
||||||
|
name: target-namespace
|
||||||
|
type: string
|
||||||
|
resources:
|
||||||
|
inputs:
|
||||||
|
- name: git-source
|
||||||
|
type: git
|
||||||
|
steps:
|
||||||
|
- args:
|
||||||
|
- apply
|
||||||
|
- -f
|
||||||
|
- $(inputs.params.pathToResourceFiles)/$(inputs.params.apply-directory)
|
||||||
|
- -n
|
||||||
|
- $(inputs.params.target-namespace)
|
||||||
|
command:
|
||||||
|
- kubectl
|
||||||
|
image: lachlanevenson/k8s-kubectl@sha256:9713d6c1c6d83bdd4b3744d295fd0efce8f6cc149eb3083e86ae0911aa52ee73
|
||||||
|
name: kubectl-apply
|
||||||
|
|
||||||
|
---
|
11
tekton/2-Setup/docker-creds.yaml
Normal file
11
tekton/2-Setup/docker-creds.yaml
Normal file
@ -0,0 +1,11 @@
|
|||||||
|
apiVersion: v1
|
||||||
|
kind: Secret
|
||||||
|
metadata:
|
||||||
|
name: docker-creds
|
||||||
|
namespace: tekton-pipelines
|
||||||
|
annotations:
|
||||||
|
kube-1password: kgpbumszi4stqgyzg4kqrttxam
|
||||||
|
kube-1password/vault: Kubernetes
|
||||||
|
tekton.dev/docker-0: https://docker.cloud.cluster.fun/averagemarcus
|
||||||
|
type: kubernetes.io/basic-auth
|
||||||
|
|
39
tekton/2-Setup/eventlistener-rbac.yaml
Normal file
39
tekton/2-Setup/eventlistener-rbac.yaml
Normal file
@ -0,0 +1,39 @@
|
|||||||
|
apiVersion: v1
|
||||||
|
kind: ServiceAccount
|
||||||
|
metadata:
|
||||||
|
name: eventlistener
|
||||||
|
namespace: tekton-pipelines
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
kind: Role
|
||||||
|
apiVersion: rbac.authorization.k8s.io/v1
|
||||||
|
metadata:
|
||||||
|
name: eventlistener
|
||||||
|
namespace: tekton-pipelines
|
||||||
|
rules:
|
||||||
|
- apiGroups: ["triggers.tekton.dev"]
|
||||||
|
resources: ["eventlisteners", "triggerbindings", "triggertemplates"]
|
||||||
|
verbs: ["get"]
|
||||||
|
- apiGroups: [""]
|
||||||
|
resources: ["configmaps", "secrets", "serviceaccounts"]
|
||||||
|
verbs: ["get", "list", "watch"]
|
||||||
|
- apiGroups: ["tekton.dev"]
|
||||||
|
resources: ["pipelineruns", "pipelineresources", "taskruns"]
|
||||||
|
verbs: ["create"]
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
apiVersion: rbac.authorization.k8s.io/v1
|
||||||
|
kind: RoleBinding
|
||||||
|
metadata:
|
||||||
|
name: eventlistener
|
||||||
|
namespace: tekton-pipelines
|
||||||
|
roleRef:
|
||||||
|
apiGroup: rbac.authorization.k8s.io
|
||||||
|
kind: Role
|
||||||
|
name: eventlistener
|
||||||
|
subjects:
|
||||||
|
- kind: ServiceAccount
|
||||||
|
name: eventlistener
|
||||||
|
namespace: tekton-pipelines
|
22
tekton/2-Setup/gitea-creds.yaml
Normal file
22
tekton/2-Setup/gitea-creds.yaml
Normal file
@ -0,0 +1,22 @@
|
|||||||
|
apiVersion: v1
|
||||||
|
kind: Secret
|
||||||
|
metadata:
|
||||||
|
name: gitea-access-token
|
||||||
|
namespace: tekton-pipelines
|
||||||
|
annotations:
|
||||||
|
kube-1password: u45tpgj33bnxl6iz3kwgaf44va
|
||||||
|
kube-1password/vault: Kubernetes
|
||||||
|
kube-1password/password-key: access-token
|
||||||
|
type: Opaque
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
apiVersion: v1
|
||||||
|
kind: Secret
|
||||||
|
metadata:
|
||||||
|
name: gitea-creds
|
||||||
|
annotations:
|
||||||
|
kube-1password: 3jgo56jlsrdxilf2vdp5zsw6lq
|
||||||
|
kube-1password/vault: Kubernetes
|
||||||
|
tekton.dev/git-0: https://git.cloud.cluster.fun
|
||||||
|
type: kubernetes.io/basic-auth
|
19
tekton/2-Setup/serviceaccounts.yaml
Normal file
19
tekton/2-Setup/serviceaccounts.yaml
Normal file
@ -0,0 +1,19 @@
|
|||||||
|
apiVersion: v1
|
||||||
|
kind: ServiceAccount
|
||||||
|
metadata:
|
||||||
|
name: deploy-project
|
||||||
|
namespace: tekton-pipelines
|
||||||
|
secrets:
|
||||||
|
- name: docker-creds
|
||||||
|
- name: gitea-creds
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
apiVersion: v1
|
||||||
|
kind: ServiceAccount
|
||||||
|
metadata:
|
||||||
|
name: pr-project
|
||||||
|
namespace: tekton-pipelines
|
||||||
|
secrets:
|
||||||
|
- name: docker-creds
|
||||||
|
- name: gitea-creds
|
32
tekton/README.md
Normal file
32
tekton/README.md
Normal file
@ -0,0 +1,32 @@
|
|||||||
|
# tekton-cicd
|
||||||
|
|
||||||
|
## Features
|
||||||
|
|
||||||
|
- Install Tekton along with Triggers, Webhook support and the dashboard
|
||||||
|
- Configures an eventlistener for Gitea
|
||||||
|
- Defines standard PR and Deploy pipelines
|
||||||
|
|
||||||
|
## Install
|
||||||
|
|
||||||
|
```sh
|
||||||
|
kubectl apply --recursive -f ./
|
||||||
|
```
|
||||||
|
|
||||||
|
## Custom Docker images used
|
||||||
|
|
||||||
|
### gitea-pr-state
|
||||||
|
|
||||||
|
`docker pull docker.cloud.cluster.fun/averagemarcus/gitea-pr-state:latest`
|
||||||
|
|
||||||
|
> Sets the state of a commit in Gitea. This is used to set the CI status to pending or success on the PR.
|
||||||
|
|
||||||
|
### ci-builder
|
||||||
|
|
||||||
|
`docker pull docker.cloud.cluster.fun/averagemarcus/ci-builder:latest`
|
||||||
|
|
||||||
|
> Used as a general-purpose Docker image with many common build tools included. This is used for running `make test` and `make build` without needing specific CI images for each project.
|
||||||
|
|
||||||
|
## Resources
|
||||||
|
|
||||||
|
- [Tekton](https://tekton.dev/)
|
||||||
|
- [Tekton Docs](https://tekton.dev/docs/)
|
19
tekton/bindings/gitea.yaml
Normal file
19
tekton/bindings/gitea.yaml
Normal file
@ -0,0 +1,19 @@
|
|||||||
|
apiVersion: triggers.tekton.dev/v1alpha1
|
||||||
|
kind: TriggerBinding
|
||||||
|
metadata:
|
||||||
|
name: gitea-binding
|
||||||
|
namespace: tekton-pipelines
|
||||||
|
spec:
|
||||||
|
params:
|
||||||
|
- name: gitrevision
|
||||||
|
value: $(body.commit_sha)
|
||||||
|
- name: gitref
|
||||||
|
value: $(body.ref)
|
||||||
|
- name: gitrepositoryurl
|
||||||
|
value: $(body.repository.html_url)
|
||||||
|
- name: gitbranch
|
||||||
|
value: $(body.branch)
|
||||||
|
- name: projectname
|
||||||
|
value: $(body.repository.name)
|
||||||
|
- name: isprivate
|
||||||
|
value: $(body.repository.private)
|
12
tekton/conditions/has-makefile.yaml
Normal file
12
tekton/conditions/has-makefile.yaml
Normal file
@ -0,0 +1,12 @@
|
|||||||
|
apiVersion: tekton.dev/v1alpha1
|
||||||
|
kind: Condition
|
||||||
|
metadata:
|
||||||
|
name: has-makefile
|
||||||
|
namespace: tekton-pipelines
|
||||||
|
spec:
|
||||||
|
resources:
|
||||||
|
- name: src
|
||||||
|
type: git
|
||||||
|
check:
|
||||||
|
image: alpine
|
||||||
|
script: 'test -f $(resources.src.path)/Makefile'
|
11
tekton/conditions/public-project.yaml
Normal file
11
tekton/conditions/public-project.yaml
Normal file
@ -0,0 +1,11 @@
|
|||||||
|
apiVersion: tekton.dev/v1alpha1
|
||||||
|
kind: Condition
|
||||||
|
metadata:
|
||||||
|
name: is-public-project
|
||||||
|
namespace: tekton-pipelines
|
||||||
|
spec:
|
||||||
|
params:
|
||||||
|
- name: isprivate
|
||||||
|
check:
|
||||||
|
image: alpine
|
||||||
|
script: 'test $(params.isprivate) == false'
|
51
tekton/eventlisteners/webhook.yaml
Normal file
51
tekton/eventlisteners/webhook.yaml
Normal file
@ -0,0 +1,51 @@
|
|||||||
|
apiVersion: triggers.tekton.dev/v1alpha1
|
||||||
|
kind: EventListener
|
||||||
|
metadata:
|
||||||
|
name: webhook-listener
|
||||||
|
namespace: tekton-pipelines
|
||||||
|
spec:
|
||||||
|
serviceAccountName: eventlistener
|
||||||
|
triggers:
|
||||||
|
- name: pull-request
|
||||||
|
interceptors:
|
||||||
|
- cel:
|
||||||
|
filter: "header.match('X-GitHub-Event', 'pull_request') && body.action != 'closed'"
|
||||||
|
overlays:
|
||||||
|
- key: commit_sha
|
||||||
|
expression: "body.pull_request.head.sha"
|
||||||
|
- key: branch
|
||||||
|
expression: "body.pull_request.head.ref"
|
||||||
|
- key: ref
|
||||||
|
expression: "body.pull_request.head.ref"
|
||||||
|
bindings:
|
||||||
|
- name: gitea-binding
|
||||||
|
template:
|
||||||
|
name: pr-project
|
||||||
|
- name: deploy-master
|
||||||
|
interceptors:
|
||||||
|
- cel:
|
||||||
|
filter: "header.match('X-GitHub-Event', 'push') && split(body.ref, '/')[2] == body.repository.default_branch"
|
||||||
|
overlays:
|
||||||
|
- key: commit_sha
|
||||||
|
expression: "body.after"
|
||||||
|
- key: branch
|
||||||
|
expression: "split(body.ref, '/')[2]"
|
||||||
|
- key: ref
|
||||||
|
expression: "body.ref"
|
||||||
|
bindings:
|
||||||
|
- name: gitea-binding
|
||||||
|
template:
|
||||||
|
name: deploy-project
|
||||||
|
- name: tag
|
||||||
|
interceptors:
|
||||||
|
- cel:
|
||||||
|
filter: "header.match('X-GitHub-Event', 'create') && body.ref_type == 'tag'"
|
||||||
|
overlays:
|
||||||
|
- key: commit_sha
|
||||||
|
expression: "body.sha"
|
||||||
|
- key: ref
|
||||||
|
expression: "body.ref"
|
||||||
|
bindings:
|
||||||
|
- name: gitea-binding
|
||||||
|
template:
|
||||||
|
name: project-tag
|
77
tekton/pipelines/deploy.yaml
Normal file
77
tekton/pipelines/deploy.yaml
Normal file
@ -0,0 +1,77 @@
|
|||||||
|
apiVersion: tekton.dev/v1beta1
|
||||||
|
kind: Pipeline
|
||||||
|
metadata:
|
||||||
|
name: deploy-project
|
||||||
|
namespace: tekton-pipelines
|
||||||
|
spec:
|
||||||
|
params:
|
||||||
|
- name: gitbranch
|
||||||
|
type: string
|
||||||
|
- name: gitrevision
|
||||||
|
type: string
|
||||||
|
- name: projectname
|
||||||
|
type: string
|
||||||
|
- name: isprivate
|
||||||
|
default: "true"
|
||||||
|
type: string
|
||||||
|
- name: dockerregistry
|
||||||
|
type: string
|
||||||
|
description: The Docker registry to push images to
|
||||||
|
default: docker.cloud.cluster.fun/private
|
||||||
|
- name: publicdockerregistry
|
||||||
|
type: string
|
||||||
|
description: The Docker registry to push images to
|
||||||
|
default: docker.cloud.cluster.fun/averagemarcus
|
||||||
|
- name: imagetag
|
||||||
|
type: string
|
||||||
|
description: The Docker image tag
|
||||||
|
default: latest
|
||||||
|
resources:
|
||||||
|
- name: git-source
|
||||||
|
type: git
|
||||||
|
tasks:
|
||||||
|
- name: build-and-publish-latest
|
||||||
|
taskRef:
|
||||||
|
name: docker-build-and-publish
|
||||||
|
params:
|
||||||
|
- name: IMAGE
|
||||||
|
value: $(params.dockerregistry)/$(params.projectname):$(params.imagetag)
|
||||||
|
resources:
|
||||||
|
inputs:
|
||||||
|
- name: src
|
||||||
|
resource: git-source
|
||||||
|
- name: build-and-publish-sha
|
||||||
|
taskRef:
|
||||||
|
name: docker-build-and-publish
|
||||||
|
params:
|
||||||
|
- name: IMAGE
|
||||||
|
value: $(params.dockerregistry)/$(params.projectname):$(params.gitrevision)
|
||||||
|
resources:
|
||||||
|
inputs:
|
||||||
|
- name: src
|
||||||
|
resource: git-source
|
||||||
|
- name: build-and-publish-public
|
||||||
|
conditions:
|
||||||
|
- conditionRef: is-public-project
|
||||||
|
params:
|
||||||
|
- name: isprivate
|
||||||
|
value: $(params.isprivate)
|
||||||
|
taskRef:
|
||||||
|
name: docker-build-and-publish
|
||||||
|
params:
|
||||||
|
- name: IMAGE
|
||||||
|
value: $(params.publicdockerregistry)/$(params.projectname):$(params.imagetag)
|
||||||
|
resources:
|
||||||
|
inputs:
|
||||||
|
- name: src
|
||||||
|
resource: git-source
|
||||||
|
- name: make-release
|
||||||
|
taskRef:
|
||||||
|
name: make
|
||||||
|
params:
|
||||||
|
- name: TARGET
|
||||||
|
value: "release"
|
||||||
|
resources:
|
||||||
|
inputs:
|
||||||
|
- name: src
|
||||||
|
resource: git-source
|
91
tekton/pipelines/pr.yaml
Normal file
91
tekton/pipelines/pr.yaml
Normal file
@ -0,0 +1,91 @@
|
|||||||
|
apiVersion: tekton.dev/v1beta1
|
||||||
|
kind: Pipeline
|
||||||
|
metadata:
|
||||||
|
name: pr-project
|
||||||
|
namespace: tekton-pipelines
|
||||||
|
spec:
|
||||||
|
params:
|
||||||
|
- name: gitbranch
|
||||||
|
type: string
|
||||||
|
- name: gitrevision
|
||||||
|
type: string
|
||||||
|
- name: projectname
|
||||||
|
type: string
|
||||||
|
resources:
|
||||||
|
- name: git-source
|
||||||
|
type: git
|
||||||
|
tasks:
|
||||||
|
- name: pr-start
|
||||||
|
taskRef:
|
||||||
|
name: pr-status
|
||||||
|
params:
|
||||||
|
- name: REPO
|
||||||
|
value: $(params.projectname)
|
||||||
|
- name: SHA
|
||||||
|
value: $(params.gitrevision)
|
||||||
|
- name: STATE
|
||||||
|
value: "pending"
|
||||||
|
- name: make-test
|
||||||
|
# TODO: Re-enable when conditionals can result in skipped rather than failure
|
||||||
|
# conditions:
|
||||||
|
# - conditionRef: has-makefile
|
||||||
|
# resources:
|
||||||
|
# - name: src
|
||||||
|
# resource: git-source
|
||||||
|
taskRef:
|
||||||
|
name: make
|
||||||
|
params:
|
||||||
|
- name: TARGET
|
||||||
|
value: "test"
|
||||||
|
resources:
|
||||||
|
inputs:
|
||||||
|
- name: src
|
||||||
|
resource: git-source
|
||||||
|
- name: make-build
|
||||||
|
# TODO: Re-enable when conditionals can result in skipped rather than failure
|
||||||
|
# conditions:
|
||||||
|
# - conditionRef: has-makefile
|
||||||
|
# resources:
|
||||||
|
# - name: src
|
||||||
|
# resource: git-source
|
||||||
|
taskRef:
|
||||||
|
name: make
|
||||||
|
params:
|
||||||
|
- name: TARGET
|
||||||
|
value: "build"
|
||||||
|
resources:
|
||||||
|
inputs:
|
||||||
|
- name: src
|
||||||
|
resource: git-source
|
||||||
|
- name: make-ci
|
||||||
|
# TODO: Re-enable when conditionals can result in skipped rather than failure
|
||||||
|
# conditions:
|
||||||
|
# - conditionRef: has-makefile
|
||||||
|
# resources:
|
||||||
|
# - name: src
|
||||||
|
# resource: git-source
|
||||||
|
taskRef:
|
||||||
|
name: make
|
||||||
|
params:
|
||||||
|
- name: TARGET
|
||||||
|
value: "ci"
|
||||||
|
resources:
|
||||||
|
inputs:
|
||||||
|
- name: src
|
||||||
|
resource: git-source
|
||||||
|
- name: pr-end
|
||||||
|
taskRef:
|
||||||
|
name: pr-status
|
||||||
|
runAfter:
|
||||||
|
- pr-start
|
||||||
|
- make-test
|
||||||
|
- make-build
|
||||||
|
- make-ci
|
||||||
|
params:
|
||||||
|
- name: REPO
|
||||||
|
value: $(params.projectname)
|
||||||
|
- name: SHA
|
||||||
|
value: $(params.gitrevision)
|
||||||
|
- name: STATE
|
||||||
|
value: "success"
|
||||||
|
|
53
tekton/pipelines/tag.yaml
Normal file
53
tekton/pipelines/tag.yaml
Normal file
@ -0,0 +1,53 @@
|
|||||||
|
apiVersion: tekton.dev/v1beta1
|
||||||
|
kind: Pipeline
|
||||||
|
metadata:
|
||||||
|
name: project-tag
|
||||||
|
namespace: tekton-pipelines
|
||||||
|
spec:
|
||||||
|
params:
|
||||||
|
- name: projectname
|
||||||
|
type: string
|
||||||
|
- name: isprivate
|
||||||
|
default: "true"
|
||||||
|
type: string
|
||||||
|
- name: dockerregistry
|
||||||
|
type: string
|
||||||
|
description: The Docker registry to push images to
|
||||||
|
default: docker.cloud.cluster.fun/private
|
||||||
|
- name: publicdockerregistry
|
||||||
|
type: string
|
||||||
|
description: The Docker registry to push images to
|
||||||
|
default: docker.cloud.cluster.fun/averagemarcus
|
||||||
|
- name: imagetag
|
||||||
|
type: string
|
||||||
|
description: The Docker image tag
|
||||||
|
default: latest
|
||||||
|
resources:
|
||||||
|
- name: git-source
|
||||||
|
type: git
|
||||||
|
tasks:
|
||||||
|
- name: build-and-publish-tag
|
||||||
|
taskRef:
|
||||||
|
name: docker-build-and-publish
|
||||||
|
params:
|
||||||
|
- name: IMAGE
|
||||||
|
value: $(params.dockerregistry)/$(params.projectname):$(params.imagetag)
|
||||||
|
resources:
|
||||||
|
inputs:
|
||||||
|
- name: src
|
||||||
|
resource: git-source
|
||||||
|
- name: build-and-publish-tag-public
|
||||||
|
conditions:
|
||||||
|
- conditionRef: is-public-project
|
||||||
|
params:
|
||||||
|
- name: isprivate
|
||||||
|
value: $(params.isprivate)
|
||||||
|
taskRef:
|
||||||
|
name: docker-build-and-publish
|
||||||
|
params:
|
||||||
|
- name: IMAGE
|
||||||
|
value: $(params.publicdockerregistry)/$(params.projectname):$(params.imagetag)
|
||||||
|
resources:
|
||||||
|
inputs:
|
||||||
|
- name: src
|
||||||
|
resource: git-source
|
45
tekton/tasks/docker-build-and-publish.yaml
Normal file
45
tekton/tasks/docker-build-and-publish.yaml
Normal file
@ -0,0 +1,45 @@
|
|||||||
|
apiVersion: tekton.dev/v1beta1
|
||||||
|
kind: Task
|
||||||
|
metadata:
|
||||||
|
name: docker-build-and-publish
|
||||||
|
namespace: tekton-pipelines
|
||||||
|
spec:
|
||||||
|
params:
|
||||||
|
- name: DOCKERFILE
|
||||||
|
type: string
|
||||||
|
description: The path to the dockerfile to build
|
||||||
|
default: /Dockerfile
|
||||||
|
- name: CONTEXT
|
||||||
|
type: string
|
||||||
|
description: The build context used by Docker.
|
||||||
|
default: ./
|
||||||
|
- name: IMAGE
|
||||||
|
type: string
|
||||||
|
description: Name (reference) of the image to build.
|
||||||
|
- name: EXTRA_ARGS
|
||||||
|
type: string
|
||||||
|
default: ""
|
||||||
|
resources:
|
||||||
|
inputs:
|
||||||
|
- name: src
|
||||||
|
type: git
|
||||||
|
results:
|
||||||
|
- name: IMAGE_DIGEST
|
||||||
|
description: Digest of the image just built.
|
||||||
|
steps:
|
||||||
|
- name: build-and-push
|
||||||
|
workingDir: /workspace/src
|
||||||
|
image: gcr.io/kaniko-project/executor:latest
|
||||||
|
env:
|
||||||
|
- name: DOCKER_CONFIG
|
||||||
|
value: /tekton/home/.docker
|
||||||
|
command:
|
||||||
|
- /kaniko/executor
|
||||||
|
- $(params.EXTRA_ARGS)
|
||||||
|
- --dockerfile=/workspace/src/$(params.DOCKERFILE)
|
||||||
|
- --context=/workspace/src/$(params.CONTEXT)
|
||||||
|
- --destination=$(params.IMAGE)
|
||||||
|
- --oci-layout-path=/workspace/src/image-digest
|
||||||
|
- --digest-file=/tekton/results/IMAGE_DIGEST
|
||||||
|
securityContext:
|
||||||
|
runAsUser: 0
|
14
tekton/tasks/kubectl-apply-files.yaml
Normal file
14
tekton/tasks/kubectl-apply-files.yaml
Normal file
@ -0,0 +1,14 @@
|
|||||||
|
apiVersion: tekton.dev/v1beta1
|
||||||
|
kind: Task
|
||||||
|
metadata:
|
||||||
|
name: kubectl-apply-files
|
||||||
|
namespace: tekton-pipelines
|
||||||
|
spec:
|
||||||
|
params:
|
||||||
|
- name: DIRECTORY
|
||||||
|
description: Directory of kubernetes manifest files
|
||||||
|
steps:
|
||||||
|
- name: kubectl-apply
|
||||||
|
image: gcr.io/cloud-builders/kubectl
|
||||||
|
script: |
|
||||||
|
kubectl apply --recursive -f $(params.DIRECTORY)
|
14
tekton/tasks/kubectl-apply-inline.yaml
Normal file
14
tekton/tasks/kubectl-apply-inline.yaml
Normal file
@ -0,0 +1,14 @@
|
|||||||
|
apiVersion: tekton.dev/v1beta1
|
||||||
|
kind: Task
|
||||||
|
metadata:
|
||||||
|
name: kubectl-apply-inline
|
||||||
|
namespace: tekton-pipelines
|
||||||
|
spec:
|
||||||
|
params:
|
||||||
|
- name: MANIFEST
|
||||||
|
description: Content of the resource to deploy
|
||||||
|
steps:
|
||||||
|
- name: kubectl-apply
|
||||||
|
image: gcr.io/cloud-builders/kubectl
|
||||||
|
script: |
|
||||||
|
echo "$(params.MANIFEST)" | kubectl apply -f -
|
25
tekton/tasks/kubectl-patch-image.yaml
Normal file
25
tekton/tasks/kubectl-patch-image.yaml
Normal file
@ -0,0 +1,25 @@
|
|||||||
|
apiVersion: tekton.dev/v1beta1
|
||||||
|
kind: Task
|
||||||
|
metadata:
|
||||||
|
name: kubectl-patch-image
|
||||||
|
namespace: tekton-pipelines
|
||||||
|
spec:
|
||||||
|
params:
|
||||||
|
- name: NAMESPACE
|
||||||
|
default: "default"
|
||||||
|
description: The namespace the kubernetes resource is in
|
||||||
|
- name: RESOURCE_TYPE
|
||||||
|
default: "deployment"
|
||||||
|
description: The type of Kubernetes resource
|
||||||
|
- name: NAME
|
||||||
|
description: The name of the resource
|
||||||
|
- name: CONTAINER_NAME
|
||||||
|
description: The name of the container to patch
|
||||||
|
default: "*" # defaults to updating _all_ containers
|
||||||
|
- name: IMAGE
|
||||||
|
description: The new image to use
|
||||||
|
steps:
|
||||||
|
- name: kubectl-patch-image
|
||||||
|
image: gcr.io/cloud-builders/kubectl
|
||||||
|
script: |
|
||||||
|
kubectl --namespace $(params.NAMESPACE) set image $(params.RESOURCE_TYPE) $(params.NAME) $(params.CONTAINER_NAME)=$(params.IMAGE)
|
19
tekton/tasks/make.yaml
Normal file
19
tekton/tasks/make.yaml
Normal file
@ -0,0 +1,19 @@
|
|||||||
|
apiVersion: tekton.dev/v1beta1
|
||||||
|
kind: Task
|
||||||
|
metadata:
|
||||||
|
name: make
|
||||||
|
namespace: tekton-pipelines
|
||||||
|
spec:
|
||||||
|
params:
|
||||||
|
- name: TARGET
|
||||||
|
description: The make target to run
|
||||||
|
resources:
|
||||||
|
inputs:
|
||||||
|
- name: src
|
||||||
|
type: git
|
||||||
|
steps:
|
||||||
|
- name: make
|
||||||
|
workingDir: /workspace/src
|
||||||
|
image: docker.cloud.cluster.fun/averagemarcus/ci-builder:latest
|
||||||
|
script: |
|
||||||
|
make --dry-run -t $(params.TARGET) &> /dev/null && make $(params.TARGET) || echo "No '$(params.TARGET)' target found, skipping"
|
27
tekton/tasks/pr-status.yaml
Normal file
27
tekton/tasks/pr-status.yaml
Normal file
@ -0,0 +1,27 @@
|
|||||||
|
apiVersion: tekton.dev/v1beta1
|
||||||
|
kind: Task
|
||||||
|
metadata:
|
||||||
|
name: pr-status
|
||||||
|
namespace: tekton-pipelines
|
||||||
|
spec:
|
||||||
|
params:
|
||||||
|
- name: REPO
|
||||||
|
description: The name of the repo
|
||||||
|
- name: SHA
|
||||||
|
description: The git SHA to update the status of
|
||||||
|
- name: STATE
|
||||||
|
description: The state to set the status to (pending, success, error, failure or warning)
|
||||||
|
default: "pending"
|
||||||
|
steps:
|
||||||
|
- name: pr-status-update
|
||||||
|
image: docker.cloud.cluster.fun/averagemarcus/gitea-pr-state:latest
|
||||||
|
env:
|
||||||
|
- name: ACCESS_TOKEN
|
||||||
|
valueFrom:
|
||||||
|
secretKeyRef:
|
||||||
|
name: gitea-access-token
|
||||||
|
key: access-token
|
||||||
|
args:
|
||||||
|
- "$(params.REPO)"
|
||||||
|
- "$(params.SHA)"
|
||||||
|
- "$(params.STATE)"
|
49
tekton/triggertemplates/deploy.yaml
Normal file
49
tekton/triggertemplates/deploy.yaml
Normal file
@ -0,0 +1,49 @@
|
|||||||
|
apiVersion: triggers.tekton.dev/v1alpha1
|
||||||
|
kind: TriggerTemplate
|
||||||
|
metadata:
|
||||||
|
name: deploy-project
|
||||||
|
namespace: tekton-pipelines
|
||||||
|
spec:
|
||||||
|
params:
|
||||||
|
- name: gitrevision
|
||||||
|
description: The git revision
|
||||||
|
- name: gitrepositoryurl
|
||||||
|
description: The git repository url
|
||||||
|
- name: gitbranch
|
||||||
|
description: The branch of the PR
|
||||||
|
- name: gitref
|
||||||
|
description: The ref of the PR
|
||||||
|
- name: projectname
|
||||||
|
description: The name of the git project
|
||||||
|
- name: isprivate
|
||||||
|
description: If the git project is set to private
|
||||||
|
default: "true"
|
||||||
|
resourcetemplates:
|
||||||
|
- apiVersion: tekton.dev/v1beta1
|
||||||
|
kind: PipelineRun
|
||||||
|
metadata:
|
||||||
|
generateName: deploy-project-
|
||||||
|
spec:
|
||||||
|
pipelineRef:
|
||||||
|
name: deploy-project
|
||||||
|
serviceAccountName: deploy-project
|
||||||
|
params:
|
||||||
|
- name: gitbranch
|
||||||
|
value: $(params.gitbranch)
|
||||||
|
- name: gitref
|
||||||
|
value: $(params.gitref)
|
||||||
|
- name: gitrevision
|
||||||
|
value: $(params.gitrevision)
|
||||||
|
- name: projectname
|
||||||
|
value: $(params.projectname)
|
||||||
|
- name: isprivate
|
||||||
|
value: $(params.isprivate)
|
||||||
|
resources:
|
||||||
|
- name: git-source
|
||||||
|
resourceSpec:
|
||||||
|
type: git
|
||||||
|
params:
|
||||||
|
- name: revision
|
||||||
|
value: $(params.gitrevision)
|
||||||
|
- name: url
|
||||||
|
value: $(params.gitrepositoryurl)
|
42
tekton/triggertemplates/pr.yaml
Normal file
42
tekton/triggertemplates/pr.yaml
Normal file
@ -0,0 +1,42 @@
|
|||||||
|
apiVersion: triggers.tekton.dev/v1alpha1
|
||||||
|
kind: TriggerTemplate
|
||||||
|
metadata:
|
||||||
|
name: pr-project
|
||||||
|
namespace: tekton-pipelines
|
||||||
|
spec:
|
||||||
|
params:
|
||||||
|
- name: gitrevision
|
||||||
|
description: The git revision
|
||||||
|
- name: gitrepositoryurl
|
||||||
|
description: The git repository url
|
||||||
|
- name: gitbranch
|
||||||
|
description: The branch of the PR
|
||||||
|
- name: gitref
|
||||||
|
description: The ref of the PR
|
||||||
|
- name: projectname
|
||||||
|
description: The name of the git project
|
||||||
|
resourcetemplates:
|
||||||
|
- apiVersion: tekton.dev/v1beta1
|
||||||
|
kind: PipelineRun
|
||||||
|
metadata:
|
||||||
|
generateName: pr-project-
|
||||||
|
spec:
|
||||||
|
pipelineRef:
|
||||||
|
name: pr-project
|
||||||
|
serviceAccountName: pr-project
|
||||||
|
params:
|
||||||
|
- name: gitbranch
|
||||||
|
value: $(params.gitbranch)
|
||||||
|
- name: gitrevision
|
||||||
|
value: $(params.gitrevision)
|
||||||
|
- name: projectname
|
||||||
|
value: $(params.projectname)
|
||||||
|
resources:
|
||||||
|
- name: git-source
|
||||||
|
resourceSpec:
|
||||||
|
type: git
|
||||||
|
params:
|
||||||
|
- name: revision
|
||||||
|
value: $(params.gitrevision)
|
||||||
|
- name: url
|
||||||
|
value: $(params.gitrepositoryurl)
|
51
tekton/triggertemplates/tag.yaml
Normal file
51
tekton/triggertemplates/tag.yaml
Normal file
@ -0,0 +1,51 @@
|
|||||||
|
apiVersion: triggers.tekton.dev/v1alpha1
|
||||||
|
kind: TriggerTemplate
|
||||||
|
metadata:
|
||||||
|
name: project-tag
|
||||||
|
namespace: tekton-pipelines
|
||||||
|
spec:
|
||||||
|
params:
|
||||||
|
- name: gitrevision
|
||||||
|
description: The git revision
|
||||||
|
- name: gitrepositoryurl
|
||||||
|
description: The git repository url
|
||||||
|
- name: gitbranch
|
||||||
|
description: The branch of the PR
|
||||||
|
- name: gitref
|
||||||
|
description: The ref of the PR
|
||||||
|
- name: projectname
|
||||||
|
description: The name of the git project
|
||||||
|
- name: isprivate
|
||||||
|
description: If the git project is set to private
|
||||||
|
default: "true"
|
||||||
|
resourcetemplates:
|
||||||
|
- apiVersion: tekton.dev/v1beta1
|
||||||
|
kind: PipelineRun
|
||||||
|
metadata:
|
||||||
|
generateName: project-tag-
|
||||||
|
spec:
|
||||||
|
pipelineRef:
|
||||||
|
name: project-tag
|
||||||
|
serviceAccountName: project-tag
|
||||||
|
params:
|
||||||
|
- name: gitbranch
|
||||||
|
value: $(params.gitbranch)
|
||||||
|
- name: gitref
|
||||||
|
value: $(params.gitref)
|
||||||
|
- name: gitrevision
|
||||||
|
value: $(params.gitrevision)
|
||||||
|
- name: projectname
|
||||||
|
value: $(params.projectname)
|
||||||
|
- name: isprivate
|
||||||
|
value: $(params.isprivate)
|
||||||
|
- name: imagetag
|
||||||
|
value: $(params.gitref)
|
||||||
|
resources:
|
||||||
|
- name: git-source
|
||||||
|
resourceSpec:
|
||||||
|
type: git
|
||||||
|
params:
|
||||||
|
- name: revision
|
||||||
|
value: $(params.gitrevision)
|
||||||
|
- name: url
|
||||||
|
value: $(params.gitrepositoryurl)
|
Loading…
Reference in New Issue
Block a user