From 134e9be8a8020abe45399d663bb0ad64f1995995 Mon Sep 17 00:00:00 2001 From: Franck Nijhof Date: Thu, 28 Dec 2023 14:40:03 +0100 Subject: [PATCH] Upgrade Ruby, Node, Jekyll, sass-embedded + devcontainer (#30538) --- Dockerfile => .devcontainer/Dockerfile | 5 +-- .devcontainer/devcontainer.json | 11 +++-- .github/workflows/test.yml | 4 +- .ruby-version | 2 +- .vscode/extensions.json | 2 +- Gemfile | 4 +- Gemfile.lock | 56 ++++++++++++++++++-------- 7 files changed, 54 insertions(+), 30 deletions(-) rename Dockerfile => .devcontainer/Dockerfile (76%) diff --git a/Dockerfile b/.devcontainer/Dockerfile similarity index 76% rename from Dockerfile rename to .devcontainer/Dockerfile index a5c00fa85ad..ed7283a0f35 100644 --- a/Dockerfile +++ b/.devcontainer/Dockerfile @@ -3,6 +3,7 @@ FROM mcr.microsoft.com/vscode/devcontainers/ruby:${VARIANT} ARG NODE_VERSION="lts/*" RUN su vscode -c "source /usr/local/share/nvm/nvm.sh && nvm install ${NODE_VERSION} 2>&1" +RUN su vscode -c "/usr/local/rvm/bin/rvm fix-permissions" # Locale env vars ENV \ @@ -17,7 +18,3 @@ RUN \ ack \ && echo "en_US UTF-8" > /etc/locale.gen \ && locale-gen en_US.UTF-8 - -# Install the specific version of bundler we need -COPY Gemfile.lock ./ -RUN gem install bundler -v `awk 'c&&c--;/BUNDLED WITH/{c=1}' Gemfile.lock` \ No newline at end of file diff --git a/.devcontainer/devcontainer.json b/.devcontainer/devcontainer.json index 9db615d42bc..c34491e5358 100644 --- a/.devcontainer/devcontainer.json +++ b/.devcontainer/devcontainer.json @@ -1,16 +1,19 @@ { "name": "home-assistant.io", "build": { - "dockerfile": "../Dockerfile", + "dockerfile": "./Dockerfile", "context": "..", "args": { - "VARIANT": "2.7", - "NODE_VERSION": "18" + "VARIANT": "3.1", + "NODE_VERSION": "20" } }, "appPort": [4000], "onCreateCommand": "bundle install && npm install", - "containerEnv": { "DEVCONTAINER": "true" }, + "containerEnv": { + "DEVCONTAINER": "true", + "BUNDLE_PATH": "vendor/bundle" + }, "customizations": { "vscode": { "extensions": [ diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index c147b84c11a..0e94eee4c6b 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -12,7 +12,7 @@ jobs: - name: Setting up Node.js uses: actions/setup-node@v4.0.1 with: - node-version: 16.x + node-version: 20 cache: "npm" - name: Install dependencies run: npm install @@ -29,7 +29,7 @@ jobs: - name: Setting up Node.js uses: actions/setup-node@v4.0.1 with: - node-version: 16.x + node-version: 20 cache: "npm" - name: Install dependencies run: npm install diff --git a/.ruby-version b/.ruby-version index 37c2961c243..0aec50e6ede 100644 --- a/.ruby-version +++ b/.ruby-version @@ -1 +1 @@ -2.7.2 +3.1.4 diff --git a/.vscode/extensions.json b/.vscode/extensions.json index 199390c8fce..f2b8a48dbe1 100644 --- a/.vscode/extensions.json +++ b/.vscode/extensions.json @@ -4,7 +4,7 @@ "editorconfig.editorconfig", "GitHub.vscode-pull-request-github", "mrmlnc.vscode-scss", - "rebornix.Ruby", + "Shopify.ruby-lsp", "streetsidesoftware.code-spell-checker", "taichi.vscode-textlint", "yzhang.markdown-all-in-one" diff --git a/Gemfile b/Gemfile index 47c3b7df813..073b55ddcbd 100644 --- a/Gemfile +++ b/Gemfile @@ -4,12 +4,14 @@ ruby '> 2.5.0' group :development do gem 'rake', '13.1.0' - gem 'jekyll', '4.3.2' + gem 'jekyll', '4.3.3' gem 'compass', '1.0.3' gem 'sass-globbing', '1.1.5' gem 'stringex', '2.8.6' # > 2.1.0 causes slowdowns https://github.com/sass/sassc-ruby/issues/189 gem 'sassc', '2.1.0' + gem 'rubocop', '1.59.0' + gem 'ruby-lsp', '0.13.2' end group :jekyll_plugins do diff --git a/Gemfile.lock b/Gemfile.lock index c3463c6b54a..073dc0ed05d 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -3,6 +3,7 @@ GEM specs: addressable (2.8.6) public_suffix (>= 2.0.2, < 6.0) + ast (2.4.2) chunky_png (1.4.0) colorator (1.1.0) commonmarker (0.23.10) @@ -23,14 +24,13 @@ GEM eventmachine (>= 0.12.9) http_parser.rb (~> 0) eventmachine (1.2.7) - eventmachine (1.2.7-x64-mingw32) ffi (1.16.3) forwardable-extended (2.6.0) - google-protobuf (3.25.1) + google-protobuf (3.25.1-x86_64-linux) http_parser.rb (0.8.0) i18n (1.14.1) concurrent-ruby (~> 1.0) - jekyll (4.3.2) + jekyll (4.3.3) addressable (~> 2.4) colorator (~> 1.0) em-websocket (~> 0.5) @@ -58,54 +58,75 @@ GEM nokogiri (~> 1.12) jekyll-watch (2.2.1) listen (~> 3.0) + json (2.7.1) kramdown (2.4.0) rexml kramdown-parser-gfm (1.1.0) kramdown (~> 2.0) + language_server-protocol (3.17.0.3) liquid (4.0.4) listen (3.8.0) rb-fsevent (~> 0.10, >= 0.10.3) rb-inotify (~> 0.9, >= 0.9.10) mercenary (0.4.0) - mini_portile2 (2.8.5) multi_json (1.15.0) mustermann (3.0.0) ruby2_keywords (~> 0.0.1) - nokogiri (1.15.5) - mini_portile2 (~> 2.8.2) + nokogiri (1.15.5-x86_64-linux) racc (~> 1.4) + parallel (1.24.0) + parser (3.2.2.4) + ast (~> 2.4.1) + racc pathutil (0.16.2) forwardable-extended (~> 2.6) + prism (0.19.0) public_suffix (5.0.4) racc (1.7.3) rack (2.2.8) rack-protection (3.1.0) rack (~> 2.2, >= 2.2.4) + rainbow (3.1.1) rake (13.1.0) rb-fsevent (0.11.2) rb-inotify (0.10.1) ffi (~> 1.0) + regexp_parser (2.8.3) rexml (3.2.6) rouge (4.2.0) + rubocop (1.59.0) + json (~> 2.3) + language_server-protocol (>= 3.17.0) + parallel (~> 1.10) + parser (>= 3.2.2.4) + rainbow (>= 2.2.2, < 4.0) + regexp_parser (>= 1.8, < 3.0) + rexml (>= 3.2.5, < 4.0) + rubocop-ast (>= 1.30.0, < 2.0) + ruby-progressbar (~> 1.7) + unicode-display_width (>= 2.4.0, < 3.0) + rubocop-ast (1.30.0) + parser (>= 3.2.1.0) + ruby-lsp (0.13.2) + language_server-protocol (~> 3.17.0) + prism (>= 0.19.0, < 0.20) + sorbet-runtime (>= 0.5.5685) + ruby-progressbar (1.13.0) ruby2_keywords (0.0.5) safe_yaml (1.0.5) sass (3.4.25) - sass-embedded (1.63.6) - google-protobuf (~> 3.23) - rake (>= 13.0.0) - sass-embedded (1.63.6-x64-mingw32) + sass-embedded (1.69.5-x86_64-linux-gnu) google-protobuf (~> 3.23) sass-globbing (1.1.5) sass (>= 3.1) - sassc (2.1.0) - ffi (~> 1.9) - sassc (2.1.0-x64-mingw32) + sassc (2.1.0-x86_64-linux) ffi (~> 1.9) sinatra (3.1.0) mustermann (~> 3.0) rack (~> 2.2, >= 2.2.4) rack-protection (= 3.1.0) tilt (~> 2.0) + sorbet-runtime (0.5.11164) stringex (2.8.6) terminal-table (3.0.2) unicode-display_width (>= 1.1.1, < 3) @@ -118,18 +139,19 @@ GEM webrick (1.8.1) PLATFORMS - ruby - x64-mingw32 + x86_64-linux DEPENDENCIES compass (= 1.0.3) - jekyll (= 4.3.2) + jekyll (= 4.3.3) jekyll-commonmark (= 1.4.0) jekyll-paginate (= 1.1.0) jekyll-sitemap (= 1.4.0) jekyll-toc (= 0.18.0) nokogiri (= 1.15.5) rake (= 13.1.0) + rubocop (= 1.59.0) + ruby-lsp (= 0.13.2) sass-globbing (= 1.1.5) sassc (= 2.1.0) sinatra (= 3.1.0) @@ -141,4 +163,4 @@ RUBY VERSION ruby 2.6.2p47 BUNDLED WITH - 2.2.28 + 2.5.3