问题标签 [openshift-pipelines]

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.

0 投票
2 回答
1109 浏览

jenkins-pipeline - 失败后继续 Tekton 管道(类似于 jenkins 管道 catchError 行为)

我有一个我想要的管道:

  1. 提供一些资源,
  2. 运行一些测试,
  3. 拆掉资源。

我希望第 3 步中的拆解任务在第 2 步中运行,无论测试是否通过或失败。据我所知,如果前一个任务成功,runAfter仅运行一个任务。

我尝试查看条件,但似乎找不到示例……</p>

还有什么我可以使用的或者有人可以指出我的例子吗?

0 投票
1 回答
417 浏览

kubernetes - Openshift:CI/CD 访问来自不同集群的镜像流

我在 OpenShift 中配置 CI/CD:Dev > Stage > Prod,我在 Stage 中遇到了一些问题,以达到 Dev ImageStream。整个设置如下所示:

Dev - 运行 Tekton 管道并在最后一个任务上触发 BuildConfig > Build 将新图像输出到 ImageStream > ImageStream 新标签触发 DeploymentConfig > 部署发生

Stage - 我想在 Dev 的 ImageStream 中找到标签,这样我就可以在 Stage 中构建和部署应用程序。

我正在使用 OpenShift 内部注册表image-registry.openshift-image-registry.svc:port

在 Stage 中,我所做的是在 Pipeline 中执行image-pull命令的一项任务:

但我收到以下错误:

sa在 Dev 和 Stage 中有一个 serviceAccount,它只有 github-secret。

根据OpenShift 文档 Cluster-role bindings等一些示例:

这意味着在相同的集群边界。

stackoverflow 上一篇文章

这意味着项目之间(好)但在同一个集群中(我需要不同的集群)

有没有办法设置角色绑定以便能够从不同的集群访问 ImageStream ?还是集群角色?或者是其他方式来实现这一目标?

任何帮助表示赞赏

0 投票
1 回答
131 浏览

kubernetes - Tekton pipeline - 通过 kubernetes/openshift api 启动 pipelinerun

只是想知道是否有办法通过 Kubernetes API 启动 Tekton 管道。我知道我们可以使用Triggerstkncli。但对于我的用例,API 将是一个更好的选择。有没有办法做到这一点?

我正在使用 OpenShift,但在 API 文档中找不到任何参考。

0 投票
1 回答
359 浏览

kubernetes - 如何让 Tekton 任务的命令执行等到前一个任务的旋转 pod 准备好接受请求

我有一个 OpenShift/Tekton 管道,用于Task A将应用程序部署到测试环境。在Task B中,运行应用程序的测试套件。如果所有测试都通过,则应用程序将部署到Task C.

问题是Task A的 pod 已部署(使用oc apply -f <deployment>),并且在 pod 实际准备好接收请求之前,Task B开始运行测试套件,并且所有测试都失败(因为它无法到达测试用例中定义的端点) .

在开始执行之前,是否有一种优雅的方法可以确保 podTask A已准备好接收请求Task B?我见过的一种解决方案是对健康端点执行 HTTP GET 请求,直到获得 HTTP 200 响应。我们有不少应用程序不公开 HTTP 端点,那么是否有更“通用”的方法来确保 pod 已准备好?例如,我可以查询日志中的特定记录Task A吗?有一条日志语句始终显示 pod 何时准备好接收流量。

如果有任何兴趣,这里是 的定义Task A

0 投票
1 回答
228 浏览

kubernetes - 无论管道是失败还是成功,都向 GitLab 报告 Tekton 管道状态(使用 gitlab-set-status 任务)

我们已经在使用来自 Tekton Hubgitlab-set-status任务将 Tekton Pipeline 的状态报告回我们的 GitLab 实例(这是我们的 EKS 设置和 Tekton 安装以及gitlab.com 上的示例项目)。我们pipeline.yml看起来像这样,当前STATE每次 Tekton Pipeline 运行时都会报告成功:

