mirror of
https://github.com/cypress-io/cypress.git
synced 2026-05-07 23:40:21 -05:00
chore: build better-sqlite3 with glibc 2.28 (#30390)
This commit is contained in:
+74
-9
@@ -345,6 +345,9 @@ commands:
|
||||
only-cache-for-root-user:
|
||||
type: boolean
|
||||
default: false
|
||||
build-better-sqlite3:
|
||||
type: boolean
|
||||
default: false
|
||||
steps:
|
||||
- install_cache_helpers_dependencies
|
||||
- run:
|
||||
@@ -353,9 +356,18 @@ commands:
|
||||
- run:
|
||||
name: Generate platform key
|
||||
command: node ./scripts/get-platform-key.js > platform_key
|
||||
- restore_cache:
|
||||
name: Restore cache state, to check for known modules cache existence
|
||||
key: v{{ checksum ".circleci/cache-version.txt" }}-{{ checksum "platform_key" }}-state-of-node-modules-cache-{{ checksum "circle_cache_key" }}
|
||||
- when:
|
||||
condition: <<parameters.build-better-sqlite3>>
|
||||
steps:
|
||||
- restore_cache:
|
||||
name: Restore cache state, to check for known modules cache existence
|
||||
key: v{{ checksum ".circleci/cache-version.txt" }}-{{ checksum "platform_key" }}-state-of-node-modules-cache-{{ checksum "circle_cache_key" }}-better-sqlite3
|
||||
- unless:
|
||||
condition: <<parameters.build-better-sqlite3>>
|
||||
steps:
|
||||
- restore_cache:
|
||||
name: Restore cache state, to check for known modules cache existence
|
||||
key: v{{ checksum ".circleci/cache-version.txt" }}-{{ checksum "platform_key" }}-state-of-node-modules-cache-{{ checksum "circle_cache_key" }}
|
||||
- run:
|
||||
name: Bail if cache exists
|
||||
command: |
|
||||
@@ -377,6 +389,10 @@ commands:
|
||||
PERCY_POSTINSTALL_BROWSER=true \
|
||||
yarn --prefer-offline --frozen-lockfile --cache-folder ~/.yarn
|
||||
no_output_timeout: 20m
|
||||
- when:
|
||||
condition: <<parameters.build-better-sqlite3>>
|
||||
steps:
|
||||
- build-better-sqlite3
|
||||
- prepare-modules-cache:
|
||||
dont-move: <<parameters.only-cache-for-root-user>> # we don't move, so we don't hit any issues unpacking symlinks
|
||||
- when:
|
||||
@@ -399,11 +415,22 @@ commands:
|
||||
paths:
|
||||
- /tmp/node_modules_cache
|
||||
- run: touch node_modules_installed
|
||||
- save_cache:
|
||||
name: Saving node-modules cache state key
|
||||
key: v{{ checksum ".circleci/cache-version.txt" }}-{{ checksum "platform_key" }}-state-of-node-modules-cache-{{ checksum "circle_cache_key" }}
|
||||
paths:
|
||||
- node_modules_installed
|
||||
- when:
|
||||
condition: <<parameters.build-better-sqlite3>>
|
||||
steps:
|
||||
- save_cache:
|
||||
name: Saving node-modules cache state key
|
||||
key: v{{ checksum ".circleci/cache-version.txt" }}-{{ checksum "platform_key" }}-state-of-node-modules-cache-{{ checksum "circle_cache_key" }}-better-sqlite3
|
||||
paths:
|
||||
- node_modules_installed
|
||||
- unless:
|
||||
condition: <<parameters.build-better-sqlite3>>
|
||||
steps:
|
||||
- save_cache:
|
||||
name: Saving node-modules cache state key
|
||||
key: v{{ checksum ".circleci/cache-version.txt" }}-{{ checksum "platform_key" }}-state-of-node-modules-cache-{{ checksum "circle_cache_key" }}
|
||||
paths:
|
||||
- node_modules_installed
|
||||
- save_cache:
|
||||
name: Save weekly yarn cache
|
||||
key: v{{ checksum ".circleci/cache-version.txt" }}-{{ checksum "platform_key" }}-deps-root-weekly-{{ checksum "cache_date" }}
|
||||
@@ -486,6 +513,39 @@ commands:
|
||||
echo "Location of Google Chrome Installation: `which google-chrome-<<parameters.channel>>`"
|
||||
echo "Google Chrome Version: `google-chrome-<<parameters.channel>> --version`"
|
||||
|
||||
# This code builds better-sqlite3 on Debian 10 (Buster). This is necessary because Debian 10 has the oldest glibc version (2.28) that we support.
|
||||
#
|
||||
# Since this is running Docker remote (because the job running the command may not be using an executor with the appropriate glibc version), we need to
|
||||
# copy the project into the container, and copy the built plugin out of the container because the host running docker does not have access to the
|
||||
# project directory so volume mounts are not possible. The built plugin is copied to the project directory so it can be injected into the final binary.
|
||||
build-better-sqlite3:
|
||||
description: Build better-sqlite3 for glibc 2.28
|
||||
steps:
|
||||
- setup_remote_docker
|
||||
- run:
|
||||
name: Build better-sqlite3 for glibc 2.28
|
||||
command: |
|
||||
if [[ ! -f better_sqlite3.node ]]; then
|
||||
set -x
|
||||
apt update && apt install -y docker.io
|
||||
docker run -d --name better-sqlite3-builder cypress/base-internal:20.15.0-buster /bin/bash -c "sleep 1000000000"
|
||||
docker cp ~/cypress/node_modules/better-sqlite3 better-sqlite3-builder:/better-sqlite3
|
||||
docker exec -it better-sqlite3-builder /bin/bash -c "cd /better-sqlite3 && source /root/.bashrc && chown -R root:root . && npm install --ignore-scripts && npx --no-install prebuild -r electron -t 27.1.3 --include-regex 'better_sqlite3.node$'"
|
||||
docker cp better-sqlite3-builder:/better-sqlite3/build/Release/better_sqlite3.node ~/cypress/node_modules/better-sqlite3/build/Release/better_sqlite3.node
|
||||
docker rm -f better-sqlite3-builder
|
||||
cp ~/cypress/node_modules/better-sqlite3/build/Release/better_sqlite3.node ~/cypress/better_sqlite3.node
|
||||
else
|
||||
cp ~/cypress/better_sqlite3.node ~/cypress/node_modules/better-sqlite3/build/Release/better_sqlite3.node
|
||||
fi
|
||||
- save_cache:
|
||||
key: better-sqlite3-{{ checksum "node_modules/better-sqlite3/package.json" }}-{{ checksum "node_modules/electron/package.json" }}
|
||||
paths:
|
||||
- better_sqlite3.node
|
||||
- run:
|
||||
name: Clean up top level better-sqlite3 file
|
||||
command: |
|
||||
rm ~/cypress/better_sqlite3.node
|
||||
|
||||
run-driver-integration-tests:
|
||||
parameters:
|
||||
browser:
|
||||
@@ -1289,6 +1349,9 @@ jobs:
|
||||
resource_class:
|
||||
type: string
|
||||
default: medium
|
||||
build-better-sqlite3:
|
||||
type: boolean
|
||||
default: false
|
||||
resource_class: << parameters.resource_class >>
|
||||
steps:
|
||||
- update_known_hosts
|
||||
@@ -1305,6 +1368,7 @@ jobs:
|
||||
- ProgramData/nvm # windows
|
||||
- caching-dependency-installer:
|
||||
only-cache-for-root-user: <<parameters.only-cache-for-root-user>>
|
||||
build-better-sqlite3: <<parameters.build-better-sqlite3>>
|
||||
- store-npm-logs
|
||||
|
||||
## restores node_modules from previous step & builds if first step skipped
|
||||
@@ -2671,7 +2735,8 @@ jobs:
|
||||
|
||||
linux-x64-workflow: &linux-x64-workflow
|
||||
jobs:
|
||||
- node_modules_install
|
||||
- node_modules_install:
|
||||
build-better-sqlite3: true
|
||||
- build:
|
||||
context: test-runner:env-canary
|
||||
requires:
|
||||
|
||||
Reference in New Issue
Block a user