Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
31 commits
Select commit Hold shift + click to select a range
34dae27
Support Rack 3
ngan Mar 6, 2024
de654f3
Ignore dev env stuff
joemsak Apr 11, 2025
c7bb29d
Update Ruby, Node, Yarn, deps, replace apparition with cuprite
joemsak Apr 11, 2025
948cfad
Remove docker container orphans on rake tasks
joemsak Apr 11, 2025
800682a
Upgrade to latest envoy image
joemsak Apr 11, 2025
2ca1de0
Update GH actions to use Ruby 3.4
joemsak Apr 11, 2025
f02ebb8
Remove frozen bundle line, not working in ruby 3.4
joemsak Apr 11, 2025
bdea892
Remove --remove-orphans flag
joemsak Apr 11, 2025
21aca61
Remove 'chromium'; not needed with chrome service
joemsak Apr 11, 2025
ce7bee7
Update rubocop syntax
joemsak Apr 11, 2025
cc32774
Lint
joemsak Apr 11, 2025
15d6d3b
WIP trying to upgrade protobuf, grpc, protoc, et al
joemsak Apr 16, 2025
050b195
Use customized protoc image to upgrade protoc and the generators
joemsak Apr 17, 2025
168df3b
Update envoy config
joemsak Apr 17, 2025
8dbc3d8
Put the apparition code back
joemsak Apr 17, 2025
57d2538
Rename workflow file, remove rspec
joemsak Apr 17, 2025
33a5b8d
Try manual rake cmd
joemsak Apr 17, 2025
f4dd659
Okay, rspec is needed in CI
joemsak Apr 17, 2025
6a4c9cf
Separate on lines
joemsak Apr 17, 2025
fa06b2b
Clean up rakefile
joemsak Apr 17, 2025
a7e1cf4
Replace apparition with selenium-webdriver, copied from gusto-sidekiq
joemsak Apr 18, 2025
1e0356e
Fix env value type in docker-compose
joemsak Apr 18, 2025
a5b0eaf
AI-assisted spec fixes
mattbooks Dec 9, 2025
3d5226b
Fix docker compose version in CI
mattbooks Dec 9, 2025
c0cac9c
Ignore cjs/mjs and undo test configs
mattbooks Dec 9, 2025
d6dd73d
Remove console log printing for feature tests
mattbooks Dec 9, 2025
1744e59
Remove code for running specs without docker since that does not work
mattbooks Dec 10, 2025
b82f7b4
Clean up rakefile
mattbooks Dec 10, 2025
df4b80b
Fix rake constraint and update dependencies for CI
mattbooks Dec 10, 2025
69349e2
Update .rubocop.yml
mattbooks Dec 10, 2025
3e9bea2
Fix yarn workspace isolation for node-client (#97)
joemsak Dec 10, 2025
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
15 changes: 4 additions & 11 deletions .github/workflows/tests.yml → .github/workflows/ci.yml
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
name: Test Suite
name: CI

on:
push:
Expand All @@ -16,20 +16,13 @@ jobs:
- name: Checkout code
uses: actions/checkout@v2

- name: Set up Ruby 2.7
- name: Set up Ruby 3.4
uses: ruby/setup-ruby@v1
with:
ruby-version: 2.7

- name: Install Docker and Docker Compose
run: |
# Install Docker using the official convenience script
curl -fsSL https://get.docker.com -o get-docker.sh
sh get-docker.sh
sudo apt-get install -y docker-compose
ruby-version: 3.4

- name: Build Docker image
run: docker-compose build
run: docker compose build

- name: Install environment support
run: gem install rake rspec
Expand Down
5 changes: 5 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -5,9 +5,14 @@ spec/pb-js-grpc-web-text/*.js
spec/js-client/main.js
spec/node-client/dist
coverage
**/*.cjs
**/*.mjs

node_modules
.bundle
.yarn/
.pnp.*

# Workspace
.idea
mise.toml
4 changes: 1 addition & 3 deletions .rubocop.yml
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
require: rubocop-rspec
plugins: rubocop-rspec
inherit_from: .rubocop_todo.yml

AllCops:
Expand Down Expand Up @@ -61,5 +61,3 @@ RSpec/ExampleLength:
Max: 15
RSpec/NestedGroups:
Max: 5
RSpec/FilePath:
Enabled: false
2 changes: 1 addition & 1 deletion .ruby-version
Original file line number Diff line number Diff line change
@@ -1 +1 @@
2.7.8
3.4.2
1 change: 1 addition & 0 deletions .yarnrc.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
nodeLinker: node-modules
25 changes: 14 additions & 11 deletions Dockerfile
Original file line number Diff line number Diff line change
@@ -1,11 +1,9 @@
FROM ruby:2.7.8
FROM ruby:3.4.2

# Install dependency packages
RUN apt-get update && apt-get install -y \
chromium \
chromium-driver \
curl \
fonts-liberation \
libappindicator3-1 \
libasound2 \
libatk-bridge2.0-0 \
Expand All @@ -27,24 +25,29 @@ RUN apt-get update && apt-get install -y \
libxrandr2 \
libxss1 \
libxtst6 \
nodejs \
xdg-utils

# Install Yarn
ENV PATH=/root/.yarn/bin:$PATH
RUN touch ~/.bashrc && \
curl -o- -L https://yarnpkg.com/install.sh | sh
# Install Node, Yarn (but don't set version berry yet - that creates package.json in cwd)
RUN curl -fsSL https://deb.nodesource.com/setup_22.x -o nodesource_setup.sh \
&& bash nodesource_setup.sh \
&& apt-get install -y nodejs \
&& npm i -g corepack \
&& corepack enable \
&& corepack prepare yarn

# Setup project home directory
RUN mkdir /app
WORKDIR /app

# Now set yarn version in /app to avoid creating /package.json at root
RUN yarn set version berry \
&& yarn config set --home enableTelemetry 0

# Add Gemfile and cache results of bundle install
COPY .ruby-version grpc-web.gemspec Gemfile Gemfile.lock /app/
COPY lib/grpc_web/version.rb /app/lib/grpc_web/

RUN gem install bundler -v 2.4.22 \
&& bundle config --global frozen 1 \
&& bundle install -j4 --retry 3 \
RUN gem install bundler \
&& bundle update -j4 --retry 3 \
# Remove unneeded files (cached *.gem, *.o, *.c)
&& rm -rf /usr/local/bundle/cache/*.gem
30 changes: 30 additions & 0 deletions Dockerfile.protoc
Original file line number Diff line number Diff line change
@@ -0,0 +1,30 @@
FROM namely/protoc-all:latest

ENV DEBIAN_FRONTEND=noninteractive

RUN apt-get update && apt-get -y -o Dpkg::Options::="--force-confold" install \
unzip \
ruby

RUN gem install grpc-tools

RUN curl -fsSL https://deb.nodesource.com/setup_22.x -o nodesource_setup.sh \
&& bash nodesource_setup.sh \
&& apt-get -y -o Dpkg::Options::="--force-confold" install nodejs \
&& npm i -g npm \
&& npm i -g ts-protoc-gen --force \
&& npm i -g protoc-gen-js

RUN PROTOC_ZIP=protoc-28.0-linux-x86_64.zip \
&& curl -OL https://github.com/protocolbuffers/protobuf/releases/download/v28.0/$PROTOC_ZIP \
&& unzip -o $PROTOC_ZIP -d /usr/local bin/protoc \
&& unzip -o $PROTOC_ZIP -d /usr/local 'include/*' \
&& rm -f $PROTOC_ZIP

# Install modern protoc-gen-grpc-web plugin (compatible with grpc-web 1.5.0+)
RUN GRPC_WEB_VERSION=1.5.0 \
&& curl -OL https://github.com/grpc/grpc-web/releases/download/${GRPC_WEB_VERSION}/protoc-gen-grpc-web-${GRPC_WEB_VERSION}-linux-x86_64 \
&& mv protoc-gen-grpc-web-${GRPC_WEB_VERSION}-linux-x86_64 /usr/local/bin/protoc-gen-grpc-web \
&& chmod +x /usr/local/bin/protoc-gen-grpc-web

ENTRYPOINT []
158 changes: 97 additions & 61 deletions Gemfile.lock
Original file line number Diff line number Diff line change
Expand Up @@ -2,122 +2,156 @@ PATH
remote: .
specs:
grpc-web (1.2.1)
google-protobuf (~> 3.13.0)
grpc (~> 1.0)
rack (>= 1.6.0, < 3.0)
base64
google-protobuf
grpc
rack (>= 2, < 4)

GEM
remote: https://rubygems.org/
specs:
addressable (2.8.7)
public_suffix (>= 2.0.2, < 7.0)
addressable (2.8.8)
public_suffix (>= 2.0.2, < 8.0)
ast (2.4.3)
bigdecimal (3.1.9)
byebug (11.1.3)
capybara (3.39.2)
base64 (0.3.0)
bigdecimal (3.3.1)
byebug (12.0.0)
capybara (3.40.0)
addressable
matrix
mini_mime (>= 0.1.3)
nokogiri (~> 1.8)
nokogiri (~> 1.11)
rack (>= 1.6.0)
rack-test (>= 0.6.3)
regexp_parser (>= 1.5, < 3.0)
xpath (~> 3.2)
coderay (1.1.3)
crack (1.0.0)
crack (1.0.1)
bigdecimal
rexml
diff-lcs (1.6.1)
diff-lcs (1.6.2)
docile (1.4.1)
google-protobuf (3.13.0)
google-protobuf (3.13.0-universal-darwin)
google-protobuf (3.13.0-x86_64-linux)
googleapis-common-protos-types (1.0.5)
google-protobuf (~> 3.11)
grpc (1.34.0)
google-protobuf (~> 3.13)
google-protobuf (4.33.2)
bigdecimal
rake (>= 13)
google-protobuf (4.33.2-aarch64-linux-gnu)
bigdecimal
rake (>= 13)
google-protobuf (4.33.2-arm64-darwin)
bigdecimal
rake (>= 13)
google-protobuf (4.33.2-x86_64-linux-gnu)
bigdecimal
rake (>= 13)
googleapis-common-protos-types (1.22.0)
google-protobuf (~> 4.26)
grpc (1.76.0)
google-protobuf (>= 3.25, < 5.0)
googleapis-common-protos-types (~> 1.0)
grpc (1.76.0-aarch64-linux-gnu)
google-protobuf (>= 3.25, < 5.0)
googleapis-common-protos-types (~> 1.0)
grpc (1.34.0-universal-darwin)
google-protobuf (~> 3.13)
grpc (1.76.0-arm64-darwin)
google-protobuf (>= 3.25, < 5.0)
googleapis-common-protos-types (~> 1.0)
grpc (1.34.0-x86_64-linux)
google-protobuf (~> 3.13)
grpc (1.76.0-x86_64-linux-gnu)
google-protobuf (>= 3.25, < 5.0)
googleapis-common-protos-types (~> 1.0)
hashdiff (1.1.2)
jaro_winkler (1.5.6)
matrix (0.4.2)
hashdiff (1.2.1)
json (2.17.1)
language_server-protocol (3.17.0.5)
lint_roller (1.1.0)
logger (1.7.0)
matrix (0.4.3)
method_source (1.1.0)
mini_mime (1.1.5)
mini_portile2 (2.8.9)
nokogiri (1.15.7)
nokogiri (1.18.10)
mini_portile2 (~> 2.8.2)
racc (~> 1.4)
nokogiri (1.15.7-aarch64-linux)
nokogiri (1.18.10-aarch64-linux-gnu)
racc (~> 1.4)
nokogiri (1.15.7-arm64-darwin)
nokogiri (1.18.10-arm64-darwin)
racc (~> 1.4)
nokogiri (1.15.7-x86_64-linux)
nokogiri (1.18.10-x86_64-linux-gnu)
racc (~> 1.4)
parallel (1.26.3)
parser (3.3.7.4)
parallel (1.27.0)
parser (3.3.10.0)
ast (~> 2.4.1)
racc
pry (0.14.2)
prism (1.6.0)
pry (0.15.2)
coderay (~> 1.1)
method_source (~> 1.0)
pry-byebug (3.10.1)
byebug (~> 11.0)
pry (>= 0.13, < 0.15)
public_suffix (5.1.1)
pry-byebug (3.11.0)
byebug (~> 12.0)
pry (>= 0.13, < 0.16)
public_suffix (7.0.0)
racc (1.8.1)
rack (2.2.13)
rack-cors (2.0.2)
rack (>= 2.0.0)
rack (3.2.4)
rack-cors (3.0.0)
logger
rack (>= 3.0.14)
rack-test (2.2.0)
rack (>= 1.3)
rackup (2.3.1)
rack (>= 3)
rainbow (3.1.1)
rake (13.2.1)
regexp_parser (2.10.0)
rexml (3.4.1)
rspec (3.13.0)
rake (13.3.1)
regexp_parser (2.11.3)
rexml (3.4.4)
rspec (3.13.2)
rspec-core (~> 3.13.0)
rspec-expectations (~> 3.13.0)
rspec-mocks (~> 3.13.0)
rspec-core (3.13.3)
rspec-core (3.13.6)
rspec-support (~> 3.13.0)
rspec-expectations (3.13.3)
rspec-expectations (3.13.5)
diff-lcs (>= 1.2.0, < 2.0)
rspec-support (~> 3.13.0)
rspec-mocks (3.13.2)
rspec-mocks (3.13.7)
diff-lcs (>= 1.2.0, < 2.0)
rspec-support (~> 3.13.0)
rspec-support (3.13.2)
rubocop (0.79.0)
jaro_winkler (~> 1.5.1)
rspec-support (3.13.6)
rubocop (1.81.7)
json (~> 2.3)
language_server-protocol (~> 3.17.0.2)
lint_roller (~> 1.1.0)
parallel (~> 1.10)
parser (>= 2.7.0.1)
parser (>= 3.3.0.2)
rainbow (>= 2.2.2, < 4.0)
regexp_parser (>= 2.9.3, < 3.0)
rubocop-ast (>= 1.47.1, < 2.0)
ruby-progressbar (~> 1.7)
unicode-display_width (>= 1.4.0, < 1.7)
rubocop-rspec (1.41.0)
rubocop (>= 0.68.1)
unicode-display_width (>= 2.4.0, < 4.0)
rubocop-ast (1.48.0)
parser (>= 3.3.7.2)
prism (~> 1.4)
rubocop-rspec (3.8.0)
lint_roller (~> 1.1)
rubocop (~> 1.81)
ruby-progressbar (1.13.0)
rubyzip (2.4.1)
selenium-webdriver (4.9.0)
rubyzip (3.2.2)
selenium-webdriver (4.39.0)
base64 (~> 0.2)
logger (~> 1.4)
rexml (~> 3.2, >= 3.2.5)
rubyzip (>= 1.2.2, < 3.0)
rubyzip (>= 1.2.2, < 4.0)
websocket (~> 1.0)
simplecov (0.22.0)
docile (~> 1.1)
simplecov-html (~> 0.11)
simplecov_json_formatter (~> 0.1)
simplecov-html (0.13.1)
simplecov-html (0.13.2)
simplecov_json_formatter (0.1.4)
unicode-display_width (1.6.1)
webmock (3.25.1)
unicode-display_width (3.2.0)
unicode-emoji (~> 4.1)
unicode-emoji (4.1.0)
webmock (3.26.1)
addressable (>= 2.8.0)
crack (>= 0.3.2)
hashdiff (>= 0.4.0, < 2.0.0)
webrick (1.9.2)
websocket (1.2.11)
xpath (3.2.0)
nokogiri (~> 1.8)
Expand All @@ -133,13 +167,15 @@ DEPENDENCIES
grpc-web!
pry-byebug
rack-cors
rackup
rake
rspec (~> 3.3)
rubocop (~> 0.79.0)
rspec
rubocop
rubocop-rspec
selenium-webdriver
simplecov
webmock
webrick

BUNDLED WITH
2.4.22
Loading