setup tekton cicd

main
avraham 2 years ago
parent 49c94a9ecf
commit f4cb552af5

@ -0,0 +1,41 @@
apiVersion: triggers.tekton.dev/v1beta1
kind: EventListener
metadata:
name: gitea-pushes
namespace: sakal-us
spec:
serviceAccountName: tekton-triggers-sakal-us
triggers:
# inline Trigger:
- name: build-and-deploy-sakal-us
bindings: # TriggerBindings to pluck data from EventListener and map it to named variables
- name: gitrevision
value: $(body.commits[0].id)
- name: gitrepositoryurl
value: $(body.repository.clone_url)
template: # TriggerTemplates to render various Tekton CRDs using plucked data
spec:
params:
- name: gitrevision
description: The git revision
default: main
- name: gitrepositoryurl
description: The git repository url
default: https://git.sakal.us/avraham/sakal.us.git
resourcetemplates:
- apiVersion: tekton.dev/v1beta1
kind: PipelineRun
metadata:
generateName: build-and-deploy-sakal-us-
spec:
pipelineRef:
name: build-and-deploy-sakal-us
params:
- name: gitrevision
value: $(tt.params.gitrevision)
- name: gitrepositoryurl
value: $(tt.params.gitrepositoryurl)
workspaces:
- name: repo
persistentVolumeClaim:
claimName: sakal-us-cicd

@ -0,0 +1,4 @@
apiVersion: v1
kind: Namespace
metadata:
name: sakal-us

@ -0,0 +1,76 @@
apiVersion: tekton.dev/v1beta1
kind: Pipeline
metadata:
name: build-and-deploy-sakal-us
namespace: sakal-us
spec:
params:
- name: gitrevision
type: string
- name: gitrepositoryurl
type: string
workspaces:
- name: repo
tasks:
- name: git-clone
workspaces:
- name: repo
workspace: repo
params:
- name: gitrepositoryurl
value: "$(params.gitrepositoryurl)"
- name: gitrevision
value: "$(params.gitrevision)"
taskSpec:
workspaces:
- name: repo
params:
- name: gitrepositoryurl
type: string
- name: gitrevision
type: string
steps:
- name: git-clone
image: bitnami/git
script: git clone $(params.gitrepositoryurl) $(workspaces.repo.path) && cd $(workspaces.repo.path) && git checkout $(params.gitrevision)
- name: npm-build
runAfter:
- git-clone
workspaces:
- name: repo
workspace: repo
taskSpec:
workspaces:
- name: repo
steps:
- name: build
image: node:20
workingDir: $(workspaces.repo.path)
script: npm install && npm run build
- name: deploy-to-s3
runAfter:
- npm-build
workspaces:
- name: repo
workspace: repo
taskSpec:
workspaces:
- name: repo
steps:
- name: deploy-to-s3
image: bitnami/minio-client
workingDir: $(workspaces.repo.path)
env:
- name: MINIO_SERVER_HOST
value: minio.minio-dev.svc.cluster.local
- name: MINIO_SERVER_ACCESS_KEY
valueFrom:
secretKeyRef:
name: minio-dev
key: accessKey
- name: MINIO_SERVER_SECRET_KEY
valueFrom:
secretKeyRef:
name: minio-dev
key: secretKey
script: mc cp dist/ sakal-us/

@ -0,0 +1,12 @@
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: sakal-us-cicd
namespace: sakal-us
spec:
resources:
requests:
storage: 512Mi
volumeMode: Filesystem
accessModes:
- ReadWriteOnce

@ -0,0 +1,32 @@
apiVersion: v1
kind: ServiceAccount
metadata:
name: tekton-triggers-sakal-us
namespace: sakal-us
---
apiVersion: rbac.authorization.k8s.io/v1
kind: RoleBinding
metadata:
name: triggers-example-eventlistener-binding
namespace: sakal-us
subjects:
- kind: ServiceAccount
name: tekton-triggers-sakal-us
roleRef:
apiGroup: rbac.authorization.k8s.io
kind: ClusterRole
name: tekton-triggers-eventlistener-roles
---
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRoleBinding
metadata:
name: triggers-example-eventlistener-clusterbinding
namespace: sakal-us
subjects:
- kind: ServiceAccount
name: tekton-triggers-sakal-us
namespace: default
roleRef:
apiGroup: rbac.authorization.k8s.io
kind: ClusterRole
name: tekton-triggers-eventlistener-clusterroles
Loading…
Cancel
Save