Problem/Motivation
Once PHP 8.3 is available (with an appropriate release) we should add an environment for testing PHP 8.3 in DrupalCI
Schedule https://wiki.php.net/todo/php83
Choosing pre-release versions of PHP 8.3 that are worth testing
There is a documented policy for pre-release versions of PHP containers, which we should follow (could use updating):
https://www.drupal.org/drupalorg/docs/drupal-ci/drupalci-php-support-pol...
But in general:
- Updating a pre-release php container is a little tricky because the pre-releases can be hosted in non-standard ways (in individual developer namespaces) and because they may not have up-to-date extensions that we need.
- Ideally, we deploy a pre-release container only at the first beta phase
- In any case we want to try to avoid updating the container for every patch release, and select new betas to deploy strategically to save infra time.
This issue will be linked as a related issue to #3283358: [META] Make Drupal 9/10 compatible with PHP 8.2 and #3283449: Create a DrupalCI Environment for PHP 8.2
This issue will stay in 'postponed' until the appropriate release is available.
Proposed solution
To limit how much we have to chase head with this container- update it:
- Once for alpha
- Once for beta
- Once for RC
- Once for final
With an exception for an update if there's a known bug affecting us that has been fixed.
Remaining tasks
Make the new environment when this issue is 'un-postponed'
| Comment | File | Size | Author |
|---|
Issue fork drupalci_environments-3365510
Show commands
Start within a Git clone of the project using the version control instructions.
Or, if you do not have SSH keys set up on git.drupalcode.org:
- 3365510-rc2
changes, plain diff MR !19
- 3365510-rc1
changes, plain diff MR !15
- 3365510-php83-bookworm
changes, plain diff MR !10
- 3365510-beta1
changes, plain diff MR !9
- 3365510-alpha3
changes, plain diff MR !8
- 3365510-83-alpha2
changes, plain diff MR !7
- 3365510-php83
changes, plain diff MR !6
- production
compare
- dev
compare
- 3365510-sqlite
compare
Comments
Comment #3
andypostUsed to build fine locally
- upgraded APCu to latest https://github.com/krakjoe/apcu/releases/tag/v5.1.22 vs 8.2 using 8.3.5
- latest drush8 https://github.com/drush-ops/drush/releases/tag/8.4.12 vs 8.2 using 5.1.20
Needs to fix m4 file generators!
3 source will vary while not stable so I hardcoded to build locally
After build I was able to use it
Comment #4
andypostI was able to install core and drush using sqlite DB,
Also using `--ignore-platform-reqs` for drush because
Comment #5
andypostThe image size is 1.56GB but it can be minified x3 so each job will download/run less (near 1 minute)
Comment #8
hestenetMerged and waiting to confirm it works, with these 2 queued jobs:
Queueing: 8.3 and MySql8 on 11.x: https://www.drupal.org/pift-ci-job/2691057
Queuing: 8.3 and MySQL 8 on 10.1.x: https://www.drupal.org/pift-ci-job/2691058
Comment #9
andypostHere's alpha2 tarballs https://downloads.php.net/~eric/
Comment #14
andypost@hestenet There's MR for alpha 3 https://git.drupalcode.org/project/drupalci_environments/-/merge_requests/8
Comment #15
bradjones1Per conversation at https://drupal.slack.com/archives/C1BMUQ9U6/p1689006958360499?thread_ts=... I think we would like to ensure this includes SQLite >= 3.38 to ensure it has support for pointer query syntax on JSON data storage.
Comment #16
daffie commentedLets go for SQLite v3.42.
Comment #18
andypostBeta 1 is out but API still not yet frozen.
As I see all deprecation RFCs are commited so it's time to fix'em
@hestenet https://git.drupalcode.org/project/drupalci_environments/-/merge_requests/9
Comment #19
hestenetImages were updated to 8.3-beta1:
Still looking at how best to update the sqlite version, as we don't currently define explicitly in the same way.
Comment #20
andypostThere's idea about sqlite - we can upgrade PHP 8.3 image to use current stable debian https://packages.debian.org/bookworm/sqlite3
It has
3.40.1and using it as test base brings CI inline with Debian derivativesComment #22
andypostIt is blocked on build infra upgrade to allow build the images based on bookworm (apt keys changed)
Comment #24
andypostbeta 2 packaged https://git.drupalcode.org/project/drupalci_environments/-/merge_request...
Comment #28
andypostCreated https://git.drupalcode.org/project/drupalci_environments/-/merge_request... which builds image but can't login to push (needs credentials)
Moreover it could use follow-ups to improve
-
- https://github.com/nodesource/distributions#debmanual
- https://docs.docker.com/build/building/multi-stage/ to slim down result image (option
--squasheven increases size)Comment #29
andypostThe issue has a patch which should pass tests for new image #3375693: Fix deprecated assert_options() function usage for PHP 8.3
Comment #30
hestenet8.3 image is deployed, and the DCI labels have been updated.
It's built with the new GitlabCI based process and should be running on more modern debian thanks to @andypost - so hopefully this also addresses the sqlite version issue from #15
Comment #32
andypostUsed cherry-pick to move commit to production branch https://git.drupalcode.org/project/drupalci_environments/-/merge_request...
Updated php:8.3 image deployed https://git.drupalcode.org/project/drupalci_environments/-/jobs/72220
Only label updates are a question of remaining automation
Test run https://www.drupal.org/pift-ci-job/2751543
Comment #34
andypostMerged RC2 to dev for testing https://git.drupalcode.org/project/drupalci_environments/-/commit/a633d7...
Gonna cherry-pick the commit when release will be announced https://git.drupalcode.org/project/drupalci_environments/-/merge_request...
Comment #35
andypostFurther split onto cli/apache/yarn images still promissing after sqlite image landed
Comment #36
andypostPushed 8.3.1 upgrade so consider it fixed, see you in optimization issue #3387737: Split PHP image into php(cli/apache) and yarn(node/nightwatch)