.github/workflows/cd.yml
name: CD
on:
push:
branches:
- main
jobs:
checking-deployable:
runs-on: ubuntu-latest
outputs:
new_tag: ${{ steps.checking-deployable-package.outputs.new_tag }}
steps:
- uses: actions/checkout@v2
with:
fetch-depth: 0
- uses: actions/setup-ruby@v1
with:
ruby-version: "2.5"
- name: Check deployable a package
id: checking-deployable-package
run: |
package_version=v$(ruby -e 'require "./lib/localized_controllers/version"
print LocalizedControllers::VERSION')
new_tag=$(if [ ! $(git tag | grep $package_version) ]; then echo $package_version; fi)
echo ::set-output name=new_tag::$new_tag
creating-release_note:
runs-on: ubuntu-latest
needs: checking-deployable
if: ${{ needs.checking-deployable.outputs.new_tag }}
outputs:
upload_url: ${{ steps.release-drafter.outputs.upload_url }}
steps:
- uses: release-drafter/release-drafter@v5
id: release-drafter
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
with:
name: ${{ needs.checking-deployable.outputs.new_tag }}
tag: ${{ needs.checking-deployable.outputs.new_tag }}
publish: true
deploying-package:
runs-on: ubuntu-latest
needs: creating-release_note
steps:
- uses: actions/checkout@v2
- uses: actions/setup-ruby@v1
with:
ruby-version: "2.5"
- name: Prepare credentials
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
env:
GEM_HOST_API_KEY: ${{secrets.RUBYGEMS_AUTH_TOKEN}}
- name: Publish a gem
run: |
gem build *.gemspec
gem push *.gem