示例管道解释

    您的查询搜索没有结果。

    在 Kubernetes 上使用 GoCD 入门

    样例流水线的解释

    在本节中,我们将详细说明上一节中导入的每个流水线的细节。

    1. 构建并发布镜像

    此流水线构建应用程序工件并将其发布到工件存储中。

    材料

    GoCD 流水线的材料是触发流水线的因素。通常是源代码仓库。也可能是另一个 GoCD 存储库。材料中的更改会触发流水线运行。

    流水线的build_and_publish_image流水线材料是一个 Git 仓库。

    导入流水线时,材料被呈现为触发器在价值流图页面上的build_and_publish_image流水线。

    阶段和作业

    在 GoCD 中,阶段作业是允许顺序或并行执行构建任务的工作流结构。

    The build_and_publish_image流水线有一个名为build_and_publish_image的阶段,包含一个名为build_image.

    点击 GoCD 用户界面中的阶段或作业即可查看该阶段及其组成部分的执行结果。

    作业详情

    The build_image作业构建 Docker 镜像工件用于示例应用程序,并将 Docker 镜像发布到配置在Admin -> Artifact Stores.

    弹性配置文件

    The elastic_profile_id将此作业分配到弹性配置文件。当触发此作业时,基于弹性配置文件配置了一个弹性代理,并将其分配给此作业。

    外部工件

    作业定义中的外部工件配置使用了Docker 注册表工件插件来将 Docker 镜像推送到构建后配置的 Docker 注册表。

    控制台选项卡显示了build_image作业的交互过程。

    2. 测试应用程序

    该流水线获取先前构建的 Docker 镜像并对其进行测试。build_and_publish_image pipeline and runs tests against it.

    材料

    流水线的test_application材料是前一个build_and_publish_image流水线。通过指定流水线材料,test_pipeline将在前一个build_and_publish_image流水线成功完成时被触发。

    The test_application流水线还可以访问并获取build_and_publish_image流水线生成并存储在 GoCD 服务器上的任何工件。

    注意:构建工件可以存储在 GoCD 服务器上或如 Docker 注册表之类的外部工件存储中。

    阶段和作业

    The test_application流水线有一个名为test_app_image的阶段,包含一个名为test_app_image.

    的作业。阶段详细信息页面显示了阶段及其组成部分的执行结果。

    作业详情

    GoCD 构建代理以 Docker In Docker 容器形式运行。该作业获取应用程序的 Docker 镜像并在应用程序容器上运行测试命令。它通过执行test_app_image job fetches the application’s Docker image and runs the application’s test command on an application container. It does so by executing the docker run命令。

    弹性配置文件

    The elastic_profile_id将此作业分配到弹性配置文件。当触发此作业时,基于弹性配置文件配置了一个弹性代理,并将其分配给此作业。

    获取构件

    The fetch任务配置为从配置在Admin -> Artifact Stores.

    这种交互关系可以通过test_app_image作业的控制台选项卡查看。

    3. 部署到集群

    该流水线将应用程序工件部署到 Kubernetes 集群。

    材料

    The deploy_to_cluster流水线有两个材料。

    第一个材料是前一个test_application流水线。第二个材料是一个存储部署脚本的 Git 仓库。

    The deploy_to_cluster流水线将在上游test_application流水线成功完成后或者对 Git 仓库材料提交时被触发。

    阶段和作业

    The deploy_to_cluster流水线有一个名为deploy_to_cluster的阶段,包含一个名为Deploy.

    的作业。阶段详细信息页面显示了阶段及其组成部分的执行结果。

    作业详情

    The Deploy作业获取应用程序的 Docker 镜像元数据,并使其在环境中可用。然后调用部署脚本将应用程序部署到 Kubernetes。

    弹性配置文件

    The elastic_profile_id将此作业分配到弹性配置文件。当触发此作业时,基于弹性配置文件配置了一个弹性代理,并将其分配给此作业。

    获取镜像元数据

    由于部署到 Kubernetes 不需要将应用程序镜像拉取到构建代理,因此fetch任务配置为获取应用程序镜像元数据。然后将元数据提供给作业中的其他任务使用。

    这种交互关系可以通过deploy作业的控制台选项卡查看。

    访问您的应用程序

    当流水线成功运行后,前往http://<ingress-ip>/bulletin-board查看您已部署的示例应用程序。

    获取已部署应用程序的新入口 IP 地址:

    • 对于 Minikube:

      minikube ip
      
    • 对于其他 Kubernetes 实现:

      echo "http://$(kubectl get ingress bulletin-board-ingress --namespace $NAMESPACE -o jsonpath="{.status.loadBalancer.ingress[0]['ip']}")"
      

    使用代理状态报告检查代理状态

    当流水线运行时(由黄色条表示),您可以查看分配来运行流水线中作业的代理的状态。在这里可以找到以下信息:

    • Pod 详细信息和配置

    • Pod 事件

    • 代理日志

    这对于排查代理不拾取作业的情况非常有帮助。

    要访问代理状态报告:

    1. 当流水线正在构建时,点击任意一个阶段。

    2. 您会看到带有作业列表的阶段详细信息页面。点击您希望查看代理的作业。

    3. 这是具有控制台日志的作业详细信息页面。点击标题为“检查代理状态”的按钮。

    4. 点击此按钮将带您进入代理状态报告。EventsLogs选项卡显示 GoCD 弹性代理 Pod 的事件和日志。

      注意:当作业运行时,代理状态报告才可见。一旦作业完成,此状态将不再可见。