Skip to content
Open
Show file tree
Hide file tree
Changes from 6 commits
Commits
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
35 changes: 32 additions & 3 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -228,25 +228,54 @@ jobs:
run:
working-directory: examples/proto
steps:
- uses: actions/checkout@v5
- uses: bazel-contrib/setup-bazel@0.15.0
- uses: actions/checkout@v6
- uses: bazel-contrib/setup-bazel@0.18.0
with:
# Move autoload_externally to .bazelrc once Bazel 6 support is dropped.
bazelrc: common --announce_rc --incompatible_autoload_externally=
module-root: examples/proto
repository-cache: true
- run: echo ${{ matrix.ruby }} > .ruby-version
- run: bazel build app


examples-git-gem:
name: Examples / Git Gem
runs-on: ${{ matrix.os }}
timeout-minutes: 30
strategy:
fail-fast: false
matrix:
os:
- ubuntu-latest
- macos-latest
# Git gems are not yet supported on Windows.
# - windows-latest
defaults:
run:
working-directory: examples/git_gem
steps:
- uses: actions/checkout@v6
- uses: bazel-contrib/setup-bazel@0.18.0
with:
bazelrc: common --announce_rc --color=yes
module-root: examples/git_gem
repository-cache: true
- run: bazel build ...
- run: bazel test ...
- if: failure() && runner.debug == '1'
uses: mxschmitt/action-tmate@v3

release:
name: Release
if: startsWith(github.ref, 'refs/tags/v')
needs:
- ruleset
- examples-deep-gem
- examples-gem
- examples-git-gem
- examples-jekyll
- examples-native_ext
- examples-proto
- examples-rails
uses: bazel-contrib/.github/.github/workflows/release_ruleset.yaml@v7
with:
Expand Down
3 changes: 1 addition & 2 deletions docs/repository_rules.md

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

24 changes: 23 additions & 1 deletion docs/rules.md

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

1 change: 1 addition & 0 deletions examples/git_gem/.bazelversion
1 change: 1 addition & 0 deletions examples/git_gem/.ruby-version
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
3.3.0
15 changes: 15 additions & 0 deletions examples/git_gem/BUILD
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
load("@rules_ruby//ruby:defs.bzl", "rb_binary", "rb_test")

# A simple binary that uses the Git-sourced hello_world gem
rb_binary(
name = "greeter",
srcs = ["greeter.rb"],
deps = ["@bundle"],
)

# Test that verifies the Git-sourced gem works correctly
rb_test(
name = "greeter_test",
srcs = ["greeter_test.rb"],
deps = ["@bundle"],
)
9 changes: 9 additions & 0 deletions examples/git_gem/Gemfile
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
# frozen_string_literal: true

source "https://rubygems.org"

