PHP Project Adds GitHub Actions for CI/CD
The PHP project currently use, and has previously used, several Continuous Integration / Continuous Delivery (CI/CD) platforms to test the PHP source code on various platforms and configurations each time commits are made to the source code repository.
PHP's test suite includes tests on Linux, Windows, and Mac OS platforms, as well as tests on different configurations such as tests with and without thread-safety, JIT, and Opcache. Additionally, it includes tests with database drivers such as Oracle database, and MySQL. There are over 17,000 tests covering various edge cases and features, and with various platforms and flags to test on, PHP's CI/CD process requires a significant amount of computing resources.
PHP historically used Travis CI, but they have been limiting their allowance of free builds for open-source repositories after being acquired by Idera.
PHP project currently uses AppVeyor for its Windows builds, Azure Pipelines for Mac OS and Linux tests, and Cirrus CI for FreeBSD builds.
After the canonical PHP Git repository has been moved to GitHub on March 2021, there has been further integrations with GitHub, such as allowing GitHub Issues to be used in place of the PHP's former bug tracker at bugs.php.net.
GitHub also offers its own CI/CD feature named GitHub Actions. It's relatively new to CI/CD space, but offers a more tightly integrated alternative to other CI/CD solutions with better integration with GitHub repositories, and free builds for open-source projects. GitHub Actions follows a very similar configuration format to Azure Pipelines, and PHP project already uses it on some routine tasks such as automatic up-keep of pull requests and issues.
PHP project recently started to use GitHub Actions for Linux and Mac OS builds. These workflows run in addition to existing Azure Pipelines builds for Linux and Mac OS for the time being. The new workflow is triggered for each code push to PHP branches 7.4, 8.0, 8.1, and main development branch. It builds and runs tests for PHP, including tests for several bundled PHP extensions, thread-safety on and off, JIT/Opcache on and off, and more.
With the wide availability of supported platforms on GitHub Actions, it is possible to consolidate the PHP project's current CI/CD space to GitHub Actions in the future.