name: Test and Deploy on: push: pull_request: release: types: [created] jobs: rubocop: strategy: matrix: os: [ubuntu-latest] ruby-version: ['2.7', '3.0'] runs-on: ${{ matrix.os }} steps: - uses: actions/checkout@v3 with: persist-credentials: false fetch-depth: 0 - name: Ruby Setup and Bundle uses: ruby/setup-ruby@v1 with: ruby-version: ${{ matrix.ruby-version }} bundler-cache: true run: | gem install bundler bundle update bundle install - run: bundle exec rubocop rspec: strategy: matrix: os: [ubuntu-latest] ruby-version: ['2.7', '3.0'] runs-on: ${{ matrix.os }} steps: - uses: actions/checkout@v3 with: persist-credentials: false fetch-depth: 0 - name: Ruby Setup and Bundle uses: ruby/setup-ruby@v1 with: ruby-version: ${{ matrix.ruby-version }} bundler-cache: true run: | gem install bundler bundle update bundle install - name: rspec and report to coveralls run: bundle exec rspec --order rand - name: Coveralls uses: coverallsapp/github-action@master with: github-token: ${{ secrets.GITHUB_TOKEN }} parallel: true flag-name: run-${{ matrix.ruby-version }} publish: runs-on: ubuntu-latest needs: ["rubocop", "rspec"] if: github.event_name == 'release' && github.event.action == 'created' steps: - name: Checkout uses: actions/checkout@v3 with: persist-credentials: false fetch-depth: 0 - name: Ruby Setup and Bundle uses: ruby/setup-ruby@v1 with: ruby-version: 2.7.5 bundler-cache: true - name: Publish to RubyGems 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 env: GEM_HOST_API_KEY: "${{ secrets.RUBY_GEM_KEY }}"