fix: allow custom config_key in check_user_profile #122
Workflow file for this run
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| name: Release | |
| on: | |
| workflow_dispatch: | |
| inputs: | |
| version_bump: | |
| description: 'Version bump type for manual release' | |
| required: true | |
| default: 'patch' | |
| type: choice | |
| options: | |
| - patch | |
| - minor | |
| - major | |
| use_current_version: | |
| description: 'Skip version bump and publish the version already set in lib/getstream_ruby/version.rb' | |
| required: false | |
| default: false | |
| type: boolean | |
| pull_request: | |
| types: [closed] | |
| branches: | |
| - main | |
| - master | |
| concurrency: | |
| group: release-${{ github.event.pull_request.base.ref || github.ref_name }} | |
| cancel-in-progress: false | |
| permissions: | |
| contents: write | |
| jobs: | |
| release: | |
| name: 🚀 Release | |
| if: github.event_name == 'workflow_dispatch' || github.event.pull_request.merged == true | |
| runs-on: ubuntu-latest | |
| environment: ci | |
| steps: | |
| - uses: actions/checkout@v4 | |
| with: | |
| fetch-depth: 0 | |
| ref: ${{ github.event_name == 'pull_request' && github.event.pull_request.base.ref || github.ref_name }} | |
| - name: Set up Ruby | |
| uses: ruby/setup-ruby@v1 | |
| with: | |
| ruby-version: '3.1.0' | |
| - name: Install dependencies | |
| run: bundle install --jobs 4 --retry 3 | |
| - name: Skip when PR is already released | |
| id: already_released | |
| run: | | |
| if [ "${{ github.event_name }}" = "workflow_dispatch" ]; then | |
| echo "value=false" >> "$GITHUB_OUTPUT" | |
| else | |
| if git log --oneline --grep="(pr #${{ github.event.pull_request.number }})" -n 1 | grep -q "chore(release):"; then | |
| echo "value=true" >> "$GITHUB_OUTPUT" | |
| else | |
| echo "value=false" >> "$GITHUB_OUTPUT" | |
| fi | |
| fi | |
| - name: Determine version bump (from PR metadata) | |
| id: release_meta | |
| if: github.event_name == 'pull_request' && steps.already_released.outputs.value != 'true' | |
| env: | |
| PR_TITLE: ${{ github.event.pull_request.title }} | |
| run: | | |
| ruby scripts/release/bump_version.rb \ | |
| --title "$PR_TITLE" \ | |
| --output "$GITHUB_OUTPUT" | |
| - name: Determine version bump (manual) | |
| id: release_meta_manual | |
| if: github.event_name == 'workflow_dispatch' | |
| run: | | |
| ruby scripts/release/bump_version.rb \ | |
| --manual-bump "${{ github.event.inputs.version_bump }}" \ | |
| --use-current-version "${{ github.event.inputs.use_current_version }}" \ | |
| --output "$GITHUB_OUTPUT" | |
| - name: Consolidate release metadata | |
| id: release_meta_final | |
| run: | | |
| if [ "${{ steps.already_released.outputs.value }}" = "true" ]; then | |
| echo "should_release=false" >> "$GITHUB_OUTPUT" | |
| echo "bump=none" >> "$GITHUB_OUTPUT" | |
| exit 0 | |
| fi | |
| if [ "${{ github.event_name }}" = "workflow_dispatch" ]; then | |
| echo "should_release=${{ steps.release_meta_manual.outputs.should_release }}" >> "$GITHUB_OUTPUT" | |
| echo "bump=${{ steps.release_meta_manual.outputs.bump }}" >> "$GITHUB_OUTPUT" | |
| echo "previous_version=${{ steps.release_meta_manual.outputs.previous_version }}" >> "$GITHUB_OUTPUT" | |
| echo "version=${{ steps.release_meta_manual.outputs.version }}" >> "$GITHUB_OUTPUT" | |
| echo "tag=${{ steps.release_meta_manual.outputs.tag }}" >> "$GITHUB_OUTPUT" | |
| else | |
| echo "should_release=${{ steps.release_meta.outputs.should_release }}" >> "$GITHUB_OUTPUT" | |
| echo "bump=${{ steps.release_meta.outputs.bump }}" >> "$GITHUB_OUTPUT" | |
| echo "previous_version=${{ steps.release_meta.outputs.previous_version }}" >> "$GITHUB_OUTPUT" | |
| echo "version=${{ steps.release_meta.outputs.version }}" >> "$GITHUB_OUTPUT" | |
| echo "tag=${{ steps.release_meta.outputs.tag }}" >> "$GITHUB_OUTPUT" | |
| fi | |
| - name: Stop when release is not required | |
| if: steps.release_meta_final.outputs.should_release != 'true' | |
| run: | | |
| if [ "${{ steps.already_released.outputs.value }}" = "true" ]; then | |
| echo "PR #${{ github.event.pull_request.number }} is already released; skipping." | |
| elif [ "${{ github.event_name }}" = "workflow_dispatch" ]; then | |
| echo "Manual release was not requested; skipping." | |
| else | |
| echo "No release type found in PR title/body; skipping." | |
| fi | |
| - name: Run lint and security checks | |
| if: steps.release_meta_final.outputs.should_release == 'true' | |
| run: | | |
| make format-check | |
| make lint | |
| make security | |
| - name: Run unit tests | |
| if: steps.release_meta_final.outputs.should_release == 'true' | |
| run: make test | |
| - name: Run chat integration tests | |
| if: steps.release_meta_final.outputs.should_release == 'true' | |
| env: | |
| STREAM_API_KEY: ${{ vars.STREAM_API_KEY }} | |
| STREAM_API_SECRET: ${{ secrets.STREAM_API_SECRET }} | |
| STREAM_BASE_URL: ${{ vars.STREAM_BASE_URL }} | |
| run: make test-integration-chat | |
| - name: Run feed integration tests | |
| if: steps.release_meta_final.outputs.should_release == 'true' | |
| env: | |
| STREAM_API_KEY: ${{ vars.STREAM_API_KEY }} | |
| STREAM_API_SECRET: ${{ secrets.STREAM_API_SECRET }} | |
| STREAM_BASE_URL: ${{ vars.STREAM_BASE_URL }} | |
| run: make test-integration-feed | |
| - name: Run video integration tests | |
| if: steps.release_meta_final.outputs.should_release == 'true' | |
| env: | |
| STREAM_API_KEY: ${{ vars.STREAM_VIDEO_API_KEY }} | |
| STREAM_API_SECRET: ${{ secrets.STREAM_VIDEO_API_SECRET }} | |
| STREAM_BASE_URL: ${{ vars.STREAM_VIDEO_BASE_URL }} | |
| run: make test-integration-video | |
| - name: Commit version files | |
| if: steps.release_meta_final.outputs.should_release == 'true' | |
| env: | |
| VERSION: ${{ steps.release_meta_final.outputs.version }} | |
| run: | | |
| git config user.name "github-actions[bot]" | |
| git config user.email "github-actions[bot]@users.noreply.github.com" | |
| git add lib/getstream_ruby/version.rb | |
| if git diff --cached --quiet; then | |
| echo "No version changes to commit." | |
| exit 0 | |
| fi | |
| if [ "${{ github.event_name }}" = "workflow_dispatch" ]; then | |
| git commit -m "chore(release): v${VERSION} (manual)" | |
| git push origin "HEAD:${{ github.ref_name }}" | |
| else | |
| git commit -m "chore(release): v${VERSION} (pr #${{ github.event.pull_request.number }})" | |
| git push origin "HEAD:${{ github.event.pull_request.base.ref }}" | |
| fi | |
| - name: Create release tag | |
| if: steps.release_meta_final.outputs.should_release == 'true' | |
| env: | |
| TAG: ${{ steps.release_meta_final.outputs.tag }} | |
| run: | | |
| if git rev-parse -q --verify "refs/tags/${TAG}" >/dev/null; then | |
| echo "Tag ${TAG} already exists; skipping tag creation." | |
| exit 0 | |
| fi | |
| git tag "${TAG}" | |
| git push origin "${TAG}" | |
| - name: Build and publish gem | |
| if: steps.release_meta_final.outputs.should_release == 'true' | |
| env: | |
| GEM_HOST_API_KEY: ${{ secrets.RUBYGEMS_API_KEY }} | |
| VERSION: ${{ steps.release_meta_final.outputs.version }} | |
| run: | | |
| gem build getstream-ruby.gemspec | |
| gem push "getstream-ruby-${VERSION}.gem" --key "$GEM_HOST_API_KEY" | |
| - name: Create release on GitHub | |
| if: steps.release_meta_final.outputs.should_release == 'true' | |
| uses: ncipollo/release-action@v1 | |
| with: | |
| tag: ${{ steps.release_meta_final.outputs.tag }} | |
| token: ${{ secrets.GITHUB_TOKEN }} | |
| skipIfReleaseExists: true | |
| body: | | |
| Release v${{ steps.release_meta_final.outputs.version }} | |
| - Bump type: `${{ steps.release_meta_final.outputs.bump }}` | |
| - Previous: `${{ steps.release_meta_final.outputs.previous_version }}` | |
| - Next: `${{ steps.release_meta_final.outputs.version }}` | |
| - Trigger: `${{ github.event_name }}` | |
| Install with: `gem install getstream-ruby -v ${{ steps.release_meta_final.outputs.version }}` |