问题标签 [tekton]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
bash - 无法弄清楚如何在我的 Tekton 管道中进行变量替换
所以我不确定这实际上是 Bash 问题还是 Tekton 问题。问题出现在我的 OpenShift (Tekton) 管道中。部署我的应用程序后,我有一个步骤需要检查是否Deployment
已实际创建。
这样做是这样的:
在上面的代码片段中,我硬编码了Deployment
“my-app”的名称。后缀“-foo”是每个Deployment
资源的一部分。当硬编码时,它可以工作,并且我得到了我的Deployment
,如预期的那样。
当我尝试参数化 的名称时Deployment
,我的管道失败并出现以下错误:
所以问题显然是“-foo”后缀没有添加到我的变量中,我不知道如何做到这一点。尝试用大括号替换括号,尝试在整个表达式周围加上双引号,以及其他一些变体。
这是我的变量替换代码:
谁能告诉我做错了什么?
docker - 从 Tekton 任务运行 Docker 映像
是否可以从 Tekton 任务运行 docker 映像?我看到的大多数示例都与使用 Tekton 构建和部署 Docker 映像有关,但与如何运行已构建的映像无关。
我正在使用 cron 作业来触发 Tekton EventListener,然后运行 Taskrun。我希望任务运行托管在私有 docker repo 上的 docker 映像。Taskrun 指的是这个Task。
这是我看到的常见教程的示例
任何帮助,将不胜感激
java - 使用 Jib + Tekton + GH Actions 对 Spring Boot 应用程序进行 Dockerize
我正在考虑使用与 Dockerfile 相对的 Jib 来容器化应用程序。DevOps 团队正在使用 Tekton 构建容器,作为 GitHub Actions 中介管道的一部分。
我的问题是,就 DevOps 团队如何设置 CI/CD 管道而言,应用程序使用 Jib、Dockerfile 还是 Spring Boot 插件是否重要?
version-control - 如何自动将更新应用到存储在 git 存储库中的 Tekton 资源?
作为背景,我正在从 Jenkins 和基于 Gitlab CI 的 CI 升级一些项目以使用 Tekton。在这些项目中,通常会看到Jenkinsfile或.gitlab-ci.yml定义为项目运行的管道。每当发生触发事件(例如合并/提交/等)时,相应的工具就会在构建时使用这些文件。这些文件会随着时间的推移而改变,以适应存储库执行其构建所需的任何内容,然后像执行任何其他类型的工作一样提交给存储库。这具有理想的行为,即准确地知道构建管道在提交历史中的任何时候是什么样子,并且如果小心/正确处理,则有助于构建可重现性。
Tekton 的相应方法似乎建议您将 CRD yaml 文件存储在/tekton文件夹下。但是,我在 Tekton 看到的大多数文档和示例都集中在使用kubectl推出 CRD 的手动过程上。一旦安装了 CRD,EventTrigger 就能够在必要时使用定义的资源,但是当我提交对pipeline.yaml的更新时会发生什么?是否期望开发人员使用kubectl手动推送更新的 CRD,或者是否有办法让 EventTrigger 自动使用./tekton/pipeline.yaml存储在事件来源的 git 存储库中?
kubernetes - Tekton Pipelines:使用已发布的管道 yaml 启用 alpha 功能,而无需存储(和维护)功能标志 ConfigMap
我们想使用Tekton 实验性功能,例如Pipelines In Pipelines 功能。我们已经按照自述文件中的描述安装了该功能,kubectl apply
但最终出现如下错误:
在这个问题中,我们需要在我们的部署中启用 Tekton alpha 功能。在Customizing the Pipelines Controller behavior的 Tekton 文档中,描述了所有功能标志 - 包括Alpha 功能。文档指出,如果我们想使用这些功能,我们应该将字段从enable-api-fields:
更改为。stable
alpha
安装 Tekton Pipelines的推荐方法是使用kubectl apply
远程服务的 yaml 文件:
在里面我们看到ConfigMap
feature-flags
(缩短的):
有没有办法以某种方式即时更改该enable-api-fields
字段,alpha
而无需存储(并从长远来看维护)官方的 Tekton 管道 yaml 文件?
tekton - 是什么导致 Tekton 步骤失败?
步骤成功或失败取决于它们运行的命令或脚本的输出,但我不清楚这究竟是如何工作的。是否有任何输出stderr
导致步骤失败?如果不是,Tekton 如何准确地确定一个步骤是失败还是成功?
kubernetes - 使用 kaniko 图像缓存 tekton 管道
我想使用 tekton 在我的本地 linux 系统中缓存 Dockerfile 层。为此,我点击了这个链接:https ://zhimin-wen.medium.com/caching-for-building-spring-boot-app-image-with-kaniko-48563750bf3a
但是,对我来说它不起作用。我正在使用两个光伏。一个用于 Maven 依赖项,另一个用于缓存 docker 文件层。只有 Maven 依赖项存储在 pv 中。我怎样才能缓存docker文件层???
构建任务:
任务运行日志:
tekton - 来自 github 的 Tekton 触发流程
我正在学习 Tekton(用于商业),来自 github 操作(私人)。
Tekton 文档(或我能找到的任何其他教程)有关于如何从 github 推送自动启动管道的说明。基本上它们都遵循以下流程:(我知道 PipelineRun/TaskRun 等)
以上所有步骤基本上都是您需要采取的配置步骤(以及要创建和维护的文件),一个比另一个更容易,但据我所知,您维护的每个存储库也需要采取这些步骤。与 github 操作相比,我只需要在我的 repo 中使用 1 个文件来描述我需要的所有内容,这似乎非常复杂(如果不麻烦的话)。
我错过了什么吗?或者这只是要走的路?谢谢 !
tekton - Tekton sidecar:docker daemon 无法启动
我有一个 Tekton 管道,可以构建 Docker 映像并将其推送到私有存储库。处理这个的任务使用了一个 DinD sidecar。最初,它工作得很好,但它开始因错误而失败Cannot connect to the Docker daemon at unix:///var/run/docker.sock. Is the docker daemon running?
。起初这是一个间歇性错误,但现在每次我尝试运行管道时似乎都会发生这种情况。我试着让它等到它可以连接到守护进程,以防这是一个时间问题,但它最终只是永远等待。什么可能阻止 Docker 守护程序启动,或阻止任务连接到它?
kubernetes - 将 Tekton Workspace 目录绑定到 VolumeMount
我们有一个 Tekton 管道,我们希望从中运行我们的 ReadyAPI 测试套件。我们使用来自 SmartBear 的官方镜像 ( https://hub.docker.com/r/smartbear/ready-api-soapui-testrunner )。
该镜像要求您将/project
容器中的文件夹绑定到 ReadyAPI 测试项目所在的主机目录。在我们的例子中,我们的测试项目位于 TektonWorkspace
目录common-workspace/application-foo/tests/application-foo-readyapi-project.xml
中。
在本地(使用docker run
)运行容器映像时,我只需添加一个参数-v="common-workspace/application-foo/tests/":/project
。我不知道如何在 Tekton 中进行此映射Task
。这是完整的Task
定义:
查看有关卷绑定的官方文档hostPath
(https://kubernetes.io/docs/concepts/storage/volumes/#hostpath),我希望我能做这样的事情,但这由于某种原因不起作用:
那么如何绑定volumeMounts
到主机上的实际目录呢?有什么线索吗?
更新:
在 OpenShift 中查看 pod 时,它Task
有一个CreateContainerError
状态。在事件视图中,这是显示的错误消息:“错误:mkdir common-workspace/application-foo/tests 失败:mkdir common-workspace: operation not allowed”
我不明白为什么它会尝试创建 common-workspace 文件夹,因为它已经存在。我已经验证了使用emptyDir
卷类型时整个路径都存在,然后运行ls /workspace/source/common-workspace/application-foo/tests
. 这将打印出测试项目的 XML 文件。