Skip to content

Instantly share code, notes, and snippets.

@onedal
Last active January 27, 2022 01:39
Show Gist options
  • Save onedal/68f624d9574292aca178db7296439708 to your computer and use it in GitHub Desktop.
Save onedal/68f624d9574292aca178db7296439708 to your computer and use it in GitHub Desktop.
Rubygems github Open Api example
name: Ruby Gem
on:
push:
branches: [ master ]
env:
gem_version: "1.1.1000"
jobs:
gem-build:
runs-on: ubuntu-latest
permissions:
contents: read
packages: write
steps:
- uses: actions/checkout@v2
- name: Set up Ruby 3.0
uses: actions/setup-ruby@v1
with:
ruby-version: 3.0
- name: Set gem version
working-directory: swagger/v1
run: |
ruby -r yaml -e 'd = YAML::load_file("config.yaml"); d["gemVersion"] = "${{ env.gem_version }}"; File.open("config.yaml", "w") {|f| f.write d.to_yaml }'
cat config.yaml
- name: Build OpenApi
working-directory: swagger/v1
run: |
docker run --rm -v "${PWD}:/local" openapitools/openapi-generator-cli generate \
-i /local/swagger.yaml \
-c /local/config.yaml \
-g ruby \
-o /local/gem
- name: Set gem permission
working-directory: swagger/v1
run: sudo chown -R $(whoami) gem
- name: Build gem
working-directory: swagger/v1/gem
run: |
gem build *.gemspec
env:
GEM_HOST_API_KEY: "Bearer ${{secrets.GITHUB_TOKEN}}"
OWNER: ${{ github.repository_owner }}
- uses: actions/upload-artifact@v2
with:
name: gem-artifact
path: swagger/v1/gem/*.gem
gem-push:
needs: [gem-build]
runs-on: ubuntu-latest
permissions:
contents: read
packages: write
steps:
- name: Set up Ruby 3.0
uses: actions/setup-ruby@v1
with:
ruby-version: 3.0
- uses: actions/download-artifact@v2
with:
name: gem-artifact
- name: Publish to GPR
run: |
mkdir -p $HOME/.gem
touch $HOME/.gem/credentials
chmod 0600 $HOME/.gem/credentials
printf -- "---\n:github: ${GEM_HOST_API_KEY}\n" > $HOME/.gem/credentials
gem push --KEY github --host https://rubygems.pkg.github.com/${OWNER} *.gem
env:
GEM_HOST_API_KEY: "Bearer ${{secrets.GITHUB_TOKEN}}"
OWNER: ${{ github.repository_owner }}
name: Ruby Gem
on:
push:
branches: [ master ]
env:
gem_version: "1.1.1000"
jobs:
build:
name: Build + Publish
runs-on: ubuntu-latest
permissions:
contents: read
packages: write
steps:
- uses: actions/checkout@v2
- name: Set up Ruby 3.0
uses: actions/setup-ruby@v1
with:
ruby-version: 3.0
- name: Set gem version
working-directory: swagger/v1
run: |
ruby -r yaml -e 'd = YAML::load_file("config.yaml"); d["gemVersion"] = "${{ env.gem_version }}"; File.open("config.yaml", "w") {|f| f.write d.to_yaml }'
cat config.yaml
- name: Build OpenApi
working-directory: swagger/v1
run: |
docker run --rm -v "${PWD}:/local" openapitools/openapi-generator-cli generate \
-i /local/swagger.yaml \
-c /local/config.yaml \
-g ruby \
-o /local/bin
- name: Set gem permission
working-directory: swagger/v1
run: sudo chown -R $(whoami) bin
- name: Publish to GPR
working-directory: swagger/v1/bin
run: |
mkdir -p $HOME/.gem
touch $HOME/.gem/credentials
chmod 0600 $HOME/.gem/credentials
printf -- "---\n:github: ${GEM_HOST_API_KEY}\n" > $HOME/.gem/credentials
gem build *.gemspec
gem push --KEY github --host https://rubygems.pkg.github.com/${OWNER} *.gem
env:
GEM_HOST_API_KEY: "Bearer ${{secrets.GITHUB_TOKEN}}"
OWNER: ${{ github.repository_owner }}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment