97 lines
3.4 KiB
YAML
97 lines
3.4 KiB
YAML
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 |