diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index c69c019c6..1e7b745f1 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -1,11 +1,16 @@ +name: CI + on: + workflow_dispatch: {} push: branches: [ master ] + tags: + - v[0-9]+.[0-9]+.[0-9]+* pull_request: branches: [ master ] jobs: - lint: + build: runs-on: ubuntu-latest steps: @@ -13,9 +18,16 @@ jobs: - name: Set up Ruby uses: ruby/setup-ruby@v1 with: - ruby-version: 2.7 - - name: rubocop + ruby-version: 3.1 + - name: Lint run: bundle install && bundle exec rake rubocop + - name: Build + run: gem build stripe.gemspec + - name: 'Upload Artifact' + uses: actions/upload-artifact@v2 + with: + name: gems + path: '*.gem' test: runs-on: ubuntu-latest @@ -32,3 +44,23 @@ jobs: run: docker run -d -p 12111-12112:12111-12112 stripe/stripe-mock && sleep 5 - name: test run: bundle install && bundle exec rake test + + publish: + name: Publish + if: (((github.event_name == 'workflow_dispatch')) && (github.ref == 'refs/heads/master' || startsWith(github.ref, 'refs/tags/v')) && endsWith(github.actor, '-stripe')) + needs: [build, test] + runs-on: ubuntu-latest + steps: + - name: Download all workflow run artifacts + uses: actions/download-artifact@v2 + with: + name: gems + path: gems + - name: Set up Ruby + uses: ruby/setup-ruby@v1 + with: + ruby-version: 3.1 + - name: Publish gems to Rubygems + run: gem push gems/*.gem + env: + GEM_HOST_API_KEY: ${{secrets.GEM_HOST_API_KEY}}