Siapkan PHP dengan ekstensi yang diperlukan, konfigurasi php.ini, dukungan cakupan kode, dan berbagai alat seperti komposer di GitHub Actions. Tindakan ini memberi Anda antarmuka lintas platform untuk menyiapkan lingkungan PHP yang Anda perlukan untuk menguji aplikasi Anda. Lihat bagian Penggunaan dan contoh untuk melihat cara menggunakannya.
Baik runner GitHub-hosted
maupun self-hosted
didukung oleh setup-php
pada OS/Platform berikut.
Lingkungan maya | Label alur kerja YAML | PHP yang sudah diinstal sebelumnya |
---|---|---|
Ubuntu 24.04 | ubuntu-24.04 | PHP 8.3 |
Ubuntu 22.04 | ubuntu-latest atau ubuntu-22.04 | PHP 8.1 |
Ubuntu 20.04 | ubuntu-20.04 | PHP 7.4 hingga PHP 8.3 |
WindowsServer 2022 | windows-latest atau windows-2022 | PHP 8.3 |
WindowsServer 2019 | windows-2019 | PHP 8.3 |
macOS Sequoia 15.x | macos-15 | - |
macOS Sonoma 14.x | macos-latest atau macos-14 | - |
macOS Ventura 13.x | macos-13 | PHP 8.3 |
OS host/lingkungan virtual | Label alur kerja YAML |
---|---|
Ubuntu 24.04 | self-hosted atau Linux |
Ubuntu 22.04 | self-hosted atau Linux |
Ubuntu 20.04 | self-hosted atau Linux |
Debian 12 | self-hosted atau Linux |
Debian 11 | self-hosted atau Linux |
Windows 7 dan yang lebih baru | self-hosted atau Windows |
Windows Server 2012 R2 dan yang lebih baru | self-hosted atau Windows |
macOS Sequoia 15.x x86_64/arm64 | self-hosted atau macOS |
macOS Sonoma 14.x x86_64/arm64 | self-hosted atau macOS |
macOS Ventura 13.x x86_64/arm64 | self-hosted atau macOS |
setup-php
akan beralih ke versi tersebut, jika tidak maka versi PHP akan diinstal. Pada semua OS/Platform yang didukung, versi PHP berikut dapat diatur sesuai runner.
Versi PHP | Stabilitas | Rilis Dukungan | Dukungan Pelari |
---|---|---|---|
5.3 | Stable | End of life | GitHub-hosted |
5.4 | Stable | End of life | GitHub-hosted |
5.5 | Stable | End of life | GitHub-hosted |
5.6 | Stable | End of life | GitHub-hosted , self-hosted |
7.0 | Stable | End of life | GitHub-hosted , self-hosted |
7.1 | Stable | End of life | GitHub-hosted , self-hosted |
7.2 | Stable | End of life | GitHub-hosted , self-hosted |
7.3 | Stable | End of life | GitHub-hosted , self-hosted |
7.4 | Stable | End of life | GitHub-hosted , self-hosted |
8.0 | Stable | End of life | GitHub-hosted , self-hosted |
8.1 | Stable | Security fixes only | GitHub-hosted , self-hosted |
8.2 | Stable | Active | GitHub-hosted , self-hosted |
8.3 | Stable | Active | GitHub-hosted , self-hosted |
8.4 | Stable | Active | GitHub-hosted , self-hosted |
8.5 | Nightly | In development | GitHub-hosted , self-hosted |
Catatan:
8.5
dalam input php-version
akan menginstal build malam PHP 8.5.0-dev
. Lihat pengaturan build malam untuk informasi lebih lanjut.PHP 8.0
dan yang lebih baru, lihat bagian konfigurasi JIT. Ekstensi PHP dapat diatur menggunakan input extensions
. Ia menerima string
dalam format csv.
Ubuntu
, ekstensi yang tersedia sebagai paket, tersedia di PECL
atau repositori git dapat diatur. - name : Setup PHP with PECL extension
uses : shivammathur/setup-php@v2
with :
php-version : ' 8.4 '
extensions : imagick, swoole
Di Windows
, ekstensi yang tersedia di PECL
yang memiliki biner DLL
dapat diatur.
Di macOS
, ekstensi yang tersedia di PECL
atau repositori git dapat diatur.
Di Ubuntu
dan macOS
untuk mengkompilasi dan menginstal ekstensi dari repositori git, ikuti panduan ini.
Ekstensi yang diinstal bersama dengan PHP jika ditentukan diaktifkan.
Versi ekstensi tertentu yang tersedia di PECL
dapat diatur dengan menambahkan akhiran nama ekstensi dengan versinya. Ini berguna untuk menginstal ekstensi versi lama yang mendukung versi PHP yang sudah habis masa pakainya.
- name : Setup PHP with specific version of PECL extension
uses : shivammathur/setup-php@v2
with :
php-version : ' 5.4 '
extensions : swoole-1.9.3
PECL
dapat diatur dengan menambahkan akhiran nama ekstensi dengan statusnya yaitu alpha
, beta
, devel
atau snapshot
. - name : Setup PHP with pre-release PECL extension
uses : shivammathur/setup-php@v2
with :
php-version : ' 8.4 '
extensions : xdebug-beta
Di Ubuntu
dan macOS
untuk mengkompilasi dan menginstal ekstensi dari PECL dengan perpustakaan atau konfigurasi khusus, ikuti panduan ini.
Ekstensi bersama dapat dinonaktifkan dengan mengawalinya dengan :
. Semua ekstensi bergantung pada ekstensi yang ditentukan juga akan dinonaktifkan.
- name : Setup PHP and disable opcache
uses : shivammathur/setup-php@v2
with :
php-version : ' 8.4 '
extensions : :opcache
none
. Jika none
yang ditentukan bersama dengan ekstensi lainnya, ekstensi tersebut akan diangkat ke awal masukan. Jadi, semua ekstensi yang dibagikan akan dinonaktifkan terlebih dahulu, kemudian ekstensi lainnya yang dimasukkan akan diproses. Catatan: Ini menonaktifkan semua ekstensi inti dan ekstensi bersama pihak ketiga sehingga dapat merusak beberapa alat yang memerlukannya. Ekstensi yang diperlukan diaktifkan kembali ketika alat disiapkan berdasarkan upaya terbaik. Jadi disarankan untuk menambahkan ekstensi yang diperlukan untuk alat Anda setelah none
extensions
yang dimasukkan untuk menghindari masalah apa pun.
- name : Setup PHP without any shared extensions except mbstring
uses : shivammathur/setup-php@v2
with :
php-version : ' 8.4 '
extensions : none, mbstring
intl
dapat diatur dengan versi ICU
tertentu untuk PHP 5.6
dan lebih tinggi di alur kerja Ubuntu
dengan menambahkan intl
dengan versi ICU
. ICU 50.2
dan versi yang lebih baru didukung. Lihat ICU builds
untuk versi spesifik yang didukung. - name : Setup PHP with intl
uses : shivammathur/setup-php@v2
with :
php-version : ' 8.4 '
extensions : intl-70.1
Ekstensi yang dimuat secara default setelah setup-php
dijalankan dapat ditemukan di wiki.
Ekstensi ini memiliki dukungan khusus:
cubrid
dan pdo_cubrid
di Ubuntu
.event
, gearman
, geos
dan relay
di Ubuntu
dan macOS
.blackfire
, couchbase
, ioncube
, oci8
, pdo_firebird
, pdo_oci
, pecl_http
, phalcon3
, phalcon4
, phalcon5
, dan zephir_parser
di semua OS yang didukung. Secara default, ekstensi yang tidak dapat ditambahkan atau dinonaktifkan akan meninggalkan pesan kesalahan di log, eksekusi tidak terganggu. Untuk mengubah perilaku ini, Anda dapat menyetel tanda fail-fast
ke true
.
- name : Setup PHP with fail-fast
uses : shivammathur/setup-php@v2
with :
php-version : ' 8.4 '
extensions : oci8
env :
fail-fast : true
Alat-alat ini dapat diatur secara global menggunakan masukan tools
. Ia menerima string dalam format csv.
behat
, blackfire
, blackfire-player
, box
, castor
, churn
, codeception
, composer
, composer-dependency-analyser
, composer-normalize
, composer-prefetcher
, composer-require-checker
, composer-unused
, cs2pr
, deployer
, ecs
, flex
, grpc_php_plugin
, infection
, parallel-lint
, pecl
, phan
, phing
, phinx
, phive
, php-config
, php-cs-fixer
, php-scoper
, phpcbf
, phpcpd
, phpcs
, phpdoc
atau phpDocumentor
, phpize
, phplint
, phpmd
, phpspec
, phpstan
, phpunit
, phpunit-bridge
, phpunit-polyfills
, pint
, prestissimo
, protoc
, psalm
, rector
, symfony
atau symfony-cli
, vapor
atau vapor-cli
, wp
atau wp-cli
- name : Setup PHP with tools
uses : shivammathur/setup-php@v2
with :
php-version : ' 8.4 '
tools : php-cs-fixer, phpunit
vendor/package
yang cocok dengan daftar di Packagist. Format ini menerima batasan versi yang sama dengan composer
. - name : Setup PHP with tools
uses : shivammathur/setup-php@v2
with :
php-version : ' 8.4 '
tools : vimeo/psalm
Untuk menyiapkan versi alat tertentu, tentukan dalam formulir tool:version
.
Versi dapat dalam format berikut:
tool:1.2.3
atau tool:1.2.3-beta1
.tool:1
atau tool:1.x
.tool:1.2
atau tool:1.2.x
. Ketika Anda hanya menentukan versi mayor atau versi dalam format major.minor
, versi patch terbaru yang cocok dengan input akan dikonfigurasi.
Dengan pengecualian composer
versi mayor, jika Anda hanya menentukan versi major
atau versi dalam format major.minor
untuk suatu alat, Anda bisa mendapatkan tarif yang dibatasi oleh API GitHub. Untuk menghindari hal ini, disarankan untuk menyediakan token GitHub
OAuth. Anda dapat melakukannya dengan mengatur variabel lingkungan GITHUB_TOKEN
. Variabel lingkungan COMPOSER_TOKEN
sudah tidak digunakan lagi dan digantikan dengan GITHUB_TOKEN
dan akan dihapus pada versi utama berikutnya.
- name : Setup PHP with tools
uses : shivammathur/setup-php@v2
with :
php-version : ' 8.4 '
tools : php-cs-fixer:3.64, phpunit:11.4
env :
GITHUB_TOKEN : ${{ secrets.GITHUB_TOKEN }}
composer
versi stabil terbaru diatur secara default. Anda dapat mengatur versi composer
yang diperlukan dengan menentukan versi mayor v1
atau v2
, atau versi dalam format major.minor
atau semver
. Selain itu, untuk snapshot
dan preview
komposer juga dapat ditentukan untuk mengatur rilis masing-masing. - name : Setup PHP with composer v2
uses : shivammathur/setup-php@v2
with :
php-version : ' 8.4 '
tools : composer:v2
tools: none
untuk melewatinya. - name : Setup PHP without composer
uses : shivammathur/setup-php@v2
with :
php-version : ' 8.4 '
tools : none
Alat pear
, pecl
, phpize
dan php-config
diatur secara default untuk semua versi PHP yang didukung di Linux dan macOS.
Versi terbaru dari blackfire
cli diatur ketika blackfire
ditentukan dalam input alat. Silakan merujuk ke dokumentasi resmi untuk menggunakan blackfire
dengan GitHub Actions.
Alat prestissimo
dan composer-prefetcher
akan dilewati kecuali composer:v1
juga ditentukan dalam input alat. Disarankan untuk menghapus prestissimo
dan menggunakan composer v2
.
Secara default, kecuali alat composer
yang tidak dapat diatur dengan baik meninggalkan pesan kesalahan di log, eksekusi tidak terganggu. Untuk mengubah perilaku ini, Anda dapat menyetel tanda fail-fast
ke true
.
- name : Setup PHP with fail-fast
uses : shivammathur/setup-php@v2
with :
php-version : ' 8.4 '
tools : deployer
env :
fail-fast : true
Catatan
tools
input berguna untuk menyiapkan alat yang hanya digunakan dalam alur kerja CI, sehingga composer.json
Anda tetap rapi.--no-dev
dan menginstal alat yang diperlukan menggunakan input tools
untuk mempercepat alur kerja Anda.COMPOSER_NO_INTERACTION
disetel ke 1
dan COMPOSER_PROCESS_TIMEOUT
disetel ke 0
. Artinya, perintah Komposer di skrip Anda tidak perlu menentukan --no-interaction
.COMPOSER_NO_AUDIT
disetel ke 1
. Jadi jika Anda ingin mengaudit dependensi Anda untuk mengetahui kerentanan keamanan, disarankan untuk menambahkan langkah composer audit
sebelum Anda menginstalnya.COMPOSER_PROCESS_TIMEOUT
yang berbeda, Anda dapat menyetelnya di file alur kerja Anda menggunakan kata kunci env
. - name : Setup PHP with composer and custom process timeout
uses : shivammathur/setup-php@v2
with :
php-version : ' 8.4 '
env :
COMPOSER_PROCESS_TIMEOUT : 300
Tentukan coverage: xdebug
untuk menggunakan Xdebug
dan menonaktifkan PCOV
.
Berjalan di semua versi PHP yang didukung.
- name : Setup PHP with Xdebug
uses : shivammathur/setup-php@v2
with :
php-version : ' 8.4 '
coverage : xdebug
coverage: xdebug
, versi terbaru Xdebug yang kompatibel dengan versi PHP sudah diatur secara default.coverage: xdebug2
. - name : Setup PHP with Xdebug 2.x
uses : shivammathur/setup-php@v2
with :
php-version : ' 7.4 '
coverage : xdebug2
Catatan : Xdebug diaktifkan secara default pada gambar Ubuntu GitHub Actions, jadi jika Anda tidak menggunakannya dalam alur kerja Anda, disarankan untuk menonaktifkannya karena ini akan berdampak positif pada kinerja PHP Anda. Silakan merujuk ke bagian menonaktifkan cakupan untuk detailnya.
Tentukan coverage: pcov
untuk menggunakan PCOV
dan nonaktifkan Xdebug
.
Berjalan pada PHP 7.1 dan versi PHP yang lebih baru.
src
, lib
atau, app
, tentukan pcov.directory
menggunakan input ini-values
. - name : Setup PHP with PCOV
uses : shivammathur/setup-php@v2
with :
php-version : ' 8.4 '
ini-values : pcov.directory=api # optional, see above for usage.
coverage : pcov
pcov/clobber
sebelum menjalankan pengujian. - name : Setup PCOV
run : |
composer require pcov/clobber
vendor/bin/pcov clobber
Tentukan coverage: none
untuk menonaktifkan Xdebug
dan PCOV
.
Nonaktifkan cakupan karena alasan berikut:
phpdbg
untuk menjalankan pengujian Anda.blackfire
.- name : Setup PHP with no coverage driver
uses : shivammathur/setup-php@v2
with :
php-version : ' 8.4 '
coverage : none
Tentukan penggunaan
with
kata kunci
php-version
(opsional)string
. Misalnya '8.4'
.lowest
untuk menyiapkan versi PHP terendah yang didukung.highest
atau latest
untuk menyiapkan versi PHP stabil terbaru.nightly
untuk menyiapkan build nightly dari cabang master PHP.dx
, dengan d
versi utama. Misalnya 5.x
, 7.x
dan 8.x
.php-version-file
jika adacomposer.lock
dan nilai platform-overrides.php
composer.json
dan nilai config.platform.php
php-version-file
(opsional)string
. Misalnya '.phpenv-version'
..php-version
digunakan..php-version
default tidak ditemukan, versi PHP stabil terbaru telah disiapkan. extensions
(opsional)string
dalam format csv. Misalnya mbstring, :opcache
.none
untuk menonaktifkan semua ekstensi bersama.:
dinonaktifkan.ini-file
(opsional)php.ini
.production
, development
atau none
.php.ini
digunakan. ini-values
(opsional)php.ini
.string
dalam format csv. Misalnya post_max_size=256M, max_execution_time=180
.xdebug.mode="develop,coverage"
. coverage
(opsional)xdebug
, pcov
atau none
.tools
(opsional)string
dalam format csv. Misalnya: phpunit, phpcs
php-version
Pada GitHub Actions Anda dapat menetapkan langkah setup-php
sebuah id
, Anda dapat menggunakan hal yang sama untuk mendapatkan output di langkah selanjutnya.
- name : Setup PHP
id : setup-php
uses : shivammathur/setup-php@v2
with :
php-version : ' 8.4 '
- name : Print PHP version
run : echo ${{ steps.setup-php.outputs.php-version }}
Tentukan menggunakan kata kunci
env
fail-fast
(opsional)false
.true
dan false
. phpts
(opsional)nts
untuk non-thread-safe dan zts
atau ts
untuk thread-safe.nts
.update
(opsional)true
dan false
.false
.Lihat di bawah untuk informasi lebih lanjut.
Siapkan versi PHP tertentu.
steps :
- name : Setup PHP
uses : shivammathur/setup-php@v2
with :
php-version : ' 8.4 '
extensions : mbstring, intl
ini-values : post_max_size=256M, max_execution_time=180
coverage : xdebug
tools : php-cs-fixer, phpunit
Siapkan beberapa versi PHP di beberapa sistem operasi.
jobs :
run :
runs-on : ${{ matrix.operating-system }}
strategy :
matrix :
operating-system : ['ubuntu-latest', 'windows-latest', 'macos-latest']
php-versions : ['8.2', '8.3', '8.4']
phpunit-versions : ['latest']
include :
- operating-system : ' ubuntu-latest '
php-versions : ' 8.1 '
phpunit-versions : 10
steps :
- name : Setup PHP
uses : shivammathur/setup-php@v2
with :
php-version : ${{ matrix.php-versions }}
extensions : mbstring, intl
ini-values : post_max_size=256M, max_execution_time=180
coverage : xdebug
tools : php-cs-fixer, phpunit:${{ matrix.phpunit-versions }}
env :
GITHUB_TOKEN : ${{ secrets.GITHUB_TOKEN }}
Siapkan build malam
PHP 8.5
.
steps :
- name : Setup nightly PHP
uses : shivammathur/setup-php@v2
with :
php-version : ' 8.5 '
extensions : mbstring
ini-values : post_max_size=256M, max_execution_time=180
coverage : xdebug
tools : php-cs-fixer, phpunit
Siapkan build PHP dengan simbol debugging.
debug
untuk menyiapkan build dengan simbol debugging untuk PHP 5.6 dan yang lebih baru.Catatan
/usr/lib/debug/.build-id
. File-file ini cocok dengan build-id
di bagian ELF dari biner PHP dan alat debugging seperti gdb
dapat menyelesaikan simbol-simbol dari file-file ini.pdb
di direktori instalasi PHP. steps :
- name : Setup PHP with debugging symbols
uses : shivammathur/setup-php@v2
with :
php-version : ' 8.4 '
env :
debug : true # specify true or false
Siapkan
TS
atauNTS
PHP.
NTS
diatur secara default. jobs :
run :
runs-on : [ubuntu-latest, windows-latest, macos-latest]
name : Setup PHP TS
steps :
- name : Setup PHP
uses : shivammathur/setup-php@v2
with :
php-version : ' 8.4 '
env :
phpts : ts # specify ts or nts
Perbarui ke patch terbaru versi PHP.
ppa:ondrej/php
tidak ada di lingkungan GitHub Ubuntu, versi PHP diperbarui ke rilis patch terbaru.update
ke true
untuk memperbarui ke rilis terbaru. - name : Setup PHP with latest versions
uses : shivammathur/setup-php@v2
with :
php-version : ' 8.4 '
env :
update : true # specify true or false
Debug alur kerja Anda
Untuk men-debug masalah apa pun, Anda dapat menggunakan tag verbose
alih-alih v2
.
- name : Setup PHP with logs
uses : shivammathur/setup-php@verbose
with :
php-version : ' 8.4 '
Siapkan PHP pada berbagai arsitektur di Ubuntu GitHub Runners.
PHP 5.6
hingga PHP 8.4
didukung oleh setup-php
pada berbagai arsitektur di Ubuntu
.shivammathur/node
sebagai wadah. Ini telah menginstal Nodejs
yang kompatibel untuk setup-php
.ARM
, Anda memerlukan runner yang dihosting sendiri. jobs :
run :
runs-on : ubuntu-latest
container : shivammathur/node:latest-${{ matrix.arch }}
strategy :
matrix :
arch : ["amd64", "i386"]
steps :
- name : Install PHP
uses : shivammathur/setup-php@v2
with :
php-version : ' 8.4 '
Siapkan PHP pada runner yang dihosting sendiri.
Untuk menyiapkan runner yang dihosting sendiri dalam container, lihat panduan berikut sesuai sistem operasi dasar Anda.
Untuk menyiapkan runner secara langsung di OS host atau di mesin virtual, ikuti panduan persyaratan ini sebelum menyiapkan runner yang dihosting sendiri.
Jika alur kerja Anda menggunakan kontainer layanan, siapkan runner di host Linux atau di mesin virtual Linux. GitHub Actions tidak mendukung virtualisasi bersarang di Linux, sehingga layanan tidak akan berfungsi dalam kontainer yang di-docker.
Disarankan untuk menentukan variabel lingkungan runner
dengan nilai self-hosted
untuk lingkungan yang dihosting sendiri.
jobs :
run :
runs-on : self-hosted
strategy :
matrix :
php-versions : ['5.6', '7.0', '7.1', '7.2', '7.3', '7.4', '8.0', '8.1', '8.2', '8.3', '8.4']
name : PHP ${{ matrix.php-versions }}
steps :
- name : Setup PHP
uses : shivammathur/setup-php@v2
with :
php-version : ${{ matrix.php-versions }}
env :
runner : self-hosted
Catatan
self-hosted
seperti yang digunakan oleh pelari GitHub-hosted
.Uji alur kerja
Ubuntu
Anda secara lokal menggunakannektos/act
.
jobs :
run :
runs-on : ubuntu-latest
steps :
- name : Setup PHP
uses : shivammathur/setup-php@v2
with :
php-version : ' 8.4 '
Jalankan alur kerja secara lokal dengan act
menggunakan gambar buruh pelabuhan shivammathur/node
.
Pilih tag gambar yang cocok dengan properti runs-on
di alur kerja Anda. Misalnya, jika Anda menggunakan ubuntu-20.04
dalam alur kerja Anda, jalankan act -P ubuntu-20.04=shivammathur/node:2004
.
# For runs-on: ubuntu-latest
act -P ubuntu-latest=shivammathur/node:latest
# For runs-on: ubuntu-24.04
act -P ubuntu-24.04=shivammathur/node:2404
# For runs-on: ubuntu-22.04
act -P ubuntu-22.04=shivammathur/node:2204
# For runs-on: ubuntu-20.04
act -P ubuntu-20.04=shivammathur/node:2004
Aktifkan Just-in-time (JIT) pada PHP 8.0 dan yang lebih baru.
opcache
dalam mode cli dengan menyetel opcache.enable_cli=1
.Xdebug
, PCOV
, dan ekstensi lain yang menggantikan fungsi zend_execute_ex
, jadi atur coverage: none
dan nonaktifkan ekstensi tersebut jika ditambahkan.opcache.jit=1235
dan opcache.jit_buffer_size=256M
disetel yang dapat diubah menggunakan input ini-values
.official PHP documentation
. Misalnya untuk mengaktifkan JIT pada mode tracing
dengan ukuran buffer 64 MB
.
- name : Setup PHP with JIT in tracing mode
uses : shivammathur/setup-php@v2
with :
php-version : ' 8.4 '
coverage : none
ini-values : opcache.enable_cli=1, opcache.jit=tracing, opcache.jit_buffer_size=64M
Anda dapat melakukan cache ekstensi PHP menggunakan shivammathur/cache-extensions
dan action/cache
GitHub Actions. Ekstensi yang membutuhkan waktu sangat lama untuk disiapkan saat di-cache tersedia pada alur kerja berikutnya dan diaktifkan secara langsung. Ini mengurangi waktu eksekusi alur kerja.
Lihat shivammathur/cache-extensions
untuk detailnya.
Jika proyek Anda menggunakan komposer, Anda dapat mempertahankan direktori cache internal komposer. Dependensi yang di-cache dimuat secara langsung alih-alih mengunduhnya saat instalasi. File yang di-cache tersedia di seluruh proses pemeriksaan dan akan mengurangi waktu eksekusi alur kerja.
- name : Get composer cache directory
id : composer-cache
run : echo "dir=$(composer config cache-files-dir)" >> $GITHUB_OUTPUT
- name : Cache dependencies
uses : actions/cache@v4
with :
path : ${{ steps.composer-cache.outputs.dir }}
key : ${{ runner.os }}-composer-${{ hashFiles('**/composer.lock') }}
restore-keys : ${{ runner.os }}-composer-
- name : Install dependencies
run : composer install --prefer-dist
Catatan
vendor
menggunakan action/cache
karena akan memiliki efek samping.composer.lock
, Anda dapat menggunakan hash composer.json
sebagai kunci untuk cache Anda. key : ${{ runner.os }}-composer-${{ hashFiles('**/composer.json') }}
composer
dan menggunakan opsi prefer-lowest
dan prefer-stable
, Anda dapat menyimpannya dalam matriks Anda dan menambahkannya ke kunci. key : ${{ runner.os }}-composer-${{ matrix.prefer }}-${{ hashFiles('**/composer.lock') }}
restore-keys : ${{ runner.os }}-composer-${{ matrix.prefer }}-
Jika Anda memiliki sejumlah alur kerja yang menyiapkan beberapa alat atau memiliki banyak dependensi komposer, Anda mungkin mencapai batas laju GitHub untuk komposer. Selain itu, jika Anda hanya menentukan versi mayor atau versi dalam format major.minor
, Anda dapat mencapai batas kecepatan. Untuk menghindari hal ini, Anda dapat menentukan token OAuth
dengan mengatur variabel lingkungan GITHUB_TOKEN
. Anda dapat menggunakan rahasia GITHUB_TOKEN
untuk tujuan ini.
Variabel lingkungan COMPOSER_TOKEN
sudah tidak digunakan lagi dan digantikan dengan GITHUB_TOKEN
dan akan dihapus pada versi utama berikutnya.
- name : Setup PHP
uses : shivammathur/setup-php@v2
with :
php-version : ' 8.4 '
env :
GITHUB_TOKEN : ${{ secrets.GITHUB_TOKEN }}
Jika Anda menggunakan Private Packagist untuk dependensi komposer pribadi, Anda dapat mengatur variabel lingkungan PACKAGIST_TOKEN
untuk diautentikasi.
- name : Setup PHP
uses : shivammathur/setup-php@v2
with :
php-version : ' 8.4 '
env :
PACKAGIST_TOKEN : ${{ secrets.PACKAGIST_TOKEN }}
Selain GitHub atau Private Packagist, jika Anda ingin mengautentikasi repositori pribadi yang dihosting di tempat lain, Anda dapat mengatur variabel lingkungan COMPOSER_AUTH_JSON
dengan metode autentikasi dan kredensial dalam format json. Silakan merujuk ke bagian otentikasi dalam composer documentation
untuk lebih jelasnya.
- name : Setup PHP
uses : shivammathur/setup-php@v2
with :
php-version : ' 8.4 '
env :
COMPOSER_AUTH_JSON : |
{
"http-basic": {
"example.org": {
"username": "${{ secrets.EXAMPLE_ORG_USERNAME }}",
"password": "${{ secrets.EXAMPLE_ORG_PASSWORD }}"
}
}
}
Jika Anda harus menjalankan beberapa baris kode PHP dalam alur kerja Anda, Anda dapat melakukannya dengan mudah tanpa menyimpannya ke file.
Letakkan kode di properti run suatu langkah dan tentukan shell sebagai php {0}
.
- name : Setup PHP
uses : shivammathur/setup-php@v2
with :
php-version : ' 8.4 '
- name : Run PHP code
shell : php {0}
run : |
<?php
$welcome = "Hello, world";
echo $welcome;
Pencocokan masalah adalah konfigurasi json
yang mengidentifikasi kesalahan dan peringatan di log Anda dan menampilkannya secara jelas di UI Tindakan GitHub dengan menyorotnya dan membuat anotasi kode.
Siapkan pencocokan masalah untuk keluaran PHP
Anda dengan menambahkan langkah ini setelah langkah setup-php
.
- name : Setup problem matchers for PHP
run : echo "::add-matcher::${{ runner.tool_cache }}/php.json"
Siapkan pencocokan masalah untuk keluaran PHPUnit
Anda dengan menambahkan langkah ini setelah langkah setup-php
.
- name : Setup problem matchers for PHPUnit
run : echo "::add-matcher::${{ runner.tool_cache }}/phpunit.json"
PHPStan mendukung pelaporan kesalahan di GitHub Actions, sehingga tidak memerlukan pencocokan masalah.
- name : Setup PHP
uses : shivammathur/setup-php@v2
with :
php-version : ' 8.4 '
tools : phpstan
- name : Run PHPStan
run : phpstan analyse src
Mazmur mendukung pelaporan kesalahan di GitHub Actions dengan format keluaran github
.
- name : Setup PHP
uses : shivammathur/setup-php@v2
with :
php-version : ' 8.4 '
tools : psalm
- name : Run Psalm
run : psalm --output-format=github
Untuk alat yang mendukung pelaporan checkstyle
seperti phpstan
, psalm
, php-cs-fixer
dan phpcs
Anda dapat menggunakan cs2pr
untuk membubuhi keterangan pada kode Anda.
Sebagai contoh, lihat dokumentasi cs2pr.
Berikut ini contoh dengan
phpcs
.
- name : Setup PHP
uses : shivammathur/setup-php@v2
with :
php-version : ' 8.4 '
tools : cs2pr, phpcs
- name : Run phpcs
run : phpcs -q --report=checkstyle src | cs2pr
Contoh penggunaan setup-php
dengan berbagai framework dan paket PHP.
Kerangka/Paket | Berjalan terus | Alur kerja |
---|---|---|
api hitam | macOS , ubuntu , dan windows | blackfire.yml |
Pemain Api Hitam | macOS , ubuntu , dan windows | blackfire-player.yml |
CakePHP dengan MySQL dan Redis | ubuntu | kuephp-mysql.yml |
CakePHP dengan PostgreSQL dan Redis | ubuntu | cakephp-postgres.yml |
CakePHP tanpa layanan | macOS , ubuntu dan windows | cakephp.yml |
CodeIgniter | macOS , ubuntu dan windows | codeigniter.yml |
Lamina MVC | macOS , ubuntu dan windows | lamina-mvc.yml |
Laravel dengan MySQL dan Redis | ubuntu | laravel-mysql.yml |
Laravel dengan PostgreSQL dan Redis | ubuntu | laravel-postgres.yml |
Laravel tanpa layanan | macOS , ubuntu dan windows | laravel.yml |
Lumen dengan MySQL dan Redis | ubuntu | lumen-mysql.yml |
Lumen dengan PostgreSQL dan Redis | ubuntu | lumen-postgres.yml |
Lumen tanpa layanan | macOS , ubuntu , dan windows | lumen.yml |
Phalcon dengan MySQL | ubuntu | phalcon-mysql.yml |
Phalcon dengan PostgreSQL | ubuntu | phalcon-postgres.yml |
Akar/batuan dasar | ubuntu | batuan dasar.yml |
Akar/bijak | ubuntu | sage.yml |
Kerangka Ramping | macOS , ubuntu , dan windows | slim-framework.yml |
Simfoni dengan MySQL | ubuntu | symfony-mysql.yml |
Simfoni dengan PostgreSQL | ubuntu | symfony-postgres.yml |
Symfony tanpa layanan | macOS , ubuntu , dan windows | symfony.yml |
Kit Pemula Yii2 dengan MySQL | ubuntu | yii2-mysql.yml |
Kit Pemula Yii2 dengan PostgreSQL | ubuntu | yii2-postgres.yml |
v2
sebagai versi setup-php
. Ini adalah tag bergulir dan disinkronkan dengan rilis minor dan patch terbaru. Dengan v2
Anda secara otomatis mendapatkan perbaikan bug, patch keamanan, fitur baru dan dukungan untuk rilis PHP terbaru.verbose
dapat digunakan sementara. Ini menampilkan semua log dan juga disinkronkan dengan rilis terbaru.main
sebagai versi, ini mungkin merusak alur kerja Anda setelah rilis besar karena ada perubahan yang dapat mengganggu.v1
atau versi 1.xy
, Anda harus beralih ke v2 karena v1
tidak didukung lagi. setup-php
merupakan karya turunan dari logo php.net dan dilisensikan dibawah Lisensi CC BY-SA 4.0. Kontribusi dipersilahkan!
Kontributor setup-php
dan proyek terkait lainnya
setup-php
.Banyak pengguna dan organisasi mendukung setup-php melalui GitHub Sponsors.
Perusahaan-perusahaan ini dengan murah hati menyediakan setup-php produk dan layanan mereka untuk membantu pengembangan proyek ini.