Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

IBM i CI #46

Open
NattyNarwhal opened this issue Mar 3, 2023 · 0 comments
Open

IBM i CI #46

NattyNarwhal opened this issue Mar 3, 2023 · 0 comments

Comments

@NattyNarwhal
Copy link
Member

NattyNarwhal commented Mar 3, 2023

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.)

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant