systems:ci

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Next revision
Previous revision
systems:ci [2025/02/17 17:01] – created calvinbsystems:ci [2025/02/27 15:33] (current) – make link calvinb
Line 8: Line 8:
 ===== Self-hosted runner systems ===== ===== Self-hosted runner systems =====
  
-Currently, none are run by the project/foundation itself, and provided by the community.+Currently, none are run by the project/foundation itself, and provided by the community. Official runners (if they exist) should also be documented on [[:systems|the systems page]].
  
 ^ Name ^ Architecture ^ OS ^ CI Platform ^ Provided by ^ Notes ^ ^ Name ^ Architecture ^ OS ^ CI Platform ^ Provided by ^ Notes ^
-| php-ci-ppc64 | PowerPC 64-bit, big endian | Gentoo | GitHub Actions (github-act-runner) | calvinb@php.net | Attached, not yet running jobs |+[[systems:php-ci-ppc64|php-ci-ppc64]] | PowerPC 64-bit, big endian | Gentoo | GitHub Actions (github-act-runner) | calvinb@php.net | Attached, not yet running jobs. Should be containerized | 
 + 
 +==== Provisioning new runners ==== 
 + 
 +New self-hosted runners should only be necessary if we can't use a hosted platform for it (or a hosted platform is too expensive). Integrating with GitHub Actions is preferable. For platforms that the official GitHub Actions runner doesn't support, alternative implementations like [[https://github.com/ChristopherHX/github-act-runner|github-act-runner]] can be used. Ideally, new runner systems should be hosted in i.e. a datacentre 
 + 
 +The process looks something like this: 
 + 
 +  - Set up your runner, and make your fork of php-src use it. It's recommended you add a nightly flow instead of push, unless you have i.e. autoscaling. Iterate and trigger nightly runs manually. 
 +  - If your added workflow is in a good state, create a PR for it. 
 +  - Once the workflow is ready to be merged, but before it is merged, get the runner added to the php/php-src repository. 
 + 
 +== Notes on setup for non-Docker runners == 
 + 
 +For platforms that aren't containerized, you may need to set up things manually. For databases, make sure you set up the correct credentials. Note running tests in a container is a good idea for reproducibility/isolation/security reasons, but this might not be set up yet. 
 + 
 +Installing necessary libraries will depend on your OS and what extensions you want to test. 
 + 
 +**DBA**: You may need to use QDBM instead of GDBM. 
 + 
 +**Postgres**: You just need to set up a user if you aren't going to use root. Set the appropriate environment variables in your platform's test action and create a user and database like so: 
 + 
 +<code> 
 +CREATE ROLE ‘ci’ WITH LOGIN; 
 +\password ci 
 +CREATE DATABASE test WITH OWNER ci; 
 +</code> 
 + 
 +**MySQL**: The tests assume MySQL 8; you may run into issues with MariaDB. If you're running a non-root user, you must either set log_bin to off or log_bin_trust_function_creators to on. For creating a user and database: 
 + 
 +<code> 
 +CREATE DATABASE TEST; 
 +CREATE USER 'ci'@'localhost' IDENTIFIED BY 'ci’; 
 +GRANT SELECT, CREATE, DROP, SUPER ON *.* TO 'ci'@'localhost'; 
 +GRANT ALL PRIVILEGES ON test.* TO 'ci'@'localhost'; 
 +</code>
systems/ci.1739811717.txt.gz · Last modified: 2025/02/17 17:01 by calvinb