name: Release Gem Package on: push: branches: - master - github-workflow jobs: release_version: runs-on: ubuntu-latest steps: - name: Checkout Repository uses: actions/checkout@v2 - name: Set Up Ruby uses: actions/setup-ruby@v1 with: ruby-version: 3.0 - name: Install Dependencies run: | gem install bundler bundle install - name: Build Gem Package run: | gem build middleware_rubygem.gemspec - name: Check for Version Change id: version_check run: | # Extract the old and new versions from the commit OLD_VERSION=$(git show HEAD^:lib/middleware/ruby_gem/version.rb | grep 'VERSION =' | awk '{print $3}' | tr -d '"') NEW_VERSION=$(git show HEAD:lib/middleware/ruby_gem/version.rb | grep 'VERSION =' | awk '{print $3}' | tr -d '"') if [ "$OLD_VERSION" != "$NEW_VERSION" ]; then echo "Version changed from $OLD_VERSION to $NEW_VERSION" echo "::set-output name=version_changed::true" else echo "Version remains unchanged" echo "::set-output name=version_changed::false" fi - name: Publish Gem Package if: steps.version_check.outputs.version_changed == 'true' env: GEM_HOST_API_KEY: ${{ secrets.RUBY_GEMS_API_KEY }} run: | mkdir -p $HOME/.gem touch $HOME/.gem/credentials chmod 0600 $HOME/.gem/credentials printf -- "---\n:rubygems_api_key: ${GEM_HOST_API_KEY}\n" > $HOME/.gem/credentials gem build *.gemspec gem push *.gem - name: Create Release if: steps.version_check.outputs.version_changed == 'true' id: create_release uses: actions/create-release@v1 env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} with: tag_name: v${{ steps.version_check.NEW_VERSION }} release_name: Release ${{ steps.version_check.NEW_VERSION }} draft: false prerelease: false