Skip to content

Commit

Permalink
feat(apps/prod/tekton/configs): add task and triggers for auto sync O…
Browse files Browse the repository at this point in the history
…WNERS for hotfix branches (#737)

* fix(apps/prod/tekton/configs/triggers/bindings): fix branch and tag bindings

- tag creating event
- branch creating event
- branch pushing event

Signed-off-by: wuhuizuo <wuhuizuo@126.com>

* Update apps/prod/tekton/configs/triggers/bindings/github-branch-create.yaml

* feat(apps/prod/tekton/configs): add task and triggers for auto sync OWNERS for hotfix branches

Automatically create pull requests when hot fix branch is created.

Signed-off-by: wuhuizuo <wuhuizuo@126.com>

* Update apps/prod/tekton/configs/triggers/templates/branch-create-product-components-hotfix.yaml

* Update apps/prod/tekton/configs/triggers/triggers/create-branch-product-components-hotfix.yaml

* Update apps/prod/tekton/configs/triggers/triggers/create-branch-product-components-hotfix.yaml

---------

Signed-off-by: wuhuizuo <wuhuizuo@126.com>
  • Loading branch information
wuhuizuo committed Oct 26, 2023
1 parent 2e874f2 commit fb1c944
Show file tree
Hide file tree
Showing 8 changed files with 149 additions and 10 deletions.
59 changes: 59 additions & 0 deletions apps/prod/tekton/configs/tasks/create-pr-to-sync-owners.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,59 @@
apiVersion: tekton.dev/v1beta1
kind: Task
metadata:
name: create-pr-to-sync-owners
labels:
app.kubernetes.io/version: "0.1"
annotations:
tekton.dev/pipelines.minVersion: "0.29.0"
tekton.dev/categories: Deno
tekton.dev/tags: deno
tekton.dev/displayName: "sync owners"
tekton.dev/platforms: "linux/amd64"
spec:
description: >-
Create pull request to sync `OWNERS`` file to github repository branch.
params:
- name: git-url
description: repository clone url
type: string
- name: branch
description: branch name
type: string
steps:
- name: clone-community-repo
image: bitnami/git:latest
workingDir: /workspace
script: |
git clone https://github.com/pingcap/community.git --branch master
- name: create-pull-request
image: denoland/deno:1.37.2
workingDir: /workspace/community
script: |
owner=$(basename $(dirname $(params.git-url)))
repo=$(basename $(params.git-url) .git)
echo "url=$(params.git-url)"
echo "branch=$(params.branch)"
echo "owner=${owner}"
echo "repo=${repo}"
deno run --allow-all https://github.com/PingCAP-QE/ci/raw/main/scripts/pingcap/community/update-prow-owners.ts \
--force \
--owner=${owner} \
--github_private_token=$(cat /etc/github/token) \
--only_repo.repo=${repo} \
--only_repo.branch=$(params.branch) \
--inputs=teams/diagnostic/membership.json \
--inputs=teams/docs/membership.json \
--inputs=teams/tiunimanager/membership.json \
--inputs=teams/tidb/membership.json \
--inputs=teams/tiflash/membership.json \
--inputs=teams/tiup/membership.json \
--inputs=teams/kubernetes/membership.json \
--inputs=teams/migration/membership.json \
--inputs=teams/bigdata/membership.json
workspaces:
- name: github
description: Must includes a key `token`
mountPath: /etc/github
11 changes: 6 additions & 5 deletions apps/prod/tekton/configs/tasks/kustomization.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -2,14 +2,15 @@ apiVersion: kustomize.config.k8s.io/v1beta1
kind: Kustomization
namespace: ee-cd
resources:
- create-pr-to-sync-owners.yaml
- echo.yaml
- git-clone.yaml
- github-set-status.yaml
- golang-build.yaml
- golang-test.yaml
- kubernetes-actions.yaml
- echo.yaml
- ko-test-infra.yaml
- multi-arch-image-push.yaml # multi-arch-image-push task
- https://raw.githubusercontent.com/tektoncd/catalog/main/task/ko/0.1/ko.yaml # ko task
- https://raw.githubusercontent.com/tektoncd/catalog/main/task/kaniko/0.6/kaniko.yaml # kaniko task
- https://raw.githubusercontent.com/tektoncd/catalog/main/task/ko/0.1/ko.yaml # ko task
- https://raw.githubusercontent.com/tektoncd/catalog/main/task/tkn/0.4/tkn.yaml
- ko-test-infra.yaml
- kubernetes-actions.yaml
- multi-arch-image-push.yaml # multi-arch-image-push task
Original file line number Diff line number Diff line change
Expand Up @@ -5,8 +5,8 @@ metadata:
spec:
params:
- name: git-url
value: $(body.repository.url)
value: $(body.repository.clone_url)
- name: git-revision
value: $(body.head_commit.id)
value: $(body.after)
- name: git-ref
value: $(body.ref)
value: $(body.ref.substringAfter('refs/heads/')) # "refs/heads/main" => "main"
Original file line number Diff line number Diff line change
Expand Up @@ -5,8 +5,8 @@ metadata:
spec:
params:
- name: git-url
value: $(body.repository.url)
value: $(body.repository.clone_url)
- name: git-ref
value: $(body.ref)
- name: git-tag
value: $(body.ref)
value: $(body.ref.substringAfter('refs/tags/')) # "refs/tags/vX.Y.Z" => "vX.Y.Z"
Original file line number Diff line number Diff line change
@@ -0,0 +1,38 @@
apiVersion: triggers.tekton.dev/v1beta1
kind: TriggerTemplate
metadata:
name: branch-create-product-components-hotfix
spec:
params:
- name: git-url
description: The git repository full url
- name: git-ref
description: The git ref
default: main
resourcetemplates:
- apiVersion: tekton.dev/v1beta1
kind: TaskRun
metadata:
generateName: branch-create-product-components-hotfix-run-
annotations:
"tekton.dev/git-status": "true"
"tekton.dev/status-target-url":
"https://do.pingcap.net/tekton/#/namespaces/{{ .Namespace }}/pipelineruns/{{ .Name }}"
"tekton.dev/git-repo": $(tt.params.git-url)
"tekton.dev/git-revision": $(tt.params.git-ref)
spec:
params:
- name: git-url
value: $(tt.params.git-url)
- name: branch
value: $(tt.params.git-ref)
taskRef:
kind: Task
name: create-pr-to-sync-owners
podTemplate:
nodeSelector:
kubernetes.io/arch: "amd64"
workspaces:
- name: github
secret:
secretName: github
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@ apiVersion: kustomize.config.k8s.io/v1beta1
kind: Kustomization
resources:
- branch-create-pingcap-qe-artifacts.yaml
- branch-create-product-components-hotfix.yaml
- pull-pingcap-qe-artifacts.yaml
- push-pingcap-qe-artifacts.yaml
- tag-create-pingcap-qe-artifacts.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,39 @@
apiVersion: triggers.tekton.dev/v1beta1
kind: Trigger
metadata:
name: branch-create-product-components-hotfix
labels:
type: github-branch-create
spec:
interceptors:
- name: filter on repo owner and name
ref:
name: cel
params:
- name: filter
value: >-
body.repository.owner.login == 'pingcap' && body.repository.name in [
'tidb',
'tiflash',
'tiflow',
'tidb-binlog',
'tidb-dashboard',
'tidb-tools'
]
# filter git refs that match regexp: ^release-\d+\.\d+-\d+-v\d+\.\d+\.\d+$
# example values of `body.ref`:
# release-6.5-20231020-v6.5.5
# release-6.5-20231020-v6.5.5-1
# regular use re2: https://github.com/google/re2/wiki/Syntax
- name: filter on branch names
ref:
name: cel
params:
- name: filter
value: >-
body.ref.matches('^release-[0-9]+[.][0-9]+-[0-9]+-v[0-9]+[.][0-9]+[.][0-9]+(-.+)?$')
bindings:
- ref: github-branch-create
template:
ref: branch-create-product-components-hotfix
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@ apiVersion: kustomize.config.k8s.io/v1beta1
kind: Kustomization
resources:
- create-branch-pingcap-qe-artifacts.yaml
- create-branch-product-components-hotfix.yaml
- create-tag-pingcap-qe-artifacts.yaml
- pull-pingcap-qe-artifacts.yaml
- push-pingcap-qe-artifacts.yaml

0 comments on commit fb1c944

Please sign in to comment.