argocd部署后如何运行应用程序E2E测试?

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以运行工作流程。


Nit*_*ngh 5

这是问题陈述的完整解决方案。

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 作为秘密。