|
19 | 19 | - 'ruby_llm.gemspec'
|
20 | 20 | workflow_call:
|
21 | 21 |
|
| 22 | +# Define default permissions for this workflow |
| 23 | +permissions: |
| 24 | + contents: read |
| 25 | + packages: write # Needed for publishing to GitHub Packages |
| 26 | + |
22 | 27 | jobs:
|
23 | 28 | test:
|
24 |
| - permissions: |
25 |
| - contents: read |
26 |
| - packages: read |
27 | 29 | runs-on: ubuntu-latest
|
28 | 30 | strategy:
|
29 | 31 | matrix:
|
|
46 | 48 |
|
47 | 49 | - name: Run tests
|
48 | 50 | env:
|
| 51 | + # For PRs, we use VCR cassettes |
| 52 | + # For main branch, we use real API keys for verification |
49 | 53 | OPENAI_API_KEY: ${{ secrets.OPENAI_API_KEY }}
|
50 | 54 | ANTHROPIC_API_KEY: ${{ secrets.ANTHROPIC_API_KEY }}
|
51 | 55 | GEMINI_API_KEY: ${{ secrets.GEMINI_API_KEY }}
|
|
78 | 82 | ruby-version: '3.3'
|
79 | 83 | bundler-cache: true
|
80 | 84 |
|
| 85 | + - name: Check if version has changed |
| 86 | + id: check_version |
| 87 | + run: | |
| 88 | + VERSION=$(ruby -r ./lib/ruby_llm/version.rb -e "puts RubyLLM::VERSION") |
| 89 | + echo "Current version: $VERSION" |
| 90 | +
|
| 91 | + # Try to fetch from RubyGems |
| 92 | + PUBLISHED_VERSION=$(gem list ruby_llm -r | grep -o '[0-9]\+\.[0-9]\+\.[0-9]\+' || echo "0.0.0") |
| 93 | + echo "Published version: $PUBLISHED_VERSION" |
| 94 | +
|
| 95 | + if [ "$VERSION" = "$PUBLISHED_VERSION" ]; then |
| 96 | + echo "Version has not changed, skipping publish" |
| 97 | + echo "version_changed=false" >> $GITHUB_OUTPUT |
| 98 | + else |
| 99 | + echo "Version has changed from $PUBLISHED_VERSION to $VERSION" |
| 100 | + echo "version_changed=true" >> $GITHUB_OUTPUT |
| 101 | + fi |
| 102 | +
|
| 103 | + - name: Test with real APIs before publishing |
| 104 | + if: steps.check_version.outputs.version_changed == 'true' |
| 105 | + run: | |
| 106 | + echo "Removing all VCR cassettes to test against real APIs..." |
| 107 | + rm -rf spec/fixtures/vcr_cassettes |
| 108 | +
|
| 109 | + echo "Running tests with real API calls..." |
| 110 | + bundle exec rspec |
| 111 | + env: |
| 112 | + OPENAI_API_KEY: ${{ secrets.OPENAI_API_KEY }} |
| 113 | + ANTHROPIC_API_KEY: ${{ secrets.ANTHROPIC_API_KEY }} |
| 114 | + GEMINI_API_KEY: ${{ secrets.GEMINI_API_KEY }} |
| 115 | + DEEPSEEK_API_KEY: ${{ secrets.DEEPSEEK_API_KEY }} |
| 116 | + |
81 | 117 | - name: Publish to GPR
|
| 118 | + if: steps.check_version.outputs.version_changed == 'true' |
82 | 119 | run: |
|
83 | 120 | mkdir -p $HOME/.gem
|
84 | 121 | touch $HOME/.gem/credentials
|
|
99 | 136 | OWNER: ${{ github.repository_owner }}
|
100 | 137 |
|
101 | 138 | - name: Publish to RubyGems
|
| 139 | + if: steps.check_version.outputs.version_changed == 'true' |
102 | 140 | run: |
|
103 | 141 | mkdir -p $HOME/.gem
|
104 | 142 | touch $HOME/.gem/credentials
|
|
0 commit comments