# Reference hello_world gem from the rules_ruby repository on GitHub
gem "hello_world",
git: "https://github.com/bazel-contrib/rules_ruby.git",
glob: "examples/deep_gem/hello_world/*.gemspec",
ref: "2c98fcaf4d60007a351c6e9a15678d64e1cc4cda"
58 changes: 58 additions & 0 deletions examples/git_gem/Gemfile.lock
Original file line number Diff line number Diff line change
@@ -0,0 +1,58 @@
GIT
remote: https://github.com/bazel-contrib/rules_ruby.git
revision: 2c98fcaf4d60007a351c6e9a15678d64e1cc4cda
ref: 2c98fcaf4d60007a351c6e9a15678d64e1cc4cda
glob: examples/deep_gem/hello_world/*.gemspec
specs:
hello_world (0.0.0)
irb
rspec (~> 3.0)

GEM
remote: https://rubygems.org/
specs:
date (3.5.1)
diff-lcs (1.6.2)
erb (6.0.1)
io-console (0.8.2)
irb (1.16.0)
pp (>= 0.6.0)
rdoc (>= 4.0.0)
reline (>= 0.4.2)
pp (0.6.3)
prettyprint
prettyprint (0.2.0)
psych (5.3.1)
date
stringio
rdoc (7.1.0)
erb
psych (>= 4.0.0)
tsort
reline (0.6.3)
io-console (~> 0.5)
rspec (3.13.2)
rspec-core (~> 3.13.0)
rspec-expectations (~> 3.13.0)
rspec-mocks (~> 3.13.0)
rspec-core (3.13.6)
rspec-support (~> 3.13.0)
rspec-expectations (3.13.5)
diff-lcs (>= 1.2.0, < 2.0)
rspec-support (~> 3.13.0)
rspec-mocks (3.13.7)
diff-lcs (>= 1.2.0, < 2.0)
rspec-support (~> 3.13.0)
rspec-support (3.13.6)
stringio (3.2.0)
tsort (0.2.0)

PLATFORMS
arm64-darwin-25
ruby

DEPENDENCIES
hello_world!

BUNDLED WITH
2.7.2
23 changes: 23 additions & 0 deletions examples/git_gem/MODULE.bazel
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
"Bazel dependencies for git_gem example"

bazel_dep(name = "rules_ruby", version = "0.0.0", dev_dependency = True)
local_path_override(
module_name = "rules_ruby",
path = "../..",
)

ruby = use_extension("@rules_ruby//ruby:extensions.bzl", "ruby")
ruby.toolchain(
name = "ruby",
version_file = "//:.ruby-version",
)
use_repo(ruby, "ruby")

ruby.bundle_fetch(
name = "bundle",
gemfile = "//:Gemfile",
gemfile_lock = "//:Gemfile.lock",
)
use_repo(ruby, "bundle", "ruby_toolchains")

register_toolchains("@ruby_toolchains//:all")
7 changes: 7 additions & 0 deletions examples/git_gem/greeter.rb
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
# frozen_string_literal: true

require "hello_world"

# Use the Git-sourced hello_world gem
speaker = HelloWorld::Speaker.new("World")
puts speaker.message
16 changes: 16 additions & 0 deletions examples/git_gem/greeter_test.rb
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
# frozen_string_literal: true

require "hello_world"

# Test that the Git-sourced hello_world gem works correctly
speaker = HelloWorld::Speaker.new("Bazel")
expected = "Hello, Bazel"
actual = speaker.message

if actual == expected
puts "PASS: Got expected message '#{actual}'"
exit 0
else
puts "FAIL: Expected '#{expected}', got '#{actual}'"
exit 1
end
3 changes: 2 additions & 1 deletion ruby/defs.bzl
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@

load("//ruby/private:binary.bzl", _rb_binary = "rb_binary")
load("//ruby/private:bundle_install.bzl", _rb_bundle_install = "rb_bundle_install")
load("//ruby/private:gem.bzl", _rb_gem = "rb_gem")
load("//ruby/private:gem.bzl", _rb_gem = "rb_gem", _rb_git_gem = "rb_git_gem")
load("//ruby/private:gem_build.bzl", _rb_gem_build = "rb_gem_build")
load("//ruby/private:gem_install.bzl", _rb_gem_install = "rb_gem_install")
load("//ruby/private:gem_push.bzl", _rb_gem_push = "rb_gem_push")
Expand All @@ -15,5 +15,6 @@ rb_gem = _rb_gem
rb_gem_build = _rb_gem_build
rb_gem_install = _rb_gem_install
rb_gem_push = _rb_gem_push
rb_git_gem = _rb_git_gem
rb_library = _rb_library
rb_test = _rb_test
1 change: 1 addition & 0 deletions ruby/private/BUILD
Original file line number Diff line number Diff line change
Expand Up @@ -88,6 +88,7 @@ bzl_library(
"//ruby/private/bundle_fetch:gemfile_lock_parser",
"@bazel_skylib//lib:paths",
"@bazel_skylib//lib:versions",
"@bazel_tools//tools/build_defs/repo:git_worker.bzl",
"@bazel_tools//tools/build_defs/repo:utils.bzl",
],
)
Expand Down
Loading