Skip to content

Commit bf9dc5f

Browse files
committed
Enhance CI/CD workflow to check version changes and test with real APIs before publishing
1 parent 421dac2 commit bf9dc5f

File tree

1 file changed

+41
-3
lines changed

1 file changed

+41
-3
lines changed

.github/workflows/cicd.yml

Lines changed: 41 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -19,11 +19,13 @@ on:
1919
- 'ruby_llm.gemspec'
2020
workflow_call:
2121

22+
# Define default permissions for this workflow
23+
permissions:
24+
contents: read
25+
packages: write # Needed for publishing to GitHub Packages
26+
2227
jobs:
2328
test:
24-
permissions:
25-
contents: read
26-
packages: read
2729
runs-on: ubuntu-latest
2830
strategy:
2931
matrix:
@@ -46,6 +48,8 @@ jobs:
4648

4749
- name: Run tests
4850
env:
51+
# For PRs, we use VCR cassettes
52+
# For main branch, we use real API keys for verification
4953
OPENAI_API_KEY: ${{ secrets.OPENAI_API_KEY }}
5054
ANTHROPIC_API_KEY: ${{ secrets.ANTHROPIC_API_KEY }}
5155
GEMINI_API_KEY: ${{ secrets.GEMINI_API_KEY }}
@@ -78,7 +82,40 @@ jobs:
7882
ruby-version: '3.3'
7983
bundler-cache: true
8084

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+
81117
- name: Publish to GPR
118+
if: steps.check_version.outputs.version_changed == 'true'
82119
run: |
83120
mkdir -p $HOME/.gem
84121
touch $HOME/.gem/credentials
@@ -99,6 +136,7 @@ jobs:
99136
OWNER: ${{ github.repository_owner }}
100137

101138
- name: Publish to RubyGems
139+
if: steps.check_version.outputs.version_changed == 'true'
102140
run: |
103141
mkdir -p $HOME/.gem
104142
touch $HOME/.gem/credentials

0 commit comments

Comments
 (0)