diff --git a/.github/scripts/check-release.sh b/.github/scripts/check-release.sh new file mode 100644 index 00000000..95b72011 --- /dev/null +++ b/.github/scripts/check-release.sh @@ -0,0 +1,13 @@ +#!/bin/sh + +# Checking if current tag matches the package version. +current_tag=$(echo $GITHUB_REF | cut -d '/' -f 3 | sed -r 's/^v//') +file_tag=$(grep 'VERSION = ' lib/phlex/icons/version.rb | cut -d '=' -f 2- | tr -d ' ' | tr -d \') +if [ "$current_tag" != "$file_tag" ]; then + echo "Error: the current tag does not match the version in package file(s)." + echo "$current_tag vs $file_tag" + exit 1 +fi + +echo 'OK' +exit 0 diff --git a/.github/workflows/gem-push.yml b/.github/workflows/gem-push.yml new file mode 100644 index 00000000..480d3b04 --- /dev/null +++ b/.github/workflows/gem-push.yml @@ -0,0 +1,33 @@ +name: Release Gem to RubyGems.org + +on: + release: + types: [published] + +jobs: + build-and-publish: + name: Build and Publish Package to RubyGems.org + runs-on: ubuntu-latest + + steps: + - name: Checkout code + uses: actions/checkout@v4 + + - name: Set up Ruby 3.3.4 + uses: ruby/setup-ruby@v1 + with: + ruby-version: 3.3.4 + + - name: Check release validity + run: sh .github/scripts/check-release.sh + + - name: Publish to RubyGems + env: + GEM_HOST_API_KEY: ${{secrets.RUBYGEMS_AUTH_TOKEN}} + 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 phlex-icons.gemspec + gem push *.gem