【问题标题】:Caching setup steps such as installing PHP when using Github Actions缓存设置步骤,例如使用 Github Actions 时安装 PHP
【发布时间】:2023-01-14 02:47:01
【问题描述】:

我有一个工作流程,其中有一些设置步骤,可以安装带有一堆扩展和作曲家的 php。

是否可以缓存 Install PHPInstall Composer & Dependencies,这样这些步骤就不必在每次运行时都发生?

这些步骤加起来大约需要 4 分钟的 5 分钟跑步。

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

      - name: Install PHP
        run: |
          sudo apt-get update -y  && export DEBIAN_FRONTEND=noninteractive DEBCONF_NONINTERACTIVE_SEEN=true
          echo "tzdata tzdata/Areas select Europe" >> /tmp/preseed.cfg
          echo "tzdata tzdata/Zones/Europe select Berlin" >> /tmp/preseed.cfg
          sudo apt install software-properties-common -y
          sudo add-apt-repository ppa:ondrej/php
          sudo apt update
          sudo apt-get install php8.1 -y --quiet
          sudo apt-get install php8.1-dev libmcrypt-dev php-pear php-xml php8.1-xml -y
          sudo pecl channel-update pecl.php.net
          sudo apt-get install -y libapache2-mod-php8.1 php8.1-common php8.1-gmp php8.1-curl php8.1-soap php8.1-bcmath php8.1-intl php8.1-mbstring php8.1-xmlrpc php8.1-mysql php8.1-gd php8.1-xml php8.1-cli php8.1-zip
          sudo rm /usr/bin/php; sudo ln -sf /usr/bin/php8.1 /usr/bin/php

      - name: Install Composer & Dependencies
        run: |
          cd ./src/ || exit 99
          sudo apt-get install -y git zip libzip-dev openssh-client libmcrypt-dev
          sudo curl -sS https://getcomposer.org/installer | sudo php -- --install-dir=/usr/local/bin --filename=composer
          cp auth.json.pipeline auth.json
          sudo composer self-update --2
          composer install --no-dev --verbose --prefer-dist --no-ansi --no-interaction 

【问题讨论】:

    标签: github-actions


    【解决方案1】:

    我建议使用 Setup PHPInstall PHP Dependencies with Composer GitHub Actions 而不是手动安装具有依赖项的 PHP 和 Composer。

    这些动作已经有了缓存机制,并额外提供了许多有趣和有价值的东西。

    例如:

    name: PHP
    on:
      workflow_dispatch:
    
    jobs:
      build:
        runs-on: ubuntu-latest
    
        steps:
          - name: Checkout
            uses: actions/checkout@v3
    
          - uses: 'shivammathur/setup-php@v2'
            name: Setup PHP
            with:
              php-version: '8.1'
    
          - uses: 'ramsey/composer-install@v2'
            name: Install Composer & Dependencies
    
          - name: Run Script
            run: |
              php -v
              composer -v
    

    在我的小测试 PHP 项目上运行此 WF,几乎没有依赖关系,在没有缓存的情况下大约需要 30 秒,而在缓存存在时需要 20 秒。

    执行演示:Screenshot

    缓存演示:Screenshot

    此外,如果您需要为工作流程手动缓存某些内容,可以使用 Cache GitHub 操作。

    Learn more about managing caches

    【讨论】:

      猜你喜欢
      • 2021-05-02
      • 2020-11-08
      • 1970-01-01
      • 2020-11-28
      • 2020-01-11
      • 2021-12-29
      • 2020-05-12
      • 2019-08-02
      • 2021-12-27
      相关资源
      最近更新 更多