-
Notifications
You must be signed in to change notification settings - Fork 73
140 lines (113 loc) · 3.5 KB
/
main.yml
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
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 }}
strategy:
matrix:
ruby: ["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, rubocop, devcontainer, dockerfile]
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 "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 --skip-ci --release --file lib/git_fame/version.rb
env:
GEM_HOST_API_KEY: ${{ secrets.GEM_HOST_API_KEY }}
- name: Install dependencies
run: bundle install
env:
BUNDLE_FROZEN: "false"
- name: Add and commit version bump
run: git commit -a --amend --no-edit
- name: Push changes
run: |
git push
git push --tags