Add rubocop as a dependency in GitHub Actions workflow #278
Workflow file for this run
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.3.0 | |
- name: Run Rubocop | |
run: bundle exec rubocop | |
rspec: | |
runs-on: ${{ matrix.os }} | |
needs: [dockerfile, devcontainer, rubocop] | |
strategy: | |
matrix: | |
ruby: ["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 DevContainer | |
run: devcontainer build --workspace-folder . | |
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 | |
# if: github.ref == 'refs/heads/main' | |
needs: rspec | |
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.0 | |
- name: Setup git | |
run: | | |
git config --global user.email "[email protected]" | |
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 | |
env: | |
GEM_HOST_API_KEY: ${{ secrets.GEM_HOST_API_KEY }} |