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

GitHub Action复用工作流:Azure部署避免重复pip install

解决GitHub Actions中Deploy复用Build依赖的问题

要避免Deploy阶段重复执行pip install,核心是把Build阶段已安装好依赖的虚拟环境(venv)一起打包为Artifact,在Deploy阶段直接复用,具体修改如下:

1. 调整Build阶段的Artifact上传规则

原配置排除了venv/目录,现在需要保留该目录,确保已安装的依赖能被传递到Deploy阶段:

- name: Upload artifact for deployment jobs
  uses: actions/upload-artifact@v2
  with:
    name: python-app
    path: . # 直接上传整个项目目录,包含venv

2. 在Deploy阶段激活虚拟环境

下载Artifact后,激活Build阶段创建的虚拟环境,让后续部署流程直接使用已安装的依赖:

- name: Download artifact from build job
  uses: actions/download-artifact@v2
  with:
    name: python-app
    path: .

- name: Activate virtual environment
  run: |
    source venv/bin/activate
    # 可选:验证依赖状态,比如执行 pip list 确认已安装包

- name: 'Deploy to Azure Web App'
  uses: azure/webapps-deploy@v2
  id: deploy-to-webapp
  with:
    app-name: 'project-prod'
    slot-name: 'Production'
    publish-profile: ${{ secrets.somesecrethere }}

修改后的完整配置

build:
  runs-on: ubuntu-latest
  needs: create-envfile
  steps:
    - uses: actions/checkout@v2
    - name: Set up Python version
      uses: actions/setup-python@v1
      with:
        python-version: '3.8'
    - name: Create and start virtual environment
      run: |
        python -m venv venv
        source venv/bin/activate

    - name: Install dependencies
      run: |
        eval `ssh-agent -s`
        cat ./.github/workflows/id_rsa | ssh-add -
        pip install -r requirements.txt

    - name: Upload artifact for deployment jobs
      uses: actions/upload-artifact@v2
      with:
        name: python-app
        path: .

deploy:
  runs-on: ubuntu-latest
  needs: build
  environment:
      name: 'Production'
      url: ${{ steps.somesecret }}

  steps:
    - name: Download artifact from build job
      uses: actions/download-artifact@v2
      with:
        name: python-app
        path: .

    - name: Activate virtual environment
      run: |
        source venv/bin/activate

    - name: 'Deploy to Azure Web App'
      uses: azure/webapps-deploy@v2
      id: deploy-to-webapp
      with:
        app-name: 'project-prod'
        slot-name: 'Production'
        publish-profile: ${{ secrets.somesecrethere }}

补充优化(可选)

如果Azure Web App部署流程默认会自动触发pip install,可以在项目根目录添加.deployment文件,指定使用虚拟环境的Python解释器,示例内容如下:

[config]
command = source venv/bin/activate && gunicorn --bind=0.0.0.0 --workers=4 app:app

(请根据你的项目实际启动命令调整)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.17 03:40:40