Add rubocop check to workflow dependencies #253
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
name: git-fame | |
on: push | |
concurrency: | |
group: ${{ github.workflow }}-${{ github.ref }} | |
cancel-in-progress: true | |
permissions: | |
contents: write | |
pull-requests: write | |
jobs: | |
rubocop: | |
runs-on: ubuntu-latest | |
steps: | |
- name: Check out repository | |
uses: actions/checkout@v4 | |
- name: Install Ruby and dependencies | |
uses: ruby/setup-ruby@v1 | |
with: | |
bundler-cache: true | |
ruby-version: 3.0 | |
- name: Run Rubocop | |
run: bundle exec rubocop | |
rspec: | |
runs-on: ${{ matrix.os }} | |
needs: [dockerfile, devcontainer, rubocop] | |
strategy: | |
matrix: | |
ruby: ["2.7", "3.0", "3.1", "3.2", "3.3"] | |
os: [ubuntu-latest, macos-latest] | |
steps: | |
- name: Check out repository | |
uses: actions/checkout@v4 | |
with: | |
fetch-depth: 0 | |
- name: Install Ruby and dependencies | |
uses: ruby/setup-ruby@v1 | |
with: | |
bundler-cache: true | |
ruby-version: ${{ matrix.ruby }} | |
- name: Install gem locally | |
run: bundle exec rake install:local | |
- name: Run git-fame | |
run: bundle exec exe/git-fame --log-level debug | |
- name: Upload coverage to CodeClimate | |
if: runner.os != 'macos' | |
uses: paambaati/codeclimate-action@v9 | |
env: | |
CC_TEST_REPORTER_ID: ${{ secrets.CC_TEST_REPORTER_ID }} | |
CI: true | |
with: | |
coverageLocations: ${{ github.workspace }}/coverage/coverage.xml:cobertura | |
coverageCommand: bundle exec rspec --format RSpec::Github::Formatter | |
- name: Run RSpec | |
if: runner.os == 'macos' | |
run: bundle exec rspec --format RSpec::Github::Formatter | |
devcontainer: | |
runs-on: ubuntu-latest | |
steps: | |
- name: Check out repository | |
uses: actions/checkout@v4 | |
with: | |
fetch-depth: 0 | |
- name: Install Node.js | |
uses: actions/setup-node@v4 | |
with: | |
node-version: "20.x" | |
- name: Set up DevContainer CLI | |
run: npm install -g @devcontainers/cli | |
- name: Build and start DevContainer | |
run: | | |
devcontainer build --workspace-folder . | |
devcontainer up --workspace-folder . | |
- name: Run tests inside DevContainer | |
run: devcontainer exec --workspace-folder . bundle exec rspec | |
dockerfile: | |
runs-on: ubuntu-latest | |
steps: | |
- name: Check out repository | |
uses: actions/checkout@v4 | |
with: | |
fetch-depth: 0 | |
- name: Build Docker image | |
run: docker build -t git-fame -f .devcontainer/Dockerfile . | |
- name: Run tests in Docker container | |
run: docker run --rm -v $(pwd):/workspace git-fame bundle exec rspec | |
release: | |
runs-on: ubuntu-latest | |
needs: [rspec, dockerfile, devcontainer] | |
# if: github.ref == 'refs/heads/main' | |
steps: | |
- name: Check out repository | |
uses: actions/checkout@v4 | |
- name: Set up Ruby | |
uses: ruby/setup-ruby@v1 | |
with: | |
bundler-cache: true | |
ruby-version: 3.3 | |
- name: Setup git | |
run: | | |
git config --global user.email "actions@github.com" | |
git config --global user.name "GitHub Actions" | |
- name: Install gem-release | |
run: gem install gem-release | |
- name: Install dependencies | |
run: bundle install | |
- name: Increment version | |
run: gem bump --version patch --tag --push --skip-ci --release --file lib/git_fame/version.rb --remote origin --branch main --pretend | |
env: | |
GEM_HOST_API_KEY: ${{ secrets.GEM_HOST_API_KEY }} |