我们如何增强我们的 Tekton Pipeline 以正确地报告状态,而不管 GitLab 的任何失败或成功?

0 投票
1 回答
212 浏览

kubernetes - 在 OpenShift 上安装 Tekton Triggers EventListener(用于 GitLab)会导致:错误配置映射被禁止:无法在 API 中获取资源配置映射

我们正在通过 Webhooks 和 Tekton Triggers 集成 GitLab 和 Tekton / OpenShift Pipelines。我们遵循这个示例项目,并制作了我们EventListener所需的InterceptorTriggerBinding并且TriggerTemplate作为gitlab-push-listener.yml

示例中所述(以及Tekton 文档中),我们还创建并kubectl apply编辑了一个ServiceAccount命名的tekton-triggers-example-sa,RoleBindingClusterRoleBinding

现在通过 安装我们的 EventListener kubectl apply -f gitlab-push-listener.yml,没有从 GitLab 触发,甚至没有curl按预期触发 PipelineRun。查看 Deployment 和 Pod 的日志el-gitlab-listener,我们看到以下错误:

0 投票
1 回答
214 浏览

java - 在 Tekton Hub 的 Tekton Maven 任务中缓存 Maven 依赖项

我们想使用 Maven 构建一个基于 Spring Boot 的项目。我们在 Tekton Hub 上找到了 Maven 任务,并且已经有一个正在运行的管道。在一个缩短的版本中,我们pipeline.yml看起来像这样:

PipelineRun 定义为:

source-pvcPersistentVolumeClaim 定义为:

我们的项目正在构建中,但是当我们启动另一个 PipelineRun 时,任务会一遍又一遍地下载项目的所有 Maven 依赖项:

在此处输入图像描述

Tekton Hub 的 Maven 任务https://hub.tekton.dev/tekton/task/maven似乎不支持使用缓存。尽管如此,我们如何缓存?

0 投票
1 回答
55 浏览

bash - 无法弄清楚如何在我的 Tekton 管道中进行变量替换

所以我不确定这实际上是 Bash 问题还是 Tekton 问题。问题出现在我的 OpenShift (Tekton) 管道中。部署我的应用程序后,我有一个步骤需要检查是否Deployment已实际创建。

这样做是这样的:

在上面的代码片段中,我硬编码了Deployment“my-app”的名称。后缀“-foo”是每个Deployment资源的一部分。当硬编码时,它可以工作,并且我得到了我的Deployment,如预期的那样。

当我尝试参数化 的名称时Deployment,我的管道失败并出现以下错误:

所以问题显然是“-foo”后缀没有添加到我的变量中,我不知道如何做到这一点。尝试用大括号替换括号,尝试在整个表达式周围加上双引号,以及其他一些变体。

这是我的变量替换代码:

谁能告诉我做错了什么?

0 投票
0 回答
50 浏览

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 存储库中?

0 投票
1 回答
70 浏览

kubernetes - Tekton Pipelines:使用已发布的管道 yaml 启用 alpha 功能,而无需存储(和维护)功能标志 ConfigMap

我们想使用Tekton 实验性功能,例如Pipelines In Pipelines 功能。我们已经按照自述文件中的描述安装了该功能,kubectl apply但最终出现如下错误:

这个问题中,我们需要在我们的部署中启用 Tekton alpha 功能。在Customizing the Pipelines Controller behavior的 Tekton 文档中,描述了所有功能标志 - 包括Alpha 功能。文档指出,如果我们想使用这些功能,我们应该将字段从enable-api-fields:更改为。stablealpha

安装 Tekton Pipelines的推荐方法是使用kubectl apply远程服务的 yaml 文件:

在里面我们看到ConfigMap feature-flags(缩短的):

有没有办法以某种方式即时更改该enable-api-fields字段,alpha而无需存储(并从长远来看维护)官方的 Tekton 管道 yaml 文件?