尧图网站设计 尧图网站设计YAOTU DESIGN
ARTICLE DETAIL

资讯详情

深耕网站设计与一线实操的经验洞察。

使用 GitHub Actions 自动部署 Reflex 应用到 Reflex Cloud

使用 GitHub Actions 自动部署 Reflex 应用到 Reflex Cloud 使用 GitHub Actions 自动部署 Reflex 应用到 Reflex Cloud【免费下载链接】reflex️ Web apps in pure Python 项目地址: https://gitcode.com/GitHub_Trending/re/reflex本指南讲解如何在 GitHub Actions 工作流中使用 Reflex 官方部署 Actionreflex-dev/reflex-deploy-actionv1将 Reflex 应用自动部署到 Reflex Cloud。读完本文后你将掌握完整的 CI/CD 配置方法创建工作流文件、配置认证 Token 与项目 ID 密钥、理解全部 Action 输入参数并能将安全扫描、多环境部署等最佳实践融入自动化流程。前置要求本 Action 要求reflex0.6.6且你的应用应已在本地通过reflex init与reflex run验证可运行参见 Deploy Quick Start。工作流配置创建.github/workflows/deploy.yml在你的仓库中新建.github/workflows/deploy.yml文件内容如下name: Deploy Reflex App on: push: branches: - main jobs: deploy: runs-on: ubuntu-latest steps: - name: Deploy to Reflex Cloud uses: reflex-dev/reflex-deploy-actionv1 with: auth_token: ${{ secrets.REFLEX_AUTH_TOKEN }} project_id: ${{ secrets.REFLEX_PROJECT_ID }} app_directory: my-app-folder # Optional, defaults to root extra_args: --region sjc # Optional python_version: 3.12 # Optional配置要点说明触发条件示例在main分支收到push时触发部署若希望每次 PR 合并或手动触发可改用pull_request/workflow_dispatch事件运行环境runs-on: ubuntu-latest即可满足构建需要核心步骤仅需一个uses: reflex-dev/reflex-deploy-actionv1步骤并通过with传入鉴权信息与部署参数密钥引用${{ secrets.REFLEX_AUTH_TOKEN }}与${{ secrets.REFLEX_PROJECT_ID }}是 GitHub 仓库 Secrets切勿把真实值直接写入 YAML。该 Action 底层会执行等效于reflex deploy的流程以DEPLOY编译上下文导出前后端产物并打包上传对应 reflex/hosting.py 中的prepare_deploy与export_for_deploy以及 deploy 命令实现。在无人工干预的 CI 环境中所有交互式提问都会被跳过部署完全由参数驱动。配置 GitHub SecretsAction 需要两个凭据请将它们以 GitHub 仓库 Secret 的形式保存进入你的 GitHub 仓库打开Settings Secrets and variables Actions创建Deploy模板的 Token在组织工作区的Tokens页面创建 Token选择Deploy模板该模板授予 Projects 与 Apps 的读写权限足以创建和部署应用并将项目范围限制为仅目标项目Only select projects然后将其保存为REFLEX_AUTH_TOKEN。Token 的创建、模板选择与项目范围限制详见 Tokens 文档创建REFLEX_PROJECT_ID从 Reflex Build 中目标项目的设置页复制项目 IDUUID 形式例如2a432b8f-2605-4753-####-####0cd1####保存为同名 Secret。该 ID 即reflex deploy --project PROJECT_ID中使用的项目 ID参见 Deploy Quick Start。安全实践依据 Tokens 文档每个 Token 只服务于单一用途仅授予所需资源与项目权限为 Token 设置与工作流生命周期匹配的过期时间自动化 Token 应存放于平台的 Secret 管理器即 GitHub Secrets切勿将 Token 提交进代码、截图或日志Token 不再需要或疑似泄露时立即吊销。说明Token 归属于创建者个人。若希望长期运行的自动化不依赖某个成员的账号状态如角色变动或离职建议改用组织拥有的 service account详见仓库中 docs/ai/organization 目录。Action 输入参数Inputs详解下表列出reflex-deploy-actionv1支持的全部输入参数名称描述必填默认值auth_token存储于 GitHub Secrets 的 Reflex 认证 Token是N/Aproject_id目标部署项目的 ID是N/Aapp_directory包含 Reflex 应用的目录否.仓库根目录extra_args透传给reflex deploy命令的附加参数否N/Apython_version部署环境使用的 Python 版本否3.12auth_token必填即REFLEX_AUTH_TOKEN用于对 Reflex Cloud 的 CLI/API 请求鉴权。可参考 Tokens 文档 使用--token参数的场景——在 CI 中通过${{ secrets.REFLEX_AUTH_TOKEN }}注入。project_id必填目标项目 ID。它对应reflex deploy --project PROJECT_ID中的项目 ID可在 Reflex Build 项目设置页复制。app_directory可选默认指向仓库根目录.。当 Reflex 应用位于子目录如my-app-folder时设置此项。注意无论指向何处应用根目录都应有requirements.txt其中包含全部 Python 依赖可用pip freeze requirements.txt生成。extra_args可选透传给reflex deploy的附加命令行参数多个参数以空格分隔。常用选项包括--region code指定部署区域可重复使用以部署到多个区域例如--region sjc --region iad未指定时默认使用sjc参见 Regions 文档 中的区域列表与 CLI 用法--env keyvalue设置环境变量可重复使用--vmtype id指定虚拟机规格默认c1m1可用reflex cloud vmtypes查询选项--config path指定云端配置文件如cloud-prod.yml--envfile path指定环境变量文件默认.env--description text为本次部署添加描述显示在部署历史中--no-ssr关闭服务端渲染默认开启--provider gcp与--gcp-connection name面向 GCP 的部署选项。完整参数清单可在 deploy 命令源码 中查看。python_version可选部署环境使用的 Python 版本默认3.12。建议与本地开发环境保持一致避免依赖解析差异。高级实践组合安全扫描、多环境与配置管理在部署前执行安全扫描Reflex 提供reflex cloud scan命令详见 security-scan.md可对应用源码做 Reflex 感知的安全审查。在 CI 中可将其与部署串联先扫描通过后再部署。单独的安全扫描工作流示例name: Security Scan on: pull_request: branches: - main jobs: scan: runs-on: ubuntu-latest steps: - uses: actions/checkoutv6 - uses: actions/setup-pythonv6 with: python-version: 3.12 - name: Install Reflex run: pip install reflex - name: Run security scan run: reflex cloud scan --no-interactive --fail-on high --token ${{ secrets.REFLEX_AUTH_TOKEN }}其中--no-interactive确保 CI 环境不会弹出交互提示--fail-on high让存在 high/critical 级别问题时命令以非零退出码结束从而阻断合并或后续部署。多环境部署结合cloud.yml配置文件Reflex 支持通过cloud.yml可由reflex cloud config生成定义部署配置且支持按环境拆分如cloud-dev.yml、cloud-staging.yml、cloud-prod.yml详见 config_file.md。在 GitHub Actions 中可通过extra_args指定配置文件实现多环境部署- name: Deploy to Production uses: reflex-dev/reflex-deploy-actionv1 with: auth_token: ${{ secrets.REFLEX_AUTH_TOKEN }} project_id: ${{ secrets.REFLEX_PROJECT_ID }} extra_args: --config cloud-prod.yml例如生产配置可定义多区域与更高规格name: myapp-production description: Production environment regions: sjc: 2 lhr: 1 vmtype: c4m4 hostname: myapp envfile: .env.production在 CI 中直接调用reflex deploy若不使用官方 Action也可以像安全扫描那样显式安装 Reflex 后直接执行部署命令- name: Install Reflex run: pip install reflex - name: Deploy run: reflex deploy --project ${{ secrets.REFLEX_PROJECT_ID }} --no-interactive --token ${{ secrets.REFLEX_AUTH_TOKEN }}注意reflex deploy默认是交互式命令会核对requirements.txt、确认新建应用、询问描述等参见 Deploy Quick Start在 CI 中必须显式传入--no-interactive并保证所需信息均由参数提供。所有 flag 值会在多次运行间保留见 Deploy Quick Start 中的相关提示因此 CI 中的参数传递应保持确定性。常见问题与排错Action 报版本过低确认本地与 CI 环境的 Reflex 版本均满足0.6.6reflex deploy在执行前会调用check_version()校验 reflex-hosting-cli 是否为最新版若落后会直接退出并提示升级参见 deployments.py。认证失败检查REFLEX_AUTH_TOKEN是否过期、项目范围是否包含目标项目。Token 过期后需在 Tokens 页面重新创建并更新 Secret。找不到应用目录应用不在仓库根目录时务必设置app_directory并确保该目录内含requirements.txt。部署到错误区域/规格通过extra_args传入--region、--vmtype或改用--config指定配置文件CLI 参数会覆盖配置文件中的对应值。CI 中卡在交互提示确保所有必要信息均已通过参数或 Secrets 提供并添加--no-interactive。小结通过reflex-dev/reflex-deploy-actionv1你可以用十几行 YAML 完成 Reflex 应用到 Reflex Cloud 的持续部署。核心要点可归纳为三点其一正确创建并保存REFLEX_AUTH_TOKEN与REFLEX_PROJECT_ID两个 Secrets其二理解五个输入参数的语义善用extra_args透传reflex deploy的丰富选项其三将安全扫描、cloud.yml多环境配置等能力融入流水线实现既自动化又受控的发布流程。相关命令与接口的底层实现可进一步阅读 reflex/hosting.py 与 deploy 命令源码。【免费下载链接】reflex️ Web apps in pure Python 项目地址: https://gitcode.com/GitHub_Trending/re/reflex创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表