fix
This commit is contained in:
@@ -21,44 +21,67 @@ resource "kubectl_manifest" "cd-trigger-create" {
|
|||||||
labels: ${jsonencode(local.create-labels)}
|
labels: ${jsonencode(local.create-labels)}
|
||||||
spec:
|
spec:
|
||||||
bindings:
|
bindings:
|
||||||
- name: gitrepositoryname
|
- name: artifactory-url
|
||||||
value: $(body.repository.name)
|
value: "$(extensions.artifactory-url)"
|
||||||
- name: deployurl
|
- name: project-name
|
||||||
value: $(extensions.deploy-url)
|
value: "$(extensions.project-name)"
|
||||||
|
- name: project-path
|
||||||
|
value: "$(extensions.project-path)"
|
||||||
|
- name: git-repository-url
|
||||||
|
value: "$(extensions.git-repository-url)"
|
||||||
|
- name: deploy-url
|
||||||
|
value: $(extensions.deploy-url)
|
||||||
template:
|
template:
|
||||||
spec:
|
spec:
|
||||||
params:
|
params:
|
||||||
- name: gitrepositoryname
|
- name: artifactory-url
|
||||||
|
description: The url of the current artifactory
|
||||||
|
- name: project-name
|
||||||
description: The git repository name
|
description: The git repository name
|
||||||
- name: deployurl
|
- name: project-path
|
||||||
description: The git url for the deploy repository
|
description: The path of the current project
|
||||||
|
- name: git-repository-url
|
||||||
|
description: The git repository url
|
||||||
|
- name: deploy-url
|
||||||
|
description: The git repository url for the deploy project
|
||||||
resourcetemplates:
|
resourcetemplates:
|
||||||
- apiVersion: tekton.dev/v1beta1
|
- apiVersion: tekton.dev/v1beta1
|
||||||
kind: PipelineRun
|
kind: TaskRun
|
||||||
metadata:
|
metadata:
|
||||||
generateName: $(tt.params.gitrepositoryname)-create-
|
generateName: auto-cd-create-$(tt.params.project-name)-
|
||||||
annotations:
|
annotations:
|
||||||
"mayfly.cloud.namecheap.com/expire": "336h" # 2 weeks
|
"mayfly.cloud.namecheap.com/expire": "336h" # 2 weeks
|
||||||
spec:
|
spec:
|
||||||
pipelineRef:
|
taskRef:
|
||||||
name: "${var.instance}-${var.component}-auto-create"
|
name: "auto-ci-create"
|
||||||
params:
|
params:
|
||||||
|
- name: artifactory-url
|
||||||
|
value: $(tt.params.artifactory-url)
|
||||||
- name: project-name
|
- name: project-name
|
||||||
value: $(tt.params.gitrepositoryname)
|
value: $(tt.params.project-name)
|
||||||
|
- name: project-path
|
||||||
|
value: $(tt.params.project-path)
|
||||||
|
- name: git-url
|
||||||
|
value: $(tt.params.git-repository-url)
|
||||||
- name: deploy-url
|
- name: deploy-url
|
||||||
value: $(tt.params.deployurl)
|
value: $(tt.params.deploy-url)
|
||||||
workspaces:
|
workspaces:
|
||||||
- name: source
|
- name: source
|
||||||
volumeClaimTemplate:
|
persistentVolumeClaim:
|
||||||
metadata:
|
claimName: source
|
||||||
annotations:
|
subPath: "$(extensions.git-revision)"
|
||||||
"mayfly.cloud.namecheap.com/expire": "2h"
|
- name: dockerconfig
|
||||||
spec:
|
secret:
|
||||||
accessModes:
|
secretName: gitea-docker
|
||||||
- ReadWriteOnce
|
items:
|
||||||
resources:
|
- key: ".dockerconfigjson"
|
||||||
requests:
|
path: "config.json"
|
||||||
storage: 1Gi
|
- name: sslcertdir
|
||||||
|
secret:
|
||||||
|
secretName: gitea
|
||||||
|
items:
|
||||||
|
- key: "ca.crt"
|
||||||
|
path: "ca.crt"
|
||||||
- name: ssh
|
- name: ssh
|
||||||
secret:
|
secret:
|
||||||
secretName: ssh-credentials
|
secretName: ssh-credentials
|
||||||
@@ -83,44 +106,67 @@ resource "kubectl_manifest" "cd-trigger-activate" {
|
|||||||
labels: ${jsonencode(local.activate-labels)}
|
labels: ${jsonencode(local.activate-labels)}
|
||||||
spec:
|
spec:
|
||||||
bindings:
|
bindings:
|
||||||
- name: gitrepositoryname
|
- name: artifactory-url
|
||||||
value: $(body.repository.name)
|
value: "$(extensions.artifactory-url)"
|
||||||
- name: deployurl
|
- name: project-name
|
||||||
value: $(extensions.deploy-url)
|
value: "$(extensions.project-name)"
|
||||||
|
- name: project-path
|
||||||
|
value: "$(extensions.project-path)"
|
||||||
|
- name: git-repository-url
|
||||||
|
value: "$(extensions.git-repository-url)"
|
||||||
|
- name: deploy-url
|
||||||
|
value: $(extensions.deploy-url)
|
||||||
template:
|
template:
|
||||||
spec:
|
spec:
|
||||||
params:
|
params:
|
||||||
- name: gitrepositoryname
|
- name: artifactory-url
|
||||||
|
description: The url of the current artifactory
|
||||||
|
- name: project-name
|
||||||
description: The git repository name
|
description: The git repository name
|
||||||
- name: deployurl
|
- name: project-path
|
||||||
description: The git url for the deploy repository
|
description: The path of the current project
|
||||||
|
- name: git-repository-url
|
||||||
|
description: The git repository url
|
||||||
|
- name: deploy-url
|
||||||
|
description: The git repository url for the deploy project
|
||||||
resourcetemplates:
|
resourcetemplates:
|
||||||
- apiVersion: tekton.dev/v1beta1
|
- apiVersion: tekton.dev/v1beta1
|
||||||
kind: PipelineRun
|
kind: TaskRun
|
||||||
metadata:
|
metadata:
|
||||||
generateName: $(tt.params.gitrepositoryname)-activate-
|
generateName: auto-cd-activate-$(tt.params.project-name)-
|
||||||
annotations:
|
annotations:
|
||||||
"mayfly.cloud.namecheap.com/expire": "336h" # 2 weeks
|
"mayfly.cloud.namecheap.com/expire": "336h" # 2 weeks
|
||||||
spec:
|
spec:
|
||||||
pipelineRef:
|
taskRef:
|
||||||
name: "${var.instance}-${var.component}-auto-activate"
|
name: "auto-ci-activate"
|
||||||
params:
|
params:
|
||||||
|
- name: artifactory-url
|
||||||
|
value: $(tt.params.artifactory-url)
|
||||||
- name: project-name
|
- name: project-name
|
||||||
value: $(tt.params.gitrepositoryname)
|
value: $(tt.params.project-name)
|
||||||
|
- name: project-path
|
||||||
|
value: $(tt.params.project-path)
|
||||||
|
- name: git-url
|
||||||
|
value: $(tt.params.git-repository-url)
|
||||||
- name: deploy-url
|
- name: deploy-url
|
||||||
value: $(tt.params.deployurl)
|
value: $(tt.params.deploy-url)
|
||||||
workspaces:
|
workspaces:
|
||||||
- name: source
|
- name: source
|
||||||
volumeClaimTemplate:
|
persistentVolumeClaim:
|
||||||
metadata:
|
claimName: source
|
||||||
annotations:
|
subPath: "$(extensions.git-revision)"
|
||||||
"mayfly.cloud.namecheap.com/expire": "2h"
|
- name: dockerconfig
|
||||||
spec:
|
secret:
|
||||||
accessModes:
|
secretName: gitea-docker
|
||||||
- ReadWriteOnce
|
items:
|
||||||
resources:
|
- key: ".dockerconfigjson"
|
||||||
requests:
|
path: "config.json"
|
||||||
storage: 1Gi
|
- name: sslcertdir
|
||||||
|
secret:
|
||||||
|
secretName: gitea
|
||||||
|
items:
|
||||||
|
- key: "ca.crt"
|
||||||
|
path: "ca.crt"
|
||||||
- name: ssh
|
- name: ssh
|
||||||
secret:
|
secret:
|
||||||
secretName: ssh-credentials
|
secretName: ssh-credentials
|
||||||
@@ -145,44 +191,67 @@ resource "kubectl_manifest" "ci-trigger-delete" {
|
|||||||
labels: ${jsonencode(local.delete-labels)}
|
labels: ${jsonencode(local.delete-labels)}
|
||||||
spec:
|
spec:
|
||||||
bindings:
|
bindings:
|
||||||
- name: gitrepositoryname
|
- name: artifactory-url
|
||||||
value: $(body.repository.name)
|
value: "$(extensions.artifactory-url)"
|
||||||
- name: deployurl
|
- name: project-name
|
||||||
value: $(extensions.deploy-url)
|
value: "$(extensions.project-name)"
|
||||||
|
- name: project-path
|
||||||
|
value: "$(extensions.project-path)"
|
||||||
|
- name: git-repository-url
|
||||||
|
value: "$(extensions.git-repository-url)"
|
||||||
|
- name: deploy-url
|
||||||
|
value: $(extensions.deploy-url)
|
||||||
template:
|
template:
|
||||||
spec:
|
spec:
|
||||||
params:
|
params:
|
||||||
- name: gitrepositoryname
|
- name: artifactory-url
|
||||||
|
description: The url of the current artifactory
|
||||||
|
- name: project-name
|
||||||
description: The git repository name
|
description: The git repository name
|
||||||
- name: deployurl
|
- name: project-path
|
||||||
description: The git url for the deploy repository
|
description: The path of the current project
|
||||||
|
- name: git-repository-url
|
||||||
|
description: The git repository url
|
||||||
|
- name: deploy-url
|
||||||
|
description: The git repository url for the deploy project
|
||||||
resourcetemplates:
|
resourcetemplates:
|
||||||
- apiVersion: tekton.dev/v1beta1
|
- apiVersion: tekton.dev/v1beta1
|
||||||
kind: PipelineRun
|
kind: TaskRun
|
||||||
metadata:
|
metadata:
|
||||||
generateName: $(tt.params.gitrepositoryname)-delete-
|
generateName: auto-cd-delete-$(tt.params.project-name)-
|
||||||
annotations:
|
annotations:
|
||||||
"mayfly.cloud.namecheap.com/expire": "1440h" # 2 months
|
"mayfly.cloud.namecheap.com/expire": "336h" # 2 weeks
|
||||||
spec:
|
spec:
|
||||||
pipelineRef:
|
taskRef:
|
||||||
name: "${var.instance}-${var.component}-delete"
|
name: "auto-ci-delete"
|
||||||
params:
|
params:
|
||||||
|
- name: artifactory-url
|
||||||
|
value: $(tt.params.artifactory-url)
|
||||||
- name: project-name
|
- name: project-name
|
||||||
value: $(tt.params.gitrepositoryname)
|
value: $(tt.params.project-name)
|
||||||
|
- name: project-path
|
||||||
|
value: $(tt.params.project-path)
|
||||||
|
- name: git-url
|
||||||
|
value: $(tt.params.git-repository-url)
|
||||||
- name: deploy-url
|
- name: deploy-url
|
||||||
value: $(tt.params.deployurl)
|
value: $(tt.params.deploy-url)
|
||||||
workspaces:
|
workspaces:
|
||||||
- name: source
|
- name: source
|
||||||
volumeClaimTemplate:
|
persistentVolumeClaim:
|
||||||
metadata:
|
claimName: source
|
||||||
annotations:
|
subPath: "$(extensions.git-revision)"
|
||||||
"mayfly.cloud.namecheap.com/expire": "2h"
|
- name: dockerconfig
|
||||||
spec:
|
secret:
|
||||||
accessModes:
|
secretName: gitea-docker
|
||||||
- ReadWriteOnce
|
items:
|
||||||
resources:
|
- key: ".dockerconfigjson"
|
||||||
requests:
|
path: "config.json"
|
||||||
storage: 1Gi
|
- name: sslcertdir
|
||||||
|
secret:
|
||||||
|
secretName: gitea
|
||||||
|
items:
|
||||||
|
- key: "ca.crt"
|
||||||
|
path: "ca.crt"
|
||||||
- name: ssh
|
- name: ssh
|
||||||
secret:
|
secret:
|
||||||
secretName: ssh-credentials
|
secretName: ssh-credentials
|
||||||
|
|||||||
@@ -28,4 +28,40 @@ data "kustomization_overlay" "data" {
|
|||||||
value: http
|
value: http
|
||||||
EOF
|
EOF
|
||||||
}
|
}
|
||||||
|
patches {
|
||||||
|
target {
|
||||||
|
kind = "Task"
|
||||||
|
name = "auto-ci-create"
|
||||||
|
}
|
||||||
|
patch = <<-EOF
|
||||||
|
- op: replace
|
||||||
|
path: /spec/params/1/default
|
||||||
|
value: ${var.issuer}
|
||||||
|
- op: add
|
||||||
|
path: /spec/params/2/default
|
||||||
|
value: ${var.domain_name}
|
||||||
|
EOF
|
||||||
|
}
|
||||||
|
patches {
|
||||||
|
target {
|
||||||
|
kind = "Pipeline"
|
||||||
|
name = "auto-ci-push"
|
||||||
|
}
|
||||||
|
patch = <<-EOF
|
||||||
|
- op: replace
|
||||||
|
path: /spec/params/1/default
|
||||||
|
value: https://okd.${var.domain}
|
||||||
|
EOF
|
||||||
|
}
|
||||||
|
patches {
|
||||||
|
target {
|
||||||
|
kind = "Pipeline"
|
||||||
|
name = "auto-ci-tag"
|
||||||
|
}
|
||||||
|
patch = <<-EOF
|
||||||
|
- op: replace
|
||||||
|
path: /spec/params/1/default
|
||||||
|
value: https://okd.${var.domain}
|
||||||
|
EOF
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -21,6 +21,16 @@ options:
|
|||||||
examples:
|
examples:
|
||||||
- your-company
|
- your-company
|
||||||
type: string
|
type: string
|
||||||
|
domain_name:
|
||||||
|
default: your_company.com
|
||||||
|
examples:
|
||||||
|
- your_company.com
|
||||||
|
type: string
|
||||||
|
issuer:
|
||||||
|
default: letsencrypt-prod
|
||||||
|
examples:
|
||||||
|
- letsencrypt-prod
|
||||||
|
type: string
|
||||||
organization:
|
organization:
|
||||||
default: your-org
|
default: your-org
|
||||||
examples:
|
examples:
|
||||||
|
|||||||
@@ -13,6 +13,9 @@ spec:
|
|||||||
default: docker.io
|
default: docker.io
|
||||||
description: The url of the current artifactory
|
description: The url of the current artifactory
|
||||||
type: string
|
type: string
|
||||||
|
- name: okd-url
|
||||||
|
default: https://okd.media.rennes.home
|
||||||
|
type: string
|
||||||
- name: project-name
|
- name: project-name
|
||||||
description: The name of the current project
|
description: The name of the current project
|
||||||
type: string
|
type: string
|
||||||
@@ -43,7 +46,7 @@ spec:
|
|||||||
- name: SHA
|
- name: SHA
|
||||||
value: $(params.git-revision)
|
value: $(params.git-revision)
|
||||||
- name: TARGET_URL
|
- name: TARGET_URL
|
||||||
value: "https://okd.media.rennes.home/k8s/ns/$(context.pipelineRun.namespace)/tekton.dev~v1~PipelineRun/$(context.pipelineRun.name)"
|
value: "$(params.okd-url)/k8s/ns/$(context.pipelineRun.namespace)/tekton.dev~v1~PipelineRun/$(context.pipelineRun.name)"
|
||||||
- name: DESCRIPTION
|
- name: DESCRIPTION
|
||||||
value: "auto-ci-push"
|
value: "auto-ci-push"
|
||||||
- name: STATE
|
- name: STATE
|
||||||
@@ -59,7 +62,7 @@ spec:
|
|||||||
- name: SHA
|
- name: SHA
|
||||||
value: $(params.git-revision)
|
value: $(params.git-revision)
|
||||||
- name: TARGET_URL
|
- name: TARGET_URL
|
||||||
value: "https://okd.media.rennes.home/k8s/ns/$(context.pipelineRun.namespace)/tekton.dev~v1~PipelineRun/$(context.pipelineRun.name)"
|
value: "$(params.okd-url)/k8s/ns/$(context.pipelineRun.namespace)/tekton.dev~v1~PipelineRun/$(context.pipelineRun.name)"
|
||||||
- name: DESCRIPTION
|
- name: DESCRIPTION
|
||||||
value: "auto-ci-push"
|
value: "auto-ci-push"
|
||||||
- name: STATE
|
- name: STATE
|
||||||
@@ -75,7 +78,7 @@ spec:
|
|||||||
- name: SHA
|
- name: SHA
|
||||||
value: $(params.git-revision)
|
value: $(params.git-revision)
|
||||||
- name: TARGET_URL
|
- name: TARGET_URL
|
||||||
value: "https://okd.media.rennes.home/k8s/ns/$(context.pipelineRun.namespace)/tekton.dev~v1~PipelineRun/$(context.pipelineRun.name)"
|
value: "$(params.okd-url)/k8s/ns/$(context.pipelineRun.namespace)/tekton.dev~v1~PipelineRun/$(context.pipelineRun.name)"
|
||||||
- name: DESCRIPTION
|
- name: DESCRIPTION
|
||||||
value: "auto-ci-push"
|
value: "auto-ci-push"
|
||||||
- name: STATE
|
- name: STATE
|
||||||
@@ -91,7 +94,7 @@ spec:
|
|||||||
- name: SHA
|
- name: SHA
|
||||||
value: $(params.git-revision)
|
value: $(params.git-revision)
|
||||||
- name: TARGET_URL
|
- name: TARGET_URL
|
||||||
value: "https://okd.media.rennes.home/k8s/ns/$(context.pipelineRun.namespace)/tekton.dev~v1~PipelineRun/$(context.pipelineRun.name)"
|
value: "$(params.okd-url)/k8s/ns/$(context.pipelineRun.namespace)/tekton.dev~v1~PipelineRun/$(context.pipelineRun.name)"
|
||||||
- name: DESCRIPTION
|
- name: DESCRIPTION
|
||||||
value: "auto-ci-push"
|
value: "auto-ci-push"
|
||||||
- name: STATE
|
- name: STATE
|
||||||
|
|||||||
@@ -13,6 +13,9 @@ spec:
|
|||||||
default: docker.io
|
default: docker.io
|
||||||
description: The url of the current artifactory
|
description: The url of the current artifactory
|
||||||
type: string
|
type: string
|
||||||
|
- name: okd-url
|
||||||
|
default: https://okd.media.rennes.home
|
||||||
|
type: string
|
||||||
- name: project-name
|
- name: project-name
|
||||||
description: The name of the current project
|
description: The name of the current project
|
||||||
type: string
|
type: string
|
||||||
@@ -40,9 +43,9 @@ spec:
|
|||||||
- name: SHA
|
- name: SHA
|
||||||
value: $(params.git-revision)
|
value: $(params.git-revision)
|
||||||
- name: TARGET_URL
|
- name: TARGET_URL
|
||||||
value: "https://okd.media.rennes.home/k8s/ns/$(context.pipelineRun.namespace)/tekton.dev~v1~PipelineRun/$(context.pipelineRun.name)"
|
value: "$(params.okd-url)/k8s/ns/$(context.pipelineRun.namespace)/tekton.dev~v1~PipelineRun/$(context.pipelineRun.name)"
|
||||||
- name: DESCRIPTION
|
- name: DESCRIPTION
|
||||||
value: "auto-ci-push"
|
value: "auto-ci-tag"
|
||||||
- name: STATE
|
- name: STATE
|
||||||
value: "success"
|
value: "success"
|
||||||
taskRef:
|
taskRef:
|
||||||
@@ -56,9 +59,9 @@ spec:
|
|||||||
- name: SHA
|
- name: SHA
|
||||||
value: $(params.git-revision)
|
value: $(params.git-revision)
|
||||||
- name: TARGET_URL
|
- name: TARGET_URL
|
||||||
value: "https://okd.media.rennes.home/k8s/ns/$(context.pipelineRun.namespace)/tekton.dev~v1~PipelineRun/$(context.pipelineRun.name)"
|
value: "$(params.okd-url)/k8s/ns/$(context.pipelineRun.namespace)/tekton.dev~v1~PipelineRun/$(context.pipelineRun.name)"
|
||||||
- name: DESCRIPTION
|
- name: DESCRIPTION
|
||||||
value: "auto-ci-push"
|
value: "auto-ci-tag"
|
||||||
- name: STATE
|
- name: STATE
|
||||||
value: "warning"
|
value: "warning"
|
||||||
taskRef:
|
taskRef:
|
||||||
@@ -72,9 +75,9 @@ spec:
|
|||||||
- name: SHA
|
- name: SHA
|
||||||
value: $(params.git-revision)
|
value: $(params.git-revision)
|
||||||
- name: TARGET_URL
|
- name: TARGET_URL
|
||||||
value: "https://okd.media.rennes.home/k8s/ns/$(context.pipelineRun.namespace)/tekton.dev~v1~PipelineRun/$(context.pipelineRun.name)"
|
value: "$(params.okd-url)/k8s/ns/$(context.pipelineRun.namespace)/tekton.dev~v1~PipelineRun/$(context.pipelineRun.name)"
|
||||||
- name: DESCRIPTION
|
- name: DESCRIPTION
|
||||||
value: "auto-ci-push"
|
value: "auto-ci-tag"
|
||||||
- name: STATE
|
- name: STATE
|
||||||
value: "error"
|
value: "error"
|
||||||
taskRef:
|
taskRef:
|
||||||
@@ -88,9 +91,9 @@ spec:
|
|||||||
- name: SHA
|
- name: SHA
|
||||||
value: $(params.git-revision)
|
value: $(params.git-revision)
|
||||||
- name: TARGET_URL
|
- name: TARGET_URL
|
||||||
value: "https://okd.media.rennes.home/k8s/ns/$(context.pipelineRun.namespace)/tekton.dev~v1~PipelineRun/$(context.pipelineRun.name)"
|
value: "$(params.okd-url)/k8s/ns/$(context.pipelineRun.namespace)/tekton.dev~v1~PipelineRun/$(context.pipelineRun.name)"
|
||||||
- name: DESCRIPTION
|
- name: DESCRIPTION
|
||||||
value: "auto-ci-push"
|
value: "auto-ci-tag"
|
||||||
- name: STATE
|
- name: STATE
|
||||||
value: "pending"
|
value: "pending"
|
||||||
taskRef:
|
taskRef:
|
||||||
@@ -101,8 +104,6 @@ spec:
|
|||||||
value: $(params.git-url)
|
value: $(params.git-url)
|
||||||
- name: revision
|
- name: revision
|
||||||
value: $(params.git-revision)
|
value: $(params.git-revision)
|
||||||
- name: depth
|
|
||||||
value: 0
|
|
||||||
taskRef:
|
taskRef:
|
||||||
name: git-clone
|
name: git-clone
|
||||||
workspaces:
|
workspaces:
|
||||||
@@ -110,17 +111,8 @@ spec:
|
|||||||
workspace: source
|
workspace: source
|
||||||
- name: ssh-directory
|
- name: ssh-directory
|
||||||
workspace: ssh
|
workspace: ssh
|
||||||
- name: git-version
|
|
||||||
runAfter: [git-clone]
|
|
||||||
params:
|
|
||||||
- name: branch
|
|
||||||
value: $(params.branch-name)
|
|
||||||
taskRef:
|
|
||||||
name: git-version
|
|
||||||
workspaces:
|
|
||||||
- name: source
|
|
||||||
- name: detect-stages
|
- name: detect-stages
|
||||||
runAfter: [git-version]
|
runAfter: [git-clone]
|
||||||
params:
|
params:
|
||||||
- name: artifactory-url
|
- name: artifactory-url
|
||||||
value: $(params.artifactory-url)
|
value: $(params.artifactory-url)
|
||||||
@@ -129,7 +121,7 @@ spec:
|
|||||||
- name: project-path
|
- name: project-path
|
||||||
value: $(params.project-path)
|
value: $(params.project-path)
|
||||||
- name: image-version
|
- name: image-version
|
||||||
value: "$(params.branch-name)-$(tasks.git-version.results.packageVersion)"
|
value: "$(params.tag-name)"
|
||||||
taskRef:
|
taskRef:
|
||||||
name: auto-ci-detector
|
name: auto-ci-detector
|
||||||
workspaces:
|
workspaces:
|
||||||
|
|||||||
@@ -0,0 +1,97 @@
|
|||||||
|
apiVersion: tekton.dev/v1
|
||||||
|
kind: Task
|
||||||
|
metadata:
|
||||||
|
name: auto-ci-create
|
||||||
|
spec:
|
||||||
|
params:
|
||||||
|
- name: toolbox-image
|
||||||
|
default: sebt3/basic-toolbox-image:1.30.0
|
||||||
|
description: The name of the toolbox image
|
||||||
|
type: string
|
||||||
|
- name: issuer-name
|
||||||
|
default: letsencrypt-prod
|
||||||
|
type: string
|
||||||
|
- name: domain-name
|
||||||
|
type: string
|
||||||
|
- name: artifactory-url
|
||||||
|
description: The url of the current artifactory
|
||||||
|
- name: project-name
|
||||||
|
description: The git repository name
|
||||||
|
- name: project-path
|
||||||
|
description: The path of the current project
|
||||||
|
- name: git-repository-url
|
||||||
|
description: The git repository url
|
||||||
|
- name: deploy-url
|
||||||
|
description: The git repository url for the deploy project
|
||||||
|
steps:
|
||||||
|
- name: cleanup
|
||||||
|
image: $(params.toolbox-image)
|
||||||
|
workingDir: $(workspaces.source.path)
|
||||||
|
env:
|
||||||
|
- name: ARTIFACTORY_URL
|
||||||
|
value: $(params.artifactory-url)
|
||||||
|
- name: PROJECT_NAME
|
||||||
|
value: $(params.project-name)
|
||||||
|
- name: DOMAIN_NAME
|
||||||
|
value: $(params.domain-name)
|
||||||
|
- name: ISSUER_NAME
|
||||||
|
value: $(params.issuer-name)
|
||||||
|
- name: PROJECT_PATH
|
||||||
|
value: $(params.project-path)
|
||||||
|
- name: GIT_REPOSITORY_URL
|
||||||
|
value: $(params.git-repository-url)
|
||||||
|
- name: DEPLOY_URL
|
||||||
|
value: $(params.deploy-url)
|
||||||
|
script: |-
|
||||||
|
#!/usr/bin/env ash
|
||||||
|
git clone "$(params.deploy-url)" --depth 1 .
|
||||||
|
mkdir -p "projects/$(params.project-name)" bases/project bases/install bases/deploy
|
||||||
|
added=0
|
||||||
|
copy() {
|
||||||
|
local src=/etc/templates/$1 dest=$2
|
||||||
|
if [ ! -f $dest ];then
|
||||||
|
cp "$src" "$dest"
|
||||||
|
git add "$dest"
|
||||||
|
added=$(($added+1))
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
template() {
|
||||||
|
local src=/etc/templates/$1 dest=$2
|
||||||
|
if [ ! -f $dest ];then
|
||||||
|
envsubst <"$src" >"$dest"
|
||||||
|
git add "$dest"
|
||||||
|
added=$(($added+1))
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
template base-update.yaml.tmpl bases/project/base-update.yaml
|
||||||
|
copy base-repo.yaml bases/project/repo.yaml
|
||||||
|
copy base-cert.yaml bases/project/cert.yaml
|
||||||
|
copy base-ingress.yaml bases/project/ingress.yaml
|
||||||
|
copy base-policy.yaml bases/project/policy.yaml
|
||||||
|
copy base-deploy.yaml bases/project/deploy.yaml
|
||||||
|
copy base-secret.yaml bases/project/secret.yaml
|
||||||
|
copy base-config.yaml bases/project/config.yaml
|
||||||
|
copy base-service.yaml bases/project/service.yaml
|
||||||
|
copy base-kusto.yaml bases/project/kustomization.yaml
|
||||||
|
copy install-install.yaml bases/install/install.yaml
|
||||||
|
copy install-kusto.yaml bases/install/kustomization.yaml
|
||||||
|
copy deploy-kusto.yaml bases/deploy/kustomization.yaml
|
||||||
|
template deploy-repo.yaml.tmpl bases/deploy/repo.yaml
|
||||||
|
template project-kusto.yaml.tmpl "projects/$(params.project-name)/kustomization.yaml"
|
||||||
|
volumeMounts:
|
||||||
|
- mountPath: /etc/templates
|
||||||
|
name: templates
|
||||||
|
volumes:
|
||||||
|
- name: templates
|
||||||
|
configmap:
|
||||||
|
name: auto-cd-create-templates
|
||||||
|
workspaces:
|
||||||
|
- name: source
|
||||||
|
mountPath: /data
|
||||||
|
- description: |
|
||||||
|
A .ssh directory with private key, known_hosts, config, etc. Copied to
|
||||||
|
the user's home before git commands are executed. Used to authenticate
|
||||||
|
with the git remote when performing the clone. Binding a Secret to this
|
||||||
|
Workspace is strongly recommended over other volume types.
|
||||||
|
name: ssh-directory
|
||||||
|
optional: true
|
||||||
@@ -0,0 +1,274 @@
|
|||||||
|
apiVersion: v1
|
||||||
|
kind: ConfigMap
|
||||||
|
metadata:
|
||||||
|
name: auto-cd-create-templates
|
||||||
|
data:
|
||||||
|
base-kusto.yaml: |-
|
||||||
|
---
|
||||||
|
apiVersion: kustomize.config.k8s.io/v1beta1
|
||||||
|
kind: Kustomization
|
||||||
|
|
||||||
|
resources:
|
||||||
|
- cert.yaml
|
||||||
|
- ingress.yaml
|
||||||
|
- deploy.yaml
|
||||||
|
- service.yaml
|
||||||
|
- config.yaml
|
||||||
|
- secret.yaml
|
||||||
|
- repo.yaml
|
||||||
|
- policy.yaml
|
||||||
|
- update.yaml
|
||||||
|
- ../install
|
||||||
|
base-update.yaml.tmpl: |-
|
||||||
|
---
|
||||||
|
apiVersion: image.toolkit.fluxcd.io/v1beta1
|
||||||
|
kind: ImageUpdateAutomation
|
||||||
|
metadata:
|
||||||
|
name: update
|
||||||
|
spec:
|
||||||
|
interval: 5m
|
||||||
|
sourceRef:
|
||||||
|
kind: GitRepository
|
||||||
|
name: deploy-git
|
||||||
|
git:
|
||||||
|
checkout:
|
||||||
|
ref:
|
||||||
|
branch: main
|
||||||
|
commit:
|
||||||
|
author:
|
||||||
|
email: fluxcd.automation@${ARTIFACTORY_URL}
|
||||||
|
name: fluxcd
|
||||||
|
messageTemplate: |
|
||||||
|
Automated image update: {{ .AutomationObject }}
|
||||||
|
|
||||||
|
Files:
|
||||||
|
{{ range $filename, $_ := .Updated.Files -}}
|
||||||
|
- {{ $filename }}
|
||||||
|
{{ end -}}
|
||||||
|
|
||||||
|
Objects:
|
||||||
|
{{ range $resource, $_ := .Updated.Objects -}}
|
||||||
|
- {{ $resource.Kind }} {{ $resource.Name }}
|
||||||
|
{{ end -}}
|
||||||
|
|
||||||
|
Images:
|
||||||
|
{{ range .Updated.Images -}}
|
||||||
|
- {{.}}
|
||||||
|
{{ end -}}
|
||||||
|
{{- $ChangeId := .AutomationObject -}}
|
||||||
|
{{- $ChangeId = printf "%s-%s" $ChangeId ( .Updated.Files | toString ) -}}
|
||||||
|
{{- $ChangeId = printf "%s-%s" $ChangeId ( .Updated.Objects | toString ) -}}
|
||||||
|
{{- $ChangeId = printf "%s-%s" $ChangeId ( .Updated.Images | toString ) }}
|
||||||
|
Change-Name: {{ $ChangeId }}
|
||||||
|
Change-Id: {{ printf "I%s" ( sha256sum $ChangeId | trunc 40 ) }}
|
||||||
|
push:
|
||||||
|
branch: main
|
||||||
|
update:
|
||||||
|
strategy: Setters
|
||||||
|
base-repo.yaml: |-
|
||||||
|
---
|
||||||
|
apiVersion: image.toolkit.fluxcd.io/v1beta2
|
||||||
|
kind: ImageRepository
|
||||||
|
metadata:
|
||||||
|
name: repo
|
||||||
|
spec:
|
||||||
|
interval: 5m
|
||||||
|
provider: generic
|
||||||
|
secretRef:
|
||||||
|
name: gitea
|
||||||
|
base-cert.yaml: |-
|
||||||
|
---
|
||||||
|
apiVersion: cert-manager.io/v1
|
||||||
|
kind: Certificate
|
||||||
|
metadata:
|
||||||
|
name: web
|
||||||
|
spec:
|
||||||
|
issuerRef:
|
||||||
|
group: cert-manager.io
|
||||||
|
kind: ClusterIssuer
|
||||||
|
base-ingress.yaml: |-
|
||||||
|
---
|
||||||
|
apiVersion: networking.k8s.io/v1
|
||||||
|
kind: Ingress
|
||||||
|
metadata:
|
||||||
|
name: web
|
||||||
|
spec:
|
||||||
|
rules:
|
||||||
|
- http:
|
||||||
|
paths:
|
||||||
|
- backend:
|
||||||
|
service:
|
||||||
|
name: svc
|
||||||
|
port:
|
||||||
|
number: 80
|
||||||
|
path: /
|
||||||
|
pathType: Prefix
|
||||||
|
base-policy.yaml: |-
|
||||||
|
---
|
||||||
|
apiVersion: image.toolkit.fluxcd.io/v1beta2
|
||||||
|
kind: ImagePolicy
|
||||||
|
metadata:
|
||||||
|
name: policy
|
||||||
|
spec:
|
||||||
|
imageRepositoryRef:
|
||||||
|
base-deploy.yaml: |-
|
||||||
|
---
|
||||||
|
apiVersion: apps/v1
|
||||||
|
kind: Deployment
|
||||||
|
metadata:
|
||||||
|
name: app
|
||||||
|
spec:
|
||||||
|
replicas: 1
|
||||||
|
selector:
|
||||||
|
template:
|
||||||
|
spec:
|
||||||
|
securityContext:
|
||||||
|
runAsGroup: 1000
|
||||||
|
runAsUser: 1000
|
||||||
|
fsGroup: 1000
|
||||||
|
containers:
|
||||||
|
- name: app
|
||||||
|
image: appli
|
||||||
|
imagePullPolicy: IfNotPresent
|
||||||
|
envFrom:
|
||||||
|
- configMapRef:
|
||||||
|
name: "config"
|
||||||
|
- secretRef:
|
||||||
|
name: "secret"
|
||||||
|
base-secret.yaml: |-
|
||||||
|
---
|
||||||
|
apiVersion: v1
|
||||||
|
kind: Secret
|
||||||
|
metadata:
|
||||||
|
name: "secret"
|
||||||
|
annotations:
|
||||||
|
gramo.solidite.fr/no-parent: "true"
|
||||||
|
labels:
|
||||||
|
k8up.io/backup: "true"
|
||||||
|
type: Opaque
|
||||||
|
base-config.yaml: |-
|
||||||
|
---
|
||||||
|
apiVersion: v1
|
||||||
|
kind: ConfigMap
|
||||||
|
metadata:
|
||||||
|
name: "config"
|
||||||
|
labels:
|
||||||
|
app: holdup
|
||||||
|
labels:
|
||||||
|
k8up.io/backup: "true"
|
||||||
|
data:
|
||||||
|
base-service.yaml: |-
|
||||||
|
---
|
||||||
|
apiVersion: v1
|
||||||
|
kind: Service
|
||||||
|
metadata:
|
||||||
|
name: svc
|
||||||
|
spec:
|
||||||
|
ports:
|
||||||
|
- name: app
|
||||||
|
port: 80
|
||||||
|
protocol: TCP
|
||||||
|
targetPort: app
|
||||||
|
type: ClusterIP
|
||||||
|
install-install.yaml: |-
|
||||||
|
---
|
||||||
|
apiVersion: kustomize.toolkit.fluxcd.io/v1
|
||||||
|
kind: Kustomization
|
||||||
|
metadata:
|
||||||
|
name: install
|
||||||
|
spec:
|
||||||
|
interval: 5m
|
||||||
|
sourceRef:
|
||||||
|
kind: GitRepository
|
||||||
|
name: deploy-git
|
||||||
|
prune: true
|
||||||
|
timeout: 1m
|
||||||
|
install-kusto.yaml: |-
|
||||||
|
---
|
||||||
|
apiVersion: kustomize.config.k8s.io/v1beta1
|
||||||
|
kind: Kustomization
|
||||||
|
|
||||||
|
resources:
|
||||||
|
- install.yaml
|
||||||
|
deploy-repo.yaml.tmpl: |-
|
||||||
|
---
|
||||||
|
apiVersion: source.toolkit.fluxcd.io/v1
|
||||||
|
kind: GitRepository
|
||||||
|
metadata:
|
||||||
|
name: git
|
||||||
|
spec:
|
||||||
|
interval: 5m0s
|
||||||
|
url: ${DEPLOY_URL}
|
||||||
|
ref:
|
||||||
|
branch: main
|
||||||
|
secretRef:
|
||||||
|
name: ssh-credentials
|
||||||
|
deploy-kusto.yaml: |-
|
||||||
|
---
|
||||||
|
apiVersion: kustomize.config.k8s.io/v1beta1
|
||||||
|
kind: Kustomization
|
||||||
|
|
||||||
|
namePrefix: deploy-
|
||||||
|
resources:
|
||||||
|
- repo-git.yaml
|
||||||
|
- ../install
|
||||||
|
project-kusto.yaml.tmpl: |-
|
||||||
|
---
|
||||||
|
apiVersion: kustomize.config.k8s.io/v1beta1
|
||||||
|
kind: Kustomization
|
||||||
|
|
||||||
|
namePrefix: ${PROJECT_NAME}-
|
||||||
|
commonLabels:
|
||||||
|
app.kubernetes.io/component: ${PROJECT_NAME}
|
||||||
|
component: ${PROJECT_NAME}
|
||||||
|
|
||||||
|
resources:
|
||||||
|
- ../../bases/project
|
||||||
|
|
||||||
|
patches:
|
||||||
|
- target:
|
||||||
|
kind: ImagePolicy
|
||||||
|
name: policy
|
||||||
|
patch: |-
|
||||||
|
apiVersion: image.toolkit.fluxcd.io/v1beta2
|
||||||
|
kind: ImagePolicy
|
||||||
|
metadata:
|
||||||
|
name: policy
|
||||||
|
spec:
|
||||||
|
imageRepositoryRef:
|
||||||
|
name: ${PROJECT_NAME}-repo
|
||||||
|
- target:
|
||||||
|
kind: ImageRepository
|
||||||
|
name: repo
|
||||||
|
patch: |-
|
||||||
|
apiVersion: image.toolkit.fluxcd.io/v1beta2
|
||||||
|
kind: ImageRepository
|
||||||
|
metadata:
|
||||||
|
name: repo
|
||||||
|
spec:
|
||||||
|
image: ${ARTIFACTORY_URL}/${PROJECT_PATH}
|
||||||
|
- target:
|
||||||
|
kind: Deployment
|
||||||
|
name: app
|
||||||
|
patch: |-
|
||||||
|
apiVersion: apps/v1
|
||||||
|
kind: Deployment
|
||||||
|
metadata:
|
||||||
|
name: app
|
||||||
|
annotations:
|
||||||
|
configmap.reloader.stakater.com/reload: "${PROJECT_NAME}-config"
|
||||||
|
secret.reloader.stakater.com/reload: "${PROJECT_NAME}-secret"
|
||||||
|
spec:
|
||||||
|
selector:
|
||||||
|
template:
|
||||||
|
spec:
|
||||||
|
securityContext:
|
||||||
|
runAsGroup: 1000
|
||||||
|
runAsUser: 1000
|
||||||
|
fsGroup: 1000
|
||||||
|
containers:
|
||||||
|
- name: app
|
||||||
|
ports:
|
||||||
|
- name: app
|
||||||
|
containerPort: 8080
|
||||||
|
protocol: TCP
|
||||||
Reference in New Issue
Block a user