From 6b761d576ea994541744da3ee068c319aa064e5d Mon Sep 17 00:00:00 2001 From: Bill Glesias Date: Fri, 26 Jul 2024 12:16:37 -0400 Subject: [PATCH] chore: remove centos7 dockerfile for image living in cypress dockerhub (cypress/centos7-builder) [run ci] (#29918) --- .circleci/workflows.yml | 43 +++++++++----------------------------- centos7-builder.Dockerfile | 28 ------------------------- 2 files changed, 10 insertions(+), 61 deletions(-) delete mode 100644 centos7-builder.Dockerfile diff --git a/.circleci/workflows.yml b/.circleci/workflows.yml index ec3d3eb620ae..7905bc9d1fdd 100644 --- a/.circleci/workflows.yml +++ b/.circleci/workflows.yml @@ -32,7 +32,7 @@ mainBuildFilters: &mainBuildFilters - 'update-v8-snapshot-cache-on-develop' - 'remove-json-lint' - 'publish-binary' - - 'fix/webpack-batteries-included-for-yarn-pnp' + - 'chore/use_build_docker_file_for_centos7' # usually we don't build Mac app - it takes a long time # but sometimes we want to really confirm we are doing the right thing @@ -54,7 +54,7 @@ linuxArm64WorkflowFilters: &linux-arm64-workflow-filters - equal: [ develop, << pipeline.git.branch >> ] # use the following branch as well to ensure that v8 snapshot cache updates are fully tested - equal: [ 'update-v8-snapshot-cache-on-develop', << pipeline.git.branch >> ] - - equal: [ 'fix/webpack-batteries-included-for-yarn-pnp', << pipeline.git.branch >> ] + - equal: [ 'chore/use_build_docker_file_for_centos7', << pipeline.git.branch >> ] - matches: pattern: /^release\/\d+\.\d+\.\d+$/ value: << pipeline.git.branch >> @@ -153,7 +153,7 @@ commands: name: Set environment variable to determine whether or not to persist artifacts command: | echo "Setting SHOULD_PERSIST_ARTIFACTS variable" - echo 'if ! [[ "$CIRCLE_BRANCH" != "develop" && "$CIRCLE_BRANCH" != "release/"* && "$CIRCLE_BRANCH" != "fix/webpack-batteries-included-for-yarn-pnp" ]]; then + echo 'if ! [[ "$CIRCLE_BRANCH" != "develop" && "$CIRCLE_BRANCH" != "release/"* && "$CIRCLE_BRANCH" != "chore/use_build_docker_file_for_centos7" ]]; then export SHOULD_PERSIST_ARTIFACTS=true fi' >> "$BASH_ENV" # You must run `setup_should_persist_artifacts` command and be using bash before running this command @@ -362,7 +362,7 @@ commands: 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" }}-{{ checksum "centos7-builder.Dockerfile" }} + key: v{{ checksum ".circleci/cache-version.txt" }}-{{ checksum "platform_key" }}-state-of-node-modules-cache-{{ checksum "circle_cache_key" }}-centos7 - unless: condition: <> steps: @@ -421,7 +421,7 @@ commands: 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" }}-{{ checksum "centos7-builder.Dockerfile" }} + key: v{{ checksum ".circleci/cache-version.txt" }}-{{ checksum "platform_key" }}-state-of-node-modules-cache-{{ checksum "circle_cache_key" }}-centos7 paths: - node_modules_installed - unless: @@ -515,8 +515,8 @@ commands: echo "Google Chrome Version: `google-chrome-<> --version`" # This code builds better-sqlite3 on CentOS 7. This is necessary because CentOS 7 has the oldest glibc version - # that we support. The script checks for the existence of the Centos7-builder image tar file, and skips if it already - # exists. If you want to rebuild the image, set the REBUILD_CENTOS_BUILDER_IMAGE environment variable to any value. + # that we support. This job uses the cypress/centos7-builder https://hub.docker.com/repository/docker/cypress/centos7-builder/general + # image to build better-sqlite3 against an older version of glibc (2.17). # Since this is running Docker remote, 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. @@ -524,36 +524,13 @@ commands: description: Build better-sqlite3 for CentOS 7 steps: - setup_remote_docker - - restore_cache: - keys: - - cypress-centos7-builder-{{ checksum "centos7-builder.Dockerfile" }} - - restore_cache: - keys: - - better-sqlite3-{{ checksum "node_modules/better-sqlite3/package.json" }}-{{ checksum "node_modules/electron/package.json" }}-{{ checksum "centos7-builder.Dockerfile" }} - run: - name: Build or load centos7-builder image + name: Build better-sqlite3 for CentOS 7 command: | if [[ ! -f better_sqlite3.node ]]; then set -x apt update && apt install -y docker.io - if [[ ! -f centos7-builder.tar || -n $REBUILD_CENTOS_BUILDER_IMAGE ]]; then - echo "*" > .dockerignore - docker build -t centos7-builder -f centos7-builder.Dockerfile . - docker save centos7-builder > centos7-builder.tar - rm .dockerignore - else - docker load < centos7-builder.tar - fi - fi - - save_cache: - key: cypress-centos7-builder-{{ checksum "centos7-builder.Dockerfile" }} - paths: - - centos7-builder.tar - - run: - name: Build better-sqlite3 for CentOS 7 - command: | - if [[ ! -f better_sqlite3.node ]]; then - docker run -d --name centos7-builder centos7-builder /bin/bash -c "sleep 1000000000" + docker run -d --name centos7-builder cypress/centos7-builder:latest /bin/bash -c "sleep 1000000000" docker cp ~/cypress/node_modules/better-sqlite3 centos7-builder:/better-sqlite3 docker exec -it centos7-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 centos7-builder:/better-sqlite3/build/Release/better_sqlite3.node ~/cypress/node_modules/better-sqlite3/build/Release/better_sqlite3.node @@ -563,7 +540,7 @@ commands: 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" }}-{{ checksum "centos7-builder.Dockerfile" }} + key: better-sqlite3-{{ checksum "node_modules/better-sqlite3/package.json" }}-{{ checksum "node_modules/electron/package.json" }}-centos7 paths: - better_sqlite3.node - run: diff --git a/centos7-builder.Dockerfile b/centos7-builder.Dockerfile deleted file mode 100644 index 7af673b77b1a..000000000000 --- a/centos7-builder.Dockerfile +++ /dev/null @@ -1,28 +0,0 @@ -FROM centos:7 - -# Update repo URLs to point to vault.centos.org -RUN for repo in /etc/yum.repos.d/*.repo; do \ - sed -i 's|mirrorlist=|#mirrorlist=|g' $repo; \ - sed -i 's|#baseurl=http://mirror.centos.org|baseurl=http://vault.centos.org|g' $repo; \ - sed -i 's|http://mirror.centos.org|http://vault.centos.org|g' $repo; \ - done && yum clean all - -# Install centos-release-scl to get the SCL repositories -RUN yum -y install centos-release-scl - -# Update repo URLs to point to vault.centos.org again -RUN for repo in /etc/yum.repos.d/CentOS-SCLo-scl*.repo; do \ - sed -i 's|mirrorlist=|#mirrorlist=|g' $repo; \ - sed -i 's|# baseurl=http://mirror.centos.org|baseurl=http://vault.centos.org|g' $repo; \ - sed -i 's|#baseurl=http://mirror.centos.org|baseurl=http://vault.centos.org|g' $repo; \ - sed -i 's|http://mirror.centos.org|http://vault.centos.org|g' $repo; \ - done && yum clean all - -# Install dependencies for building the addon and setting devtoolset-8 as the default compiler -RUN yum -y install curl python3 make atk-devel atk java-atk-wrapper at-spi2-atk gtk3 libXt libdrm mesa-libgbm Xvfb devtoolset-8-gcc devtoolset-8-gcc-c++ -RUN echo >> /etc/profile.d/devtoolset-8.sh 'source scl_source enable devtoolset-8' -RUN curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.5/install.sh | bash -RUN echo >> /etc/profile.d/nvm.sh 'source ~/.nvm/nvm.sh' -# Node 16 is the most recent version that supports CentOS 7. We only need it to call the -# build script for lib/addon, so there should be minimal risk of security issues. -RUN source ~/.nvm/nvm.sh && nvm install 16.20.2 && npm install -g yarn