name: Test and Deploy on: push: pull_request: release: types: [created] jobs: rubocop: strategy: matrix: ruby-version: [2.6.3, 2.6.6, 2.7.1] runs-on: [ubuntu-latest] steps: - uses: actions/checkout@v2 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: bundle exec rubocop rspec: strategy: matrix: ruby-version: [2.6.3, 2.6.6, 2.7.1] runs-on: [ubuntu-latest] steps: - uses: actions/checkout@v2 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 - name: rspec and report to coveralls env: COVERALLS_REPO_TOKEN: ${{ github.event_name == 'push' && secrets.COVERALLS_REPO_TOKEN }} run: bundle exec rspec --order rand publish: runs-on: ubuntu-latest needs: ['rubocop', 'rspec'] if: github.event_name == 'release' && github.event.action == 'created' steps: - name: Checkout uses: actions/checkout@v2 with: persist-credentials: false fetch-depth: 0 - name: Ruby Setup and Bundle uses: ruby/setup-ruby@v1 with: ruby-version: 2.7.1 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 }}"