PHP Project Adds GitHub Actions for CI/CD

Published On25 Feb 2022

PHP Project Moves to GitHub Actions from Azure Pipelines 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.

PHP's current CI/CD services in use
PHP's CI/CD services in use after adding GitHub Actions.

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.

In other news on PHP.Watch

All NewsFeed
PHP 8.4 Feature-freeze, first Release Candidate released

PHP 8.4 Feature-freeze, first Release Candidate released

The first release candidate of the upcoming PHP 8.4 is now out. PHP8.4-RC1 previews all new features, changes, and deprecations available on PHP 8.4, and can be used to test the compatibility of applications with PHP 8.4.
PHP Release Cycle Update

PHP Release Cycle Update

The PHP release cycle changes to extend the active support for all current and future PHP versions from one year to two years, and to align the support timelines to the end of the calendar year.
PHP 8.3 Released!

PHP 8.3 Released!

PHP 8.3 was released today, containing over 1,000 commits from over 100 contributors.
Subscribe to PHP.Watch newsletter for monthly updates

You will receive an email on last Wednesday of every month and on major PHP releases with new articles related to PHP, upcoming changes, new features and what's changing in the language. No marketing emails, no selling of your contacts, no click-tracking, and one-click instant unsubscribe from any email you receive.

Support PHP.Watch — If you find the articles, version information, Codex, and other PHP.Watch contributions useful, consider supporting through GitHub Sponsors. Your sponsorship helps dedicate more time to creating valuable content and improving the PHP community. Together, we can keep the momentum going — thank you for your support!

Thanks to the highest tier sponsor: @TomasVotruba for your generous support to keep PHP.Watch moving 💜