Merge pull request #38 from MadBomber/enable_external_client_management #35
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: CICD | |
| on: | |
| push: | |
| branches: [main] | |
| pull_request: | |
| jobs: | |
| test: | |
| name: Ruby Tests | |
| runs-on: ubuntu-latest | |
| strategy: | |
| matrix: | |
| ruby: ['3.1.3', '3.2', '3.3', '3.4'] | |
| steps: | |
| - uses: actions/checkout@v4 | |
| - uses: oven-sh/setup-bun@v2 | |
| with: | |
| bun-version: 1.2.16 | |
| - name: Set up Ruby | |
| uses: ruby/setup-ruby@v1 | |
| with: | |
| ruby-version: ${{ matrix.ruby }} | |
| bundler-cache: true | |
| - name: Install Ruby dependencies | |
| run: | | |
| bundle install | |
| - name: Run specs | |
| run: bundle exec rake | |
| env: | |
| GITHUB_ACTIONS: "true" | |
| release: | |
| name: Release Gem to RubyGems | |
| needs: test | |
| if: github.ref == 'refs/heads/main' && success() | |
| runs-on: ubuntu-latest | |
| steps: | |
| - uses: actions/checkout@v4 | |
| - name: Set up Ruby | |
| uses: ruby/setup-ruby@v1 | |
| with: | |
| ruby-version: '3.4' | |
| bundler-cache: true | |
| - name: Build the gem | |
| run: | | |
| gem build *.gemspec | |
| gem_name=$(ls *.gem | head -n1) | |
| echo "GEM_FILE=$gem_name" >> $GITHUB_ENV | |
| - name: Check if gem version already exists | |
| id: check_version | |
| run: | | |
| gem_name=$(basename $GEM_FILE .gem) | |
| name=$(echo $gem_name | cut -d'-' -f1) | |
| version=$(echo $gem_name | cut -d'-' -f2-) | |
| echo "Gem: $name, Version: $version" | |
| if gem list ^$name$ -r -a | grep -q $version; then | |
| echo "Gem version $version already exists on RubyGems." | |
| echo "already_published=true" >> $GITHUB_OUTPUT | |
| else | |
| echo "Gem version $version is new." | |
| echo "already_published=false" >> $GITHUB_OUTPUT | |
| fi | |
| - name: Push to RubyGems | |
| if: steps.check_version.outputs.already_published == 'false' | |
| env: | |
| GEM_HOST_API_KEY: ${{ secrets.RUBYGEMS_API_KEY }} | |
| run: | | |
| gem push "$GEM_FILE" |