Agno 模板预配置了 Github Actions 用于 CI/CD。我们可以

  1. 在每次 PR 时进行测试和验证
  2. 通过 Github Releases 构建 Docker 镜像
  3. 通过 Github Releases 构建 ECR 镜像

在每次 PR 时进行测试和验证

每当针对 main 分支打开 PR 时,都会运行一个验证脚本,以确保:

  1. 更改已使用 ruff 格式化
  2. 所有单元测试均通过
  3. 更改没有任何类型或 linting 错误。

请查看 .github/workflows/validate.yml 文件了解更多信息。

validate-cicd

通过 Github Releases 构建 Docker 镜像

如果您正在使用 Dockerhub 作为镜像仓库,可以通过 Github Release 构建和推送镜像。此操作定义在 .github/workflows/docker-images.yml 文件中。

  1. 为 Github Actions 创建 Docker 访问令牌
docker-access-token
  1. 在您的 github 代码库中创建 secret 变量 DOCKERHUB_REPODOCKERHUB_TOKENDOCKERHUB_USERNAME。这些变量由 .github/workflows/docker-images.yml 中的 action 使用。
github-actions-docker-secrets
  1. 通过 Github Release 运行工作流

此工作流配置为在创建 release 时运行。使用以下命令创建新 release:

运行前请在 .github/workflows/docker-images.yml 文件中确认镜像名称

gh release create v0.1.0 --title "v0.1.0" -n ""
github-actions-build-docker

您也可以使用 gh workflow run 来运行工作流

通过 Github Releases 构建 ECR 镜像

如果您使用 ECR 进行镜像存储,可以通过 Github Release 构建和推送镜像。此操作定义在 .github/workflows/ecr-images.yml 文件中,并使用新的 OpenID Connect (OIDC) 方法请求访问令牌,无需使用 IAM 访问密钥。

我们将遵循此 指南 来创建一个将被 github action 使用的 IAM 角色。

  1. 打开 IAM 控制台。
  2. 在左侧导航菜单中选择 Identity providers。
  3. 在 Identity providers 窗格中,选择 Add provider。
  4. 对于 Provider type,选择 OpenID Connect。
  5. 对于 Provider URL,输入 GitHub OIDC IdP 的 URL:https://token.actions.githubusercontent.com
  6. 获取指纹以验证服务器证书
  7. 对于 Audience,输入 sts.amazonaws.com。

验证信息与下图匹配后,选择 Add provider

github-oidc-provider
  1. 为提供商分配角色。
github-oidc-provider-assign-role
  1. 创建一个新角色。
github-oidc-provider-create-new-role
  1. 确认 Web identity 已被选为受信任实体,并且 Identity provider 字段已填充了 IdP。在 Audience 列表中,选择 sts.amazonaws.com,然后选择 Next。
github-oidc-provider-trusted-entity
  1. 向此角色添加 AmazonEC2ContainerRegistryPowerUser 权限。

  2. GithubActionsRole 的名称创建角色。

  3. 找到 GithubActionsRole 并复制其 ARN。

github-oidc-role
  1. 创建 ECR 仓库:llmjupyter-llm,这些将由工作流构建。
create-ecr-image
  1. 使用 GithubActionsRole ARN 和 ECR 仓库更新工作流。
.github/workflows/ecr-images.yml
name: Build ECR Images

on:
  release:
    types: [published]

permissions:
  # For AWS OIDC Token access as per https://docs.github.com/en/actions/deployment/security-hardening-your-deployments/configuring-openid-connect-in-amazon-web-services#updating-your-github-actions-workflow
  id-token: write # This is required for requesting the JWT
  contents: read # This is required for actions/checkout

env:
  ECR_REPO: [YOUR_ECR_REPO]
  # Create role using https://aws.amazon.com/blogs/security/use-iam-roles-to-connect-github-actions-to-actions-in-aws/
  AWS_ROLE: [GITHUB_ACTIONS_ROLE_ARN]
  AWS_REGION: us-east-1
  1. 更新 docker-images 工作流,使其 在 release 时运行
.github/workflows/docker-images.yml
name: Build Docker Images

on: workflow_dispatch
  1. 通过 Github Release 运行工作流
gh release create v0.2.0 --title "v0.2.0" -n ""
github-actions-build-ecr

您也可以使用 gh workflow run 来运行工作流