cypress-io / cypress-docker-images

Docker images with Cypress dependencies and browsers
https://on.cypress.io/continuous-integration
MIT License
1.03k stars 380 forks source link

Update internal cypress image to use Debian Bookworm #1223

Closed AtofStryker closed 1 month ago

AtofStryker commented 1 month ago

The Cypress app team would like to use Debian bookworm as its default base for internal images over Bullseye. There is currently a hurdle with this as it requires cypress to update playwright-webkit from 1.24.2 to at least 1.47.2.

MikeMcC399 commented 1 month ago

@AtofStryker

The Cypress app team would like to use Debian bookworm as its default base for internal images over Bullseye.

Does that require a change in this repo? I don't see bullseye being used here anymore, but maybe I have overlooked something?

There is currently a hurdle with this as it requires cypress to update playwright-webkit from 1.24.2 to at least 1.47.2.

jennifer-shehane commented 1 month ago

@MikeMcC399 Yes, we want to add a base-internal image with bookworm.

MikeMcC399 commented 1 month ago

@jennifer-shehane

Yes, we want to add a base-internal image with bookworm.

That is what I don't understand, because such cypress/base-internal images already exist, although they use an older version of Debian bookworm (12.1) not the latest (12.7).

$ docker run --rm --entrypoint cat cypress/base-internal:18.17.1-bookworm /etc/debian_version
12.1

I don't know where this image came from though, as I can't find it under https://github.com/cypress-io/cypress-docker-images/tree/master/base-internal/releases/node-18, nor in any PR.

Similarly cypress/base-internal:18.17.1-yarn-berry is also based on Debian 12.1 bookworm.

Maybe this is a request for a new cypress/base-internal image with a higher version of Node.js if it is part of the Cypress 14 work?

jennifer-shehane commented 1 month ago

@MikeMcC399 Yah this is part of 14 work. It's intention is to build the binary on a distro that would support glibc 2.28, which is the same glibc version Node.js is using in LTS.

MikeMcC399 commented 1 month ago

@jennifer-shehane

Yah this is part of 14 work. It's intention is to build the binary on a distro that would support glibc 2.28, which is the same glibc version Node.js is using in LTS.

For Cypress 14 it would probably mean producing an image similar to the existing cypress/base-internal:18.17.1-bookworm fitting to whatever Electron version you go with. For example cypress/base-internal:20.17.0-bookworm for Electron v32.1.2.

Each of the following operating system versions meets the requirement of glibc >= 2.28 on Linux systems. It's not constrained to Debian 12 (bookworm), although of course this choice would fit:

OS version GLIBC version
Ubuntu 20.04.6 LTS ldd (Ubuntu GLIBC 2.31-0ubuntu9.16) 2.31
Ubuntu 22.04.5 LTS ldd (Ubuntu GLIBC 2.35-0ubuntu3.8) 2.35
Ubuntu 24.04.1 LTS ldd (Ubuntu GLIBC 2.39-0ubuntu8.3) 2.39
Debian 11.11 ldd (Debian GLIBC 2.31-13+deb11u11) 2.31
Debian 12.7 ldd (Debian GLIBC 2.36-9+deb12u8) 2.36
MikeMcC399 commented 1 month ago

@mschile

MikeMcC399 commented 1 month ago

@mschile

mschile commented 1 month ago

Has this issue been resolved through https://github.com/cypress-io/cypress-docker-images/pull/1226 from @ryanthemanuel?

Yeah, I'm considering closing this issue based on that PR.

I was puzzled by https://github.com/cypress-io/cypress/issues/30382. Was that deliberate or is it a typo?

Debian buster (version 10 - oldoldstable) reached end-of-life on June 30, 2024 already. See Debian LTS for overview. Debian bookworm (version 12 - stable) on the other hand is supported until June 2028.

The reference to buster is deliberate. We need to build better-sqlite3 with glibc 2.28 so we are going to use buster.

mschile commented 1 month ago

Closing as completed with https://github.com/cypress-io/cypress-docker-images/pull/1226.

Opened a new issue in the cypress repo to update the internal images being used.