Tekton 克隆 git 仓库
Tekton 克隆 git仓库
介绍如何使用 Tektonhub 官方 git-clone task 克隆 github 上的源码到本地。
git-clone task yaml文件下载地址:https://hub.tekton.dev/tekton/task/git-clone
查看git-clone task yaml内容:
点击Install,选择一种方式创建 task
这里使用kubectl命令创建官方git-clone task
kubectl apply -f \
https://raw.githubusercontent.com/tektoncd/catalog/main/task/git-clone/0.9/git-clone.yaml
查看创建的task
$ kubectl get task
NAME AGE
git-clone 4h32m
git-clone task创建后,可以通过taskRun
或pipelineRun
进行调用。
非认证方式克隆
公开仓库无需配置认证即可直接克隆,这里以克隆 tekton pipeline 官方仓库为例。
创建一个简单的 taskRun 调用 git-clone
task 来执行克隆任务,并向git-clone task传递一些自定义参数:
$ cat git-clone-taskrun.yaml
apiVersion: tekton.dev/v1beta1
kind: TaskRun
metadata:
generateName: git-clone-taskrun-
spec:
taskRef:
name: git-clone
podTemplate:
hostNetwork: true
workspaces:
- name: output
emptyDir: {}
params:
- name: url
value: https://github.com/tektoncd/pipeline.git
- name: revision
value: main
- name: subdirectory
value: pipeline
- name: httpProxy
value: http://192.168.72.1:7890/
- name: httpsProxy
value: http://192.168.72.1:7890/
- name: deleteExisting
value: "true"
- name: gitInitImage
#value: gcr.io/tekton-releases/github.com/tektoncd/pipeline/cmd/git-init:latest
value: dyrnq/tektoncd-pipeline-cmd-git-init:latest
所有的参数都是在git-clone task中已经预定义的,这里只需传参即可,参数说明:
- workspaces:必选,为克隆的代码指定一个卷,这里作为演示,使用
emptyDir
类型的卷 - url:指定克隆的git仓库地址
- revision:指定克隆的git仓库分支
- httpProxy:克隆github很有可能由于众所周知的原因失败,这里使用本地代理,可选
- subdirectory:配置代码克隆到指定子目录下
- gitInitImage:指定执行克隆任务的docker镜像,由于官方镜像无法访问,可以在dockerhub搜索可用镜像
应用yaml文件
kubectl create -f git-clone-taskrun.yaml
登录tekton dashboard 确认 taskRun 任务成功,说明已经成功克隆远程仓库到本地:
认证方式克隆
前置要求:
- 已准备远程私有 GitHub 仓库
- 用于访问远程存储库的 GitHub 个人访问令牌 (PAT)。
以basic-auth认证方式为例,注意该pipeline依然调用官方git-clone task执行克隆任务。
创建secret和serviceaccount账号
设置创建 github-pat-secret 时使用的所需环境变量
export GITHUB_USERNAME='<your github.com username>'
export TEKTON_GITHUB_PAT='<your github.com username personal accesstoken>'
创建可以保存您的 GitHub.com 凭据的 Kubernetes secret:
cat >git-clone-sa.yaml<<EOF
apiVersion: v1
kind: Secret
metadata:
name: basic-user-pass
annotations:
tekton.dev/git-0: https://github.com
type: kubernetes.io/basic-auth
stringData:
username: $GITHUB_USERNAME
password: $TEKTON_GITHUB_PAT
---
apiVersion: v1
kind: ServiceAccount
metadata:
name: github-bot
secrets:
- name: basic-user-pass
EOF
应用yaml文件
kubectl apply -f git-clone-sa.yaml
创建Pipeline和PipelineRun
创建 git 克隆Pipeline
和PipelineRun
,该管道将从私有 GitHub 存储库克隆并查看代码中README文件内容:
$ cat git-clone-pipelinerun.yaml
apiVersion: tekton.dev/v1beta1
kind: Pipeline
metadata:
name: cat-branch-readme
spec:
params:
- name: repo-url
type: string
description: The git repository URL to clone from.
- name: branch-name
type: string
description: The git branch to clone.
- name: httpProxy
type: string
description: The httpProxy params.
- name: httpsProxy
type: string
description: The httpsProxy params.
- name: gitInitImage
type: string
description: The gitInitImage params.
workspaces:
- name: shared-data
tasks:
- name: fetch-repo
taskRef:
name: git-clone
workspaces:
- name: output
workspace: shared-data
params:
- name: url
value: $(params.repo-url)
- name: revision
value: $(params.branch-name)
- name: httpProxy
value: $(params.httpProxy)
- name: httpsProxy
value: $(params.httpsProxy)
- name: gitInitImage
value: $(params.gitInitImage)
- name: cat-readme
runAfter: ["fetch-repo"]
workspaces:
- name: source
workspace: shared-data
taskSpec:
workspaces:
- name: source
steps:
- image: zshusers/zsh:4.3.15
script: |
#!/usr/bin/env zsh
cat $(workspaces.source.path)/README.md
---
apiVersion: tekton.dev/v1beta1
kind: PipelineRun
metadata:
generateName: git-clone-checking-out-a-branch-
spec:
serviceAccountName: github-bot
pipelineRef:
name: cat-branch-readme
podTemplate:
securityContext:
fsGroup: 65532
workspaces:
- name: shared-data
volumeClaimTemplate:
spec:
accessModes:
- ReadWriteOnce
resources:
requests:
storage: 1Gi
params:
- name: repo-url
value: https://github.com/willzhang/test.git
- name: branch-name
value: main
- name: httpProxy
value: http://192.168.72.1:7890/
- name: httpsProxy
value: http://192.168.72.1:7890/
- name: gitInitImage
value: registry.cn-shenzhen.aliyuncs.com/cnmirror/git-init:latest
参数说明:
- workspaces:必选,
PipelineRun
中定义了volumeClaimTemplate
类型的workspaces,能够动态申请所需的持久卷,使用kubectl get storageclass
命令,确认k8s集群有默认可用的storageclass资源可用,本示例输出为openebs-hostpath (default)
- serviceAccountName:必选,注意
PipelineRun
中定义了serviceAccountName: github-bot
参数,用于执行任务 - url:指定克隆的私有github仓库地址
- revision:指定克隆的git仓库分支
- gitInitImage:指定执行克隆任务的docker镜像,由于官方镜像无法访问,可以在dockerhub搜索可用镜像
应用yaml文件
kubectl create -f git-clone-pipelinerun.yaml
登录dashbord确认克隆任务是否成功
参考:https://redhat-scholars.github.io/tekton-tutorial/tekton-tutorial/private_reg_repos.html
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!