fix
This commit is contained in:
@@ -40,6 +40,43 @@ data "kustomization_overlay" "data" {
|
|||||||
- op: add
|
- op: add
|
||||||
path: /spec/params/2/default
|
path: /spec/params/2/default
|
||||||
value: ${var.domain_name}
|
value: ${var.domain_name}
|
||||||
|
- op: add
|
||||||
|
path: /spec/params/3/default
|
||||||
|
value: ${jsonencode(var.stages)}
|
||||||
|
EOF
|
||||||
|
}
|
||||||
|
patches {
|
||||||
|
target {
|
||||||
|
kind = "Task"
|
||||||
|
name = "auto-ci-activate"
|
||||||
|
}
|
||||||
|
patch = <<-EOF
|
||||||
|
- op: replace
|
||||||
|
path: /spec/params/1/default
|
||||||
|
value: ${var.issuer}
|
||||||
|
- op: add
|
||||||
|
path: /spec/params/2/default
|
||||||
|
value: ${var.domain_name}
|
||||||
|
- op: add
|
||||||
|
path: /spec/params/3/default
|
||||||
|
value: ${jsonencode(var.stages)}
|
||||||
|
EOF
|
||||||
|
}
|
||||||
|
patches {
|
||||||
|
target {
|
||||||
|
kind = "Task"
|
||||||
|
name = "auto-ci-delete"
|
||||||
|
}
|
||||||
|
patch = <<-EOF
|
||||||
|
- op: replace
|
||||||
|
path: /spec/params/1/default
|
||||||
|
value: ${var.issuer}
|
||||||
|
- op: add
|
||||||
|
path: /spec/params/2/default
|
||||||
|
value: ${var.domain_name}
|
||||||
|
- op: add
|
||||||
|
path: /spec/params/3/default
|
||||||
|
value: ${jsonencode(var.stages)}
|
||||||
EOF
|
EOF
|
||||||
}
|
}
|
||||||
patches {
|
patches {
|
||||||
|
|||||||
@@ -4,7 +4,7 @@ kind: Component
|
|||||||
category: share
|
category: share
|
||||||
metadata:
|
metadata:
|
||||||
name: gitea-tekton-org
|
name: gitea-tekton-org
|
||||||
description: null
|
description: Setup tekton-cicd base objects and set the webhook for gitea
|
||||||
options:
|
options:
|
||||||
autoCD:
|
autoCD:
|
||||||
default: true
|
default: true
|
||||||
@@ -36,6 +36,11 @@ options:
|
|||||||
examples:
|
examples:
|
||||||
- your-org
|
- your-org
|
||||||
type: string
|
type: string
|
||||||
|
stages:
|
||||||
|
default: []
|
||||||
|
items:
|
||||||
|
type: string
|
||||||
|
type: array
|
||||||
storage:
|
storage:
|
||||||
default:
|
default:
|
||||||
volume:
|
volume:
|
||||||
|
|||||||
@@ -34,7 +34,7 @@ spec:
|
|||||||
finally:
|
finally:
|
||||||
- name: cleanup
|
- name: cleanup
|
||||||
taskRef:
|
taskRef:
|
||||||
name: auto-ci-cleaup
|
name: auto-ci-cleanup
|
||||||
workspaces:
|
workspaces:
|
||||||
- name: source
|
- name: source
|
||||||
- name: inform-gitea-success
|
- name: inform-gitea-success
|
||||||
|
|||||||
@@ -31,7 +31,7 @@ spec:
|
|||||||
finally:
|
finally:
|
||||||
- name: cleanup
|
- name: cleanup
|
||||||
taskRef:
|
taskRef:
|
||||||
name: auto-ci-cleaup
|
name: auto-ci-cleanup
|
||||||
workspaces:
|
workspaces:
|
||||||
- name: source
|
- name: source
|
||||||
- name: inform-gitea-success
|
- name: inform-gitea-success
|
||||||
|
|||||||
@@ -0,0 +1,77 @@
|
|||||||
|
apiVersion: tekton.dev/v1
|
||||||
|
kind: Task
|
||||||
|
metadata:
|
||||||
|
name: auto-ci-activate
|
||||||
|
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: stages
|
||||||
|
type: array
|
||||||
|
- 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: activate
|
||||||
|
image: $(params.toolbox-image)
|
||||||
|
workingDir: $(workspaces.source.path)
|
||||||
|
args:
|
||||||
|
- $(params.stages)
|
||||||
|
env:
|
||||||
|
- name: ARTIFACTORY_URL
|
||||||
|
value: $(params.artifactory-url)
|
||||||
|
- name: DOMAIN_NAME
|
||||||
|
value: $(params.domain-name)
|
||||||
|
- name: ISSUER_NAME
|
||||||
|
value: $(params.issuer-name)
|
||||||
|
- name: PROJECT_NAME
|
||||||
|
value: $(params.project-name)
|
||||||
|
- name: PROJECT_PATH
|
||||||
|
value: $(params.project-path)
|
||||||
|
- name: GIT_REPOSITORY_URL
|
||||||
|
value: $(params.git-repository-url)
|
||||||
|
- name: DEPLOY_URL
|
||||||
|
value: $(params.deploy-url)
|
||||||
|
- name: TEMPLATE_ROOT
|
||||||
|
value: /etc/templates
|
||||||
|
- name: WORKSPACE_SSH_DIRECTORY_PATH
|
||||||
|
value: $(workspaces.ssh-directory.path)
|
||||||
|
script: |-
|
||||||
|
#!/usr/bin/env bash
|
||||||
|
. ${TEMPLATE_ROOT}/functions.sh
|
||||||
|
git_prepare "$(params.deploy-url)" "Auto CD" "autocd@$(params.domain-name)"
|
||||||
|
install_base
|
||||||
|
create_prj
|
||||||
|
activate_prj
|
||||||
|
git_push "Activating $(params.project-name)"
|
||||||
|
cleanup
|
||||||
|
volumeMounts:
|
||||||
|
- mountPath: /etc/templates
|
||||||
|
name: templates
|
||||||
|
volumes:
|
||||||
|
- name: templates
|
||||||
|
configmap:
|
||||||
|
name: auto-cd-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
|
||||||
@@ -13,7 +13,7 @@ spec:
|
|||||||
image: $(params.toolbox-image)
|
image: $(params.toolbox-image)
|
||||||
workingDir: $(workspaces.source.path)
|
workingDir: $(workspaces.source.path)
|
||||||
script: |-
|
script: |-
|
||||||
#!/usr/bin/env ash
|
#!/usr/bin/env bash
|
||||||
rm -rf . || true
|
rm -rf . || true
|
||||||
workspaces:
|
workspaces:
|
||||||
- name: source
|
- name: source
|
||||||
|
|||||||
@@ -13,6 +13,8 @@ spec:
|
|||||||
type: string
|
type: string
|
||||||
- name: domain-name
|
- name: domain-name
|
||||||
type: string
|
type: string
|
||||||
|
- name: stages
|
||||||
|
type: array
|
||||||
- name: artifactory-url
|
- name: artifactory-url
|
||||||
description: The url of the current artifactory
|
description: The url of the current artifactory
|
||||||
- name: project-name
|
- name: project-name
|
||||||
@@ -24,71 +26,45 @@ spec:
|
|||||||
- name: deploy-url
|
- name: deploy-url
|
||||||
description: The git repository url for the deploy project
|
description: The git repository url for the deploy project
|
||||||
steps:
|
steps:
|
||||||
- name: cleanup
|
- name: create
|
||||||
image: $(params.toolbox-image)
|
image: $(params.toolbox-image)
|
||||||
workingDir: $(workspaces.source.path)
|
workingDir: $(workspaces.source.path)
|
||||||
|
args:
|
||||||
|
- $(params.stages)
|
||||||
env:
|
env:
|
||||||
- name: ARTIFACTORY_URL
|
- name: ARTIFACTORY_URL
|
||||||
value: $(params.artifactory-url)
|
value: $(params.artifactory-url)
|
||||||
- name: PROJECT_NAME
|
|
||||||
value: $(params.project-name)
|
|
||||||
- name: DOMAIN_NAME
|
- name: DOMAIN_NAME
|
||||||
value: $(params.domain-name)
|
value: $(params.domain-name)
|
||||||
- name: ISSUER_NAME
|
- name: ISSUER_NAME
|
||||||
value: $(params.issuer-name)
|
value: $(params.issuer-name)
|
||||||
|
- name: PROJECT_NAME
|
||||||
|
value: $(params.project-name)
|
||||||
- name: PROJECT_PATH
|
- name: PROJECT_PATH
|
||||||
value: $(params.project-path)
|
value: $(params.project-path)
|
||||||
- name: GIT_REPOSITORY_URL
|
- name: GIT_REPOSITORY_URL
|
||||||
value: $(params.git-repository-url)
|
value: $(params.git-repository-url)
|
||||||
- name: DEPLOY_URL
|
- name: DEPLOY_URL
|
||||||
value: $(params.deploy-url)
|
value: $(params.deploy-url)
|
||||||
|
- name: TEMPLATE_ROOT
|
||||||
|
value: /etc/templates
|
||||||
|
- name: WORKSPACE_SSH_DIRECTORY_PATH
|
||||||
|
value: $(workspaces.ssh-directory.path)
|
||||||
script: |-
|
script: |-
|
||||||
#!/usr/bin/env bash
|
#!/usr/bin/env bash
|
||||||
git clone "$(params.deploy-url)" --depth 1 .
|
. ${TEMPLATE_ROOT}/functions.sh
|
||||||
mkdir -p "projects/$(params.project-name)" bases/project bases/install bases/deploy
|
git_prepare "$(params.deploy-url)" "Auto CD" "autocd@$(params.domain-name)"
|
||||||
added=0
|
install_base
|
||||||
copy() {
|
create_prj
|
||||||
local src=/etc/templates/$1 dest=$2
|
git_push "Adding $(params.project-name)"
|
||||||
if [ ! -f $dest ];then
|
cleanup
|
||||||
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"
|
|
||||||
if [ $added -ne 0 ];then
|
|
||||||
git commit -am "Adding $(params.project-name)"
|
|
||||||
git push
|
|
||||||
fi
|
|
||||||
volumeMounts:
|
volumeMounts:
|
||||||
- mountPath: /etc/templates
|
- mountPath: /etc/templates
|
||||||
name: templates
|
name: templates
|
||||||
volumes:
|
volumes:
|
||||||
- name: templates
|
- name: templates
|
||||||
configmap:
|
configmap:
|
||||||
name: auto-cd-create-templates
|
name: auto-cd-templates
|
||||||
workspaces:
|
workspaces:
|
||||||
- name: source
|
- name: source
|
||||||
mountPath: /data
|
mountPath: /data
|
||||||
@@ -97,5 +73,4 @@ spec:
|
|||||||
the user's home before git commands are executed. Used to authenticate
|
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
|
with the git remote when performing the clone. Binding a Secret to this
|
||||||
Workspace is strongly recommended over other volume types.
|
Workspace is strongly recommended over other volume types.
|
||||||
name: ssh-directory
|
name: ssh-directory
|
||||||
optional: true
|
|
||||||
@@ -0,0 +1,75 @@
|
|||||||
|
apiVersion: tekton.dev/v1
|
||||||
|
kind: Task
|
||||||
|
metadata:
|
||||||
|
name: auto-ci-delete
|
||||||
|
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: stages
|
||||||
|
type: array
|
||||||
|
- 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: delete
|
||||||
|
image: $(params.toolbox-image)
|
||||||
|
workingDir: $(workspaces.source.path)
|
||||||
|
args:
|
||||||
|
- $(params.stages)
|
||||||
|
env:
|
||||||
|
- name: ARTIFACTORY_URL
|
||||||
|
value: $(params.artifactory-url)
|
||||||
|
- name: DOMAIN_NAME
|
||||||
|
value: $(params.domain-name)
|
||||||
|
- name: ISSUER_NAME
|
||||||
|
value: $(params.issuer-name)
|
||||||
|
- name: PROJECT_NAME
|
||||||
|
value: $(params.project-name)
|
||||||
|
- name: PROJECT_PATH
|
||||||
|
value: $(params.project-path)
|
||||||
|
- name: GIT_REPOSITORY_URL
|
||||||
|
value: $(params.git-repository-url)
|
||||||
|
- name: DEPLOY_URL
|
||||||
|
value: $(params.deploy-url)
|
||||||
|
- name: TEMPLATE_ROOT
|
||||||
|
value: /etc/templates
|
||||||
|
- name: WORKSPACE_SSH_DIRECTORY_PATH
|
||||||
|
value: $(workspaces.ssh-directory.path)
|
||||||
|
script: |-
|
||||||
|
#!/usr/bin/env bash
|
||||||
|
. ${TEMPLATE_ROOT}/functions.sh
|
||||||
|
git_prepare "$(params.deploy-url)" "Auto CD" "autocd@$(params.domain-name)"
|
||||||
|
delete_prj
|
||||||
|
git_push "Removing $(params.project-name)"
|
||||||
|
cleanup
|
||||||
|
volumeMounts:
|
||||||
|
- mountPath: /etc/templates
|
||||||
|
name: templates
|
||||||
|
volumes:
|
||||||
|
- name: templates
|
||||||
|
configmap:
|
||||||
|
name: auto-cd-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
|
||||||
@@ -1,8 +1,72 @@
|
|||||||
apiVersion: v1
|
apiVersion: v1
|
||||||
kind: ConfigMap
|
kind: ConfigMap
|
||||||
metadata:
|
metadata:
|
||||||
name: auto-cd-create-templates
|
name: auto-cd-templates
|
||||||
data:
|
data:
|
||||||
|
functions.sh: |-
|
||||||
|
added=0
|
||||||
|
copy() {
|
||||||
|
local src=${TEMPLATE_ROOT}/$1 dest=$2
|
||||||
|
if [ ! -f $dest ];then
|
||||||
|
cp "$src" "$dest"
|
||||||
|
git add "$dest"
|
||||||
|
added=$(($added+1))
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
template() {
|
||||||
|
local src=${TEMPLATE_ROOT}/$1 dest=$2
|
||||||
|
if [ ! -f $dest ];then
|
||||||
|
envsubst <"$src" >"$dest"
|
||||||
|
git add "$dest"
|
||||||
|
added=$(($added+1))
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
git_push() {
|
||||||
|
local message=$1
|
||||||
|
if [ $added -ne 0 ];then
|
||||||
|
git commit -am "$message"
|
||||||
|
git push
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
cleanup() {
|
||||||
|
rm -rf . || true
|
||||||
|
}
|
||||||
|
git_prepare() {
|
||||||
|
local url=$1 username=$2 email=$3
|
||||||
|
mkdir -p "${HOME}/.ssh"
|
||||||
|
cp -Rv "${WORKSPACE_SSH_DIRECTORY_PATH}" "${HOME}/.ssh"
|
||||||
|
chmod 700 "${HOME}/.ssh"
|
||||||
|
chmod 400 "${HOME}/.ssh"/*
|
||||||
|
git config --global user.name "$username"
|
||||||
|
git config --global user.email "$email"
|
||||||
|
git clone "$url" --depth 1 .
|
||||||
|
}
|
||||||
|
install_base() {
|
||||||
|
mkdir -p bases/project bases/install bases/deploy
|
||||||
|
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
|
||||||
|
}
|
||||||
|
create_prj() {
|
||||||
|
mkdir -p "projects/${PROJECT_NAME}"
|
||||||
|
template project-kusto.yaml.tmpl "projects/${PROJECT_NAME}/kustomization.yaml"
|
||||||
|
}
|
||||||
|
activate_prj() {
|
||||||
|
}
|
||||||
|
delete_prj() {
|
||||||
|
rm -rf "projects/${PROJECT_NAME}"
|
||||||
|
}
|
||||||
base-kusto.yaml: |-
|
base-kusto.yaml: |-
|
||||||
---
|
---
|
||||||
apiVersion: kustomize.config.k8s.io/v1beta1
|
apiVersion: kustomize.config.k8s.io/v1beta1
|
||||||
Reference in New Issue
Block a user