Nit*_*ngh 5 automated-tests github-actions argocd
我想知道在使用 ArgoCD 成功部署任何微服务后,如何运行应用程序 E2E(UI 或 API)测试。
当前设置:我使用 github-actions 设置了 CI 管道。完成任何微服务的 CI 构建后,它会更新位于 github 存储库之一的 helm 值中的 docker 镜像版本。然后 ArgoCD 会轮询此存储库是否有任何更改,如果存在更改,则将其部署在 Kubernetes 集群中。
意图:我想在 argocd 同步 Helm 图表中定义的任何微服务部署对象后运行应用程序 E2E(UI 和 API)测试。但我不确定 github 操作中的触发点应该是什么。E2E 测试 github 操作工作流程如何知道 argocd 已毫无问题地部署了微服务,并且服务已准备好供自动化测试使用。
小智 5
ArgoCD 提供了一种称为资源挂钩的功能。挂钩是在同步操作之前、期间和之后运行脚本的方法。官方文档中的钩子用例:
使用
PostSync挂钩在部署后运行集成和运行状况检查。
Hook 可以是任何类型的 Kubernetes 资源类型,但往往是 Pod、Job 或 Argo 工作流。
根据GitHub 操作文档,您可以在钩子模板POST中向 Github API 发送请求PostSync以运行工作流程。
这是问题陈述的完整解决方案。
apiVersion: batch/v1
kind: Job
metadata:
name: api-test-trigger
annotations:
argocd.argoproj.io/hook: PostSync
argocd.argoproj.io/hook-delete-policy: HookSucceeded
spec:
template:
metadata:
labels:
name: api-test
spec:
containers:
- name: api-test
args:
- /bin/sh
- -ec
- "curl -X POST -H \"Accept: application/vnd.github.v3+json\" -H \"Authorization: token ${GITHUB_TOKEN}\" ${GITHUB_URL} -d '{\"ref\":\"main\"}'"
env:
- name: GITHUB_URL
value: "https://api.github.com/repos/<your org>/<your repo>/actions/workflows/<workflow id>/dispatches"
- name: GITHUB_TOKEN
value: <your PAT>
image: curlimages/curl
Run Code Online (Sandbox Code Playgroud)
您可以从 github 设置创建 PAT 并提供 PAT 作为秘密。
| 归档时间: |
|
| 查看次数: |
7089 次 |
| 最近记录: |