diff --git a/.github/workflows/ruby.yml b/.github/workflows/ruby.yml
new file mode 100644
index 0000000000000000000000000000000000000000..6d38609b0c563662c69d9bef32b2eaf5c1fc609f
--- /dev/null
+++ b/.github/workflows/ruby.yml
@@ -0,0 +1,33 @@
+---
+name: Ruby
+
+on:
+  push:
+    tags: ["*"]
+    branches: ["master"]
+  pull_request:
+    branches: ["master"]
+
+permissions:
+  contents: read
+
+jobs:
+  tests:
+    runs-on: ubuntu-latest
+    strategy:
+      matrix:
+        ruby-version: ['2.7', '3.0', '3.1']
+
+    steps:
+      - uses: actions/checkout@v3
+      - name: Set up Ruby
+        uses: ruby/setup-ruby@v1
+        with:
+          ruby-version: ${{ matrix.ruby-version }}
+          bundler-cache: true
+      - name: Install rubocop
+        run: gem install -N rubocop
+      - name: Rubocop
+        run: rubocop lib/
+      - name: Run tests
+        run: bundle exec rake