Skip to content

fix: allow custom config_key in check_user_profile #122

fix: allow custom config_key in check_user_profile

fix: allow custom config_key in check_user_profile #122

Workflow file for this run

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 }}`