mirror of
https://github.com/hatchet-dev/hatchet.git
synced 2026-03-20 11:40:32 -05:00
Bumps [ruby/setup-ruby](https://github.com/ruby/setup-ruby) from 1.288.0 to 1.289.0.
- [Release notes](https://github.com/ruby/setup-ruby/releases)
- [Changelog](https://github.com/ruby/setup-ruby/blob/master/release.rb)
- [Commits](09a7688d3b...19a43a6a24)
---
updated-dependencies:
- dependency-name: ruby/setup-ruby
dependency-version: 1.289.0
dependency-type: direct:production
update-type: version-update:semver-minor
...
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
271 lines
9.5 KiB
YAML
271 lines
9.5 KiB
YAML
name: ruby
|
|
on:
|
|
workflow_dispatch:
|
|
pull_request:
|
|
paths:
|
|
- ".github/**"
|
|
- "sdks/ruby/**"
|
|
push:
|
|
branches:
|
|
- main
|
|
paths:
|
|
- "sdks/ruby/**"
|
|
|
|
defaults:
|
|
run:
|
|
working-directory: ./sdks/ruby/src
|
|
|
|
jobs:
|
|
lint:
|
|
runs-on: ubicloud-standard-4
|
|
steps:
|
|
- name: Checkout code
|
|
uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
|
|
|
|
- name: Set up Ruby
|
|
uses: ruby/setup-ruby@19a43a6a2428d455dbd1b85344698725179c9d8c # v1.289.0
|
|
with:
|
|
ruby-version: "3.2"
|
|
bundler-cache: true
|
|
working-directory: ./sdks/ruby/src
|
|
|
|
- name: Run RuboCop
|
|
run: bundle exec rubocop
|
|
|
|
- name: Run RBS validate
|
|
run: rbs -I sig validate
|
|
|
|
- name: Test gem build
|
|
run: gem build hatchet-sdk.gemspec
|
|
|
|
test:
|
|
runs-on: ubicloud-standard-4
|
|
strategy:
|
|
matrix:
|
|
ruby-version: ${{ github.event_name == 'pull_request' && fromJSON('["3.2"]') || fromJSON('["3.2", "3.3"]') }}
|
|
optimistic-scheduling: ["true", "false"]
|
|
timeout-minutes: 20
|
|
steps:
|
|
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
|
|
|
|
- name: Install Protoc
|
|
uses: arduino/setup-protoc@c65c819552d16ad3c9b72d9dfd5ba5237b9c906b # v3.0.0
|
|
with:
|
|
version: "25.1"
|
|
repo-token: ${{ secrets.GITHUB_TOKEN }}
|
|
|
|
- name: Install Task
|
|
uses: arduino/setup-task@b91d5d2c96a56797b48ac1e0e89220bf64044611 # v2.0.0
|
|
with:
|
|
repo-token: ${{ secrets.GITHUB_TOKEN }}
|
|
|
|
- name: Setup Go
|
|
uses: actions/setup-go@4b73464bb391d4059bd26b0524d20df3927bd417 # v6.3.0
|
|
with:
|
|
go-version: "1.25"
|
|
|
|
- name: Start Docker dependencies
|
|
working-directory: .
|
|
run: docker compose up -d
|
|
|
|
- name: Generate
|
|
working-directory: .
|
|
run: |
|
|
export DATABASE_URL="postgresql://hatchet:hatchet@127.0.0.1:5431/hatchet"
|
|
go run ./cmd/hatchet-migrate
|
|
|
|
- name: Setup
|
|
working-directory: .
|
|
run: |
|
|
export SEED_DEVELOPMENT=true
|
|
export SERVER_PORT=8080
|
|
export SERVER_URL=http://localhost:8080
|
|
export SERVER_AUTH_COOKIE_DOMAIN=localhost
|
|
export SERVER_AUTH_COOKIE_INSECURE=true
|
|
export SERVER_DEFAULT_ENGINE_VERSION=V1
|
|
export SERVER_MSGQUEUE_RABBITMQ_URL="amqp://user:password@localhost:5672/"
|
|
export SERVER_OPTIMISTIC_SCHEDULING_ENABLED=${{ matrix.optimistic-scheduling }}
|
|
|
|
go run ./cmd/hatchet-admin quickstart
|
|
|
|
go run ./cmd/hatchet-engine --config ./generated/ > engine.log 2>&1 &
|
|
go run ./cmd/hatchet-api --config ./generated/ > api.log 2>&1 &
|
|
|
|
sleep 30
|
|
|
|
- name: Set up Ruby ${{ matrix.ruby-version }}
|
|
uses: ruby/setup-ruby@19a43a6a2428d455dbd1b85344698725179c9d8c # v1.289.0
|
|
with:
|
|
ruby-version: ${{ matrix.ruby-version }}
|
|
bundler-cache: true
|
|
working-directory: ./sdks/ruby/src
|
|
|
|
- name: Display Ruby version
|
|
run: ruby -v
|
|
|
|
- name: Generate Env File
|
|
working-directory: .
|
|
run: |
|
|
echo "HATCHET_CLIENT_TOKEN=$(go run ./cmd/hatchet-admin token create --config ./generated/ --tenant-id 707d0855-80ab-4e1f-a156-f1c4546cbf52)" >> $GITHUB_ENV
|
|
echo "HATCHET_CLIENT_TLS_ROOT_CA_FILE=../../../certs/ca.cert" >> $GITHUB_ENV
|
|
echo "HATCHET_CLIENT_WORKER_HEALTHCHECK_ENABLED=true" >> $GITHUB_ENV
|
|
|
|
- name: Set HATCHET_CLIENT_NAMESPACE
|
|
run: |
|
|
RUBY_VER=$(ruby -e "puts \"rb#{RUBY_VERSION.gsub('.','')[0..1]}\"")
|
|
SHORT_SHA=$(git rev-parse --short HEAD)
|
|
echo "HATCHET_CLIENT_NAMESPACE=${RUBY_VER}-${SHORT_SHA}" >> $GITHUB_ENV
|
|
|
|
- name: Run unit tests
|
|
run: |
|
|
echo "Using HATCHET_CLIENT_NAMESPACE: $HATCHET_CLIENT_NAMESPACE"
|
|
bundle exec rspec --format documentation --tag ~integration
|
|
|
|
- name: Run integration tests
|
|
run: bundle exec rspec spec/integration/ --format documentation --tag integration
|
|
|
|
- name: Set up Ruby for examples
|
|
uses: ruby/setup-ruby@19a43a6a2428d455dbd1b85344698725179c9d8c # v1.289.0
|
|
with:
|
|
ruby-version: ${{ matrix.ruby-version }}
|
|
bundler-cache: true
|
|
working-directory: ./sdks/ruby/examples
|
|
|
|
- name: Wait for API readiness
|
|
working-directory: .
|
|
run: |
|
|
echo "Waiting for API at http://localhost:8080/api/ready..."
|
|
for i in $(seq 1 60); do
|
|
if curl -sf http://localhost:8080/api/ready > /dev/null 2>&1; then
|
|
echo "API ready after ${i}s"
|
|
break
|
|
fi
|
|
if [ "$i" -eq 60 ]; then
|
|
echo "API did not become ready within 60s"
|
|
tail -n 50 engine.log 2>/dev/null || true
|
|
tail -n 50 api.log 2>/dev/null || true
|
|
exit 1
|
|
fi
|
|
sleep 1
|
|
done
|
|
sleep 5
|
|
|
|
- name: Start example worker and wait for health
|
|
working-directory: ./sdks/ruby/examples
|
|
run: |
|
|
export HATCHET_CLIENT_WORKER_HEALTHCHECK_PORT=8001
|
|
stdbuf -o0 -e0 bundle exec ruby worker.rb > worker.log 2>&1 &
|
|
WORKER_PID=$!
|
|
echo "Worker started with PID $WORKER_PID"
|
|
|
|
MAX_WAIT=45
|
|
POLL_INTERVAL=1
|
|
echo "Waiting 5s for worker to initialize..."
|
|
sleep 5
|
|
|
|
for i in $(seq 1 $MAX_WAIT); do
|
|
if ! kill -0 "$WORKER_PID" 2>/dev/null; then
|
|
echo "Worker process (PID $WORKER_PID) exited before becoming healthy"
|
|
echo "=== worker.log ==="
|
|
cat worker.log || true
|
|
echo "=== tail engine.log ==="
|
|
tail -n 80 "$GITHUB_WORKSPACE/engine.log" 2>/dev/null || true
|
|
echo "=== tail api.log ==="
|
|
tail -n 80 "$GITHUB_WORKSPACE/api.log" 2>/dev/null || true
|
|
exit 1
|
|
fi
|
|
if curl -sf http://localhost:8001/health > /dev/null 2>&1; then
|
|
echo "Worker is healthy after ${i}s"
|
|
exit 0
|
|
fi
|
|
if [ $((i % 5)) -eq 0 ]; then
|
|
echo "Still waiting for worker health... ${i}s/${MAX_WAIT}s"
|
|
echo "--- worker.log (last 25 lines) ---"
|
|
tail -n 25 worker.log 2>/dev/null || true
|
|
echo "--- engine.log (last 25 lines) ---"
|
|
tail -n 25 "$GITHUB_WORKSPACE/engine.log" 2>/dev/null || true
|
|
echo "--- api.log (last 25 lines) ---"
|
|
tail -n 25 "$GITHUB_WORKSPACE/api.log" 2>/dev/null || true
|
|
fi
|
|
sleep $POLL_INTERVAL
|
|
done
|
|
|
|
echo "Worker failed to become healthy within ${MAX_WAIT}s"
|
|
echo "=== worker.log ==="
|
|
cat worker.log || true
|
|
echo "=== tail engine.log ==="
|
|
tail -n 80 "$GITHUB_WORKSPACE/engine.log" 2>/dev/null || true
|
|
echo "=== tail api.log ==="
|
|
tail -n 80 "$GITHUB_WORKSPACE/api.log" 2>/dev/null || true
|
|
exit 1
|
|
|
|
- name: Run e2e tests
|
|
working-directory: ./sdks/ruby/examples
|
|
run: bundle exec rspec -f d --fail-fast
|
|
|
|
- name: Upload worker logs
|
|
if: always()
|
|
uses: actions/upload-artifact@b7c566a772e6b6bfb58ed0dc250532a479d7789f # v6.0.0
|
|
with:
|
|
name: ${{ env.HATCHET_CLIENT_NAMESPACE }}-opt-${{ matrix.optimistic-scheduling }}-worker-logs
|
|
path: ./sdks/ruby/examples/worker.log
|
|
|
|
- name: Upload engine logs
|
|
if: always()
|
|
uses: actions/upload-artifact@b7c566a772e6b6bfb58ed0dc250532a479d7789f # v6.0.0
|
|
with:
|
|
name: ${{ env.HATCHET_CLIENT_NAMESPACE }}-opt-${{ matrix.optimistic-scheduling }}-engine-logs
|
|
path: engine.log
|
|
|
|
- name: Upload API logs
|
|
if: always()
|
|
uses: actions/upload-artifact@b7c566a772e6b6bfb58ed0dc250532a479d7789f # v6.0.0
|
|
with:
|
|
name: ${{ env.HATCHET_CLIENT_NAMESPACE }}-opt-${{ matrix.optimistic-scheduling }}-api-logs
|
|
path: api.log
|
|
|
|
publish:
|
|
runs-on: ubicloud-standard-4
|
|
needs: [lint, test]
|
|
if: github.ref == 'refs/heads/main'
|
|
permissions:
|
|
contents: write
|
|
id-token: write
|
|
steps:
|
|
- name: Checkout Repository
|
|
uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
|
|
with:
|
|
submodules: recursive
|
|
|
|
- name: Set up Ruby
|
|
uses: ruby/setup-ruby@19a43a6a2428d455dbd1b85344698725179c9d8c # v1.289.0
|
|
with:
|
|
ruby-version: "3.2"
|
|
bundler-cache: true
|
|
working-directory: ./sdks/ruby/src
|
|
|
|
- name: Check if version changed
|
|
id: version_check
|
|
run: |
|
|
NEW_VERSION=$(ruby -e "require_relative 'lib/hatchet/version'; puts Hatchet::VERSION")
|
|
CURRENT_VERSION=$(gem info hatchet-sdk --remote --exact 2>/dev/null | grep -oP 'hatchet-sdk \(\K[^)]+' || echo "0.0.0")
|
|
|
|
if [ "$CURRENT_VERSION" == "$NEW_VERSION" ]; then
|
|
echo "Version has not changed ($NEW_VERSION). Skipping publish."
|
|
echo "should_publish=false" >> "$GITHUB_OUTPUT"
|
|
else
|
|
echo "Publishing version $NEW_VERSION (current: $CURRENT_VERSION)"
|
|
echo "should_publish=true" >> "$GITHUB_OUTPUT"
|
|
fi
|
|
|
|
- name: Configure RubyGems credentials
|
|
if: steps.version_check.outputs.should_publish == 'true'
|
|
uses: rubygems/configure-rubygems-credentials@main
|
|
|
|
- name: Publish to RubyGems
|
|
if: steps.version_check.outputs.should_publish == 'true'
|
|
run: |
|
|
gem build hatchet-sdk.gemspec
|
|
NEW_VERSION=$(ruby -e "require_relative 'lib/hatchet/version'; puts Hatchet::VERSION")
|
|
gem push hatchet-sdk-${NEW_VERSION}.gem
|