You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何将Git忽略的.env.prod文件通过GitHub Actions部署到服务器?

用GitHub Actions通过SSH+rsync推送保密.env.prod文件到服务器

完全可以实现,核心思路是把.env.prod的内容存在GitHub Secrets中,在Action运行时动态生成文件,再通过SSH+rsync推送到服务器,具体步骤如下:

1. 把.env.prod内容及服务器信息存入GitHub Secrets

  • 打开你的GitHub仓库,进入「Settings」→「Secrets and variables」→「Actions」
  • 依次创建以下仓库Secret:
    • ENV_PROD_CONTENT:把本地.env.prod的完整内容粘贴进去(保留所有键值对和换行格式)
    • SERVER_HOST:服务器IP或域名
    • SERVER_USER:SSH登录用户名
    • SERVER_SSH_KEY:登录服务器的私钥完整文本(包含开头-----BEGIN RSA PRIVATE KEY-----和结尾-----END RSA PRIVATE KEY-----)
    • TARGET_PATH:服务器上存放.env.prod的目标目录(比如/var/www/your-project/)

2. 编写GitHub Actions Workflow文件

在仓库的.github/workflows目录下创建部署脚本,比如deploy-env.yml,内容如下:

name: Deploy .env.prod to Server
on:
  push:
    branches: [ main ] # 可改为你需要触发部署的分支
  workflow_dispatch: # 允许手动触发部署

jobs:
  deploy-env:
    runs-on: ubuntu-latest
    steps:
      - name: Checkout code
        uses: actions/checkout@v4

      - name: Generate .env.prod file
        run: |
          echo "${{ secrets.ENV_PROD_CONTENT }}" > .env.prod
          # 可选:验证文件生成是否正确
          cat .env.prod

      - name: Sync .env.prod to server via SSH+rsync
        uses: appleboy/ssh-action@v1.0.3
        with:
          host: ${{ secrets.SERVER_HOST }}
          username: ${{ secrets.SERVER_USER }}
          key: ${{ secrets.SERVER_SSH_KEY }}
          script: |
            # 确保目标目录存在,不存在则创建
            mkdir -p ${{ secrets.TARGET_PATH }}
            # 用rsync同步文件到服务器
            rsync -avz .env.prod ${{ secrets.SERVER_USER }}@${{ secrets.SERVER_HOST }}:${{ secrets.TARGET_PATH }}

关键细节说明

  • 动态生成文件时,echo "${{ secrets.ENV_PROD_CONTENT }}" > .env.prod会完整保留原文件的换行和格式,保证.env.prod的结构正确
  • rsync默认通过SSH加密传输文件,只要服务器SSH配置安全,传输过程就不会泄露内容
  • 可以通过GitHub仓库的「Actions」页面,手动触发Deploy .env.prod to Server workflow,无需依赖代码推送

内容的提问来源于stack exchange,提问作者chovy

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.01 21:37:08