php / php/pecl-database-ibm_db2

IBM i CI

Open
#46 0 comments 1 reaction 0 assignees View on GitHub

Nobody has claimed this yet.

Dominant language
PHP
Stars
26
Forks
27
PR merge metrics
No merged PRs in 30d

Description

Most users of this driver are likely using it on IBM i, but we only run tests in CI on Linux (and build on Windows). For things that support LUW, this is still useful, but for things that support IBM i (i.e. Doctrine) it's only useful as a smoke test due to behaviour differences.

The big problems for IBM i CI are:

  • It's hard to have "disposable" IBM i environments. Does PowerVM or something have the ability to snapshot things and revert when done? (Maybe with an external SAN?)
    • We can drop the libraries that the test suite sets up initially. This would be the bare minimum.
    • It's harder if we want to have a matrix of i.e. PHP versions. Different versions means more LPARs or uninstalling and reinstalling specific versions. We could support just the latest version of PHP for an MVP.
    • The stakes are a bit higher if a malicious user runs a malicious action, because it's harder to revert as it affects a permanent environment. (Or if we use SSH, they could dump secrets...)
  • It's harder to get your hands on IBM i in the first place.
    • IBM or someone else (i.e. RZKH?) may be willing to host a partition for free. It would be ideal to have a (small) partition that wouldn't be affected by other users (introducing additional state, security, and performance problems).
    • Worst case, someone can pay for a partition. Licensing and special hardware make it a little expensive, but we could run pricing from i.e. iInTheCloud, RZKH, IBM Cloud, etc. This might not be adequate if the techniques to make a pristine environment can't be done this way.
  • Poor CI runner support: Most CI runners for GH Actions, GL, etc. are written in Go, and Go doesn't support PASE yet. There was an experimental port of Go 1.15, but it isn't actively supported. IBM is currently prioritizing Rust right now.
    • We could deploy something like Jenkins which uses i.e. a Java based runner, but we won't be able to use Actions. (That's probably not a big ask since IBM i would require different steps for running anyways.) We'd also have to run a Jenkins instance.
    • We could do everything over SSH, logging in as an low-privilege user (though that'd make installing things in the environment complicated), putting the credentials into secrets.

There also may be value in the (rare) case of LUW client connecting to IBM i serverr.

This issue also affects other things too like PDO_IBM, XMLSERVICE, and the Doctrine support for Db2i. (Poor CI availability is why Doctrine upstream was a bit cold to IBM i historically.)

Contributor guide

Open the contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Research direction

Start by comparing the IBM i CI options described in the issue: disposable environments, hosted partitions, Jenkins, and SSH-based execution. Define a viable minimum setup, including environment cleanup, PHP-version scope, credentials, and runner security; the issue is complete when a concrete, maintainable CI approach is selected.

Written by the indexing model from the issue text.

Assessment

Tech stack
github-actions, php
Domain
ci-cd, databases
Issue type
Feature
Difficulty
5/5
Estimated time
Over a week
Activity status
Stale
Clarity
Needs clarification
Newbie friendliness
25/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.