Cache PHP extensions in GitHub Actions. This action has to be used along with shivammathur/setup-php and actions/cache GitHub Actions. It configures the environment required to cache PHP extensions. Refer to Usage section to see how to use this.
| PHP Version | Stability | Release Support |
|---|---|---|
| 5.3 | Stable |
End of life |
| 5.4 | Stable |
End of life |
| 5.5 | Stable |
End of life |
| 5.6 | Stable |
End of life |
| 7.0 | Stable |
End of life |
| 7.1 | Stable |
End of life |
| 7.2 | Stable |
End of life |
| 7.3 | Stable |
Security fixes only |
| 7.4 | Stable |
Active |
| 8.0 | Stable |
Active |
| 8.1 | Nightly |
In development |
| Virtual environment | YAML workflow label |
|---|---|
| Windows Server 2019 | windows-latest or windows-2019 |
| Ubuntu 20.04 | ubuntu-20.04 |
| Ubuntu 18.04 | ubuntu-latest or ubuntu-18.04 |
| Ubuntu 16.04 | ubuntu-16.04 |
| macOS Catalina 10.15 | macos-latest or macOS-10.15 |
| macOS Big Sur 11.0 | macOS-11.0 |
Use this GitHub Action when the extensions you are adding in setup-php are installed and take a long time to set up. If you are using extensions which have the result Installed and enabled in the logs like pecl extensions on Ubuntu or extensions which have custom support, it is recommended to use this action to cache your extensions.
- Specify the PHP version you want to set up.
- Accepts a
string. For example'7.4'. - See PHP support for supported PHP versions.
- Specify the extensions you want to add or remove.
- Accepts a
stringin csv-format. For examplembstring, , xdebug, :opcache. - Extensions prefixed with
:are ignored.
- Specify the key to identify the cache version.
- Accepts any
string. For examplecache-v1. - Changing this would reset the cache.
See action.yml and usage below for more info.
Cache extensions in a PHP workflow
jobs:
run:
runs-on: ${{ matrix.operating-system }}
strategy:
matrix:
operating-system: [ubuntu-latest, windows-latest, macos-latest]
php-versions: ['7.2', '7.3', '7.4']
name: PHP ${{ matrix.php-versions }} Test on ${{ matrix.operating-system }}
env:
extensions: intl, pcov
key: cache-v1 # can be any string, change to clear the extension cache.
steps:
- name: Checkout
uses: actions/checkout@v2
- name: Setup cache environment
id: extcache
uses: shivammathur/cache-extensions@v1
with:
php-version: ${{ matrix.php-versions }}
extensions: ${{ env.extensions }}
key: ${{ env.key }}
- name: Cache extensions
uses: actions/cache@v2
with:
path: ${{ steps.extcache.outputs.dir }}
key: ${{ steps.extcache.outputs.key }}
restore-keys: ${{ steps.extcache.outputs.key }}
- name: Setup PHP
uses: shivammathur/setup-php@v2
with:
php-version: ${{ matrix.php-versions }}
extensions: ${{ env.extensions }}If you set up both TS and NTS PHP versions on Windows in your workflow, please add ${{ env.phpts }} to key and restore-keys inputs in actions/cache step in the above workflow to avoid a conflicting cache.
- name: Cache extensions
uses: actions/cache@v2
with:
path: ${{ steps.extcache.outputs.dir }}
key: ${{ steps.extcache.outputs.key }}-${{ env.phpts }}
restore-keys: ${{ steps.extcache.outputs.key }}-${{ env.phpts }}The scripts and documentation in this project are under the MIT License. This project has multiple dependencies. Their licenses can be found in their respective repositories.
Contributions are welcome! See Contributor's Guide. If you face any issues while using this or want to suggest a feature/improvement, create an issue here.
If this action helped you.
- Please star the project and share it. If you blog, please share your experience of using this action.
- Please consider supporting our work by sponsoring using Open Collective, Paypal or Patreon.
- If you use this action at your company, please reach out to sponsor the project.