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

如何在GitHub Actions中缓存PHP及Composer依赖安装步骤?

当然可以!这两个步骤都能通过优化实现缓存,帮你把工作流耗时从5分钟压缩到1分钟以内。

下面分两部分说明优化方案,再给出完整的重构后工作流:


1. 替换手动PHP安装为官方Action(自带缓存优化)

你现在手动用apt安装PHP和一堆扩展的步骤太繁琐,而且没法直接缓存整个环境。换成官方的shivammathur/setup-php Action就解决了——它会自动处理PHP版本、扩展安装,并且内部已经做了缓存,重复运行时会跳过已安装的内容,速度快很多。

你只需要指定PHP版本和需要的扩展列表,Action会帮你搞定所有依赖,包括pecl扩展(比如mcrypt)。

2. 缓存Composer依赖

对于Composer的依赖安装步骤,我们可以用actions/cache Action缓存两个关键内容:

  • 项目的vendor目录:存放安装好的依赖包
  • Composer的全局缓存目录:存放下载的包归档,避免重复下载

缓存的key基于composer.lock文件的哈希值——只有当依赖版本变化时,才会重新安装,否则直接使用缓存的内容。


重构后的完整工作流

name: Build
on:
  workflow_call:
jobs:
  build:
    runs-on: ubuntu-latest
    
    steps:
      - name: Checkout
        uses: actions/checkout@v2
        with:
          path: ./src

      - name: Setup PHP (with extensions)
        uses: shivammathur/setup-php@v2
        with:
          php-version: '8.1'
          extensions: gd, curl, soap, bcmath, intl, mbstring, xmlrpc, mysql, zip, gmp, xml, mcrypt, dev
          tools: composer:v2 # 指定Composer 2版本,省去手动更新步骤
          coverage: none # 如果不需要代码覆盖率工具,可以加上这个参数

      - name: Cache Composer dependencies
        uses: actions/cache@v3
        with:
          path: |
            ./src/vendor
            ~/.composer/cache/files
          key: ${{ runner.os }}-composer-${{ hashFiles('./src/composer.lock') }}
          restore-keys: |
            ${{ runner.os }}-composer-

      - name: Install Composer Dependencies
        run: |
          cd ./src/ || exit 99
          cp auth.json.pipeline auth.json
          composer install --no-dev --verbose --prefer-dist --no-ansi --no-interaction

关键优化点说明:

  • PHP安装部分:用setup-php替代手动apt命令,不仅代码简洁,而且Action会自动缓存PHP环境,重复运行时无需重新安装,这一步耗时能从几分钟降到十几秒。
  • Composer缓存部分:通过actions/cache,只有当composer.lock文件变化时才会重新下载依赖,否则直接读取缓存的vendor目录,这一步耗时能从几分钟降到几秒。
  • 省去了手动安装Composer和更新的步骤:setup-php的tools参数可以直接指定Composer版本,自动安装好,不需要你再用curl下载和手动更新。

这样调整后,整个工作流的耗时应该能控制在1分钟以内,完美解决你的问题!

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.04 18:40:39