Add Docker setup to build workflow actions #260
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 Docker | |
uses: docker/setup-buildx-action@v3 | |
- name: Build Docker image with Ruby version | |
run: docker build --build-arg RUBY_VERSION=3.3 -t git-fame -f .devcontainer/Dockerfile . | |
- name: Run Rubocop | |
run: docker run --rm -v $(pwd):/workspace git-fame bundle exec rubocop | |
rspec: | |
runs-on: ${{ matrix.os }} | |
needs: 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 Docker | |
uses: docker/setup-buildx-action@v3 | |
- name: Build Docker image with Ruby version | |
run: docker build --build-arg RUBY_VERSION=${{ matrix.ruby }} -t git-fame -f .devcontainer/Dockerfile . | |
- name: Run git-fame | |
run: docker run --rm -v $(pwd):/workspace git-fame 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: docker run --rm -v $(pwd):/workspace git-fame bundle exec rspec --format RSpec::Github::Formatter | |
- name: Run RSpec | |
if: runner.os == 'macos' | |
run: docker run --rm -v $(pwd):/workspace git-fame bundle exec rspec --format RSpec::Github::Formatter | |
devcontainer: | |
runs-on: ubuntu-latest | |
needs: rubocop | |
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 | |
release: | |
runs-on: ubuntu-latest | |
needs: rspec | |
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 --jobs 4 --retry 3 | |
- 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 }} |