Skip to content

Commit 3d3e3a9

Browse files
Bootstrap (#1)
1 parent b69cf81 commit 3d3e3a9

34 files changed

+4606
-1
lines changed
Lines changed: 157 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,157 @@
1+
# Source: https://github.com/arduino/tooling-project-assets/blob/main/workflow-templates/check-go-dependencies-task.md
2+
name: Check Go Dependencies
3+
4+
env:
5+
# See: https://github.com/actions/setup-go/tree/main#supported-version-syntax
6+
GO_VERSION: "1.20"
7+
8+
# See: https://docs.github.com/actions/using-workflows/events-that-trigger-workflows
9+
on:
10+
create:
11+
push:
12+
paths:
13+
- ".github/workflows/check-go-dependencies-task.ya?ml"
14+
- ".licenses/**"
15+
- ".licensed.json"
16+
- ".licensed.ya?ml"
17+
- "Taskfile.ya?ml"
18+
- "**/.gitmodules"
19+
- "**/go.mod"
20+
- "**/go.sum"
21+
pull_request:
22+
paths:
23+
- ".github/workflows/check-go-dependencies-task.ya?ml"
24+
- ".licenses/**"
25+
- ".licensed.json"
26+
- ".licensed.ya?ml"
27+
- "Taskfile.ya?ml"
28+
- "**/.gitmodules"
29+
- "**/go.mod"
30+
- "**/go.sum"
31+
schedule:
32+
# Run periodically to catch breakage caused by external changes.
33+
- cron: "0 8 * * WED"
34+
workflow_dispatch:
35+
repository_dispatch:
36+
37+
jobs:
38+
run-determination:
39+
runs-on: ubuntu-latest
40+
permissions: {}
41+
outputs:
42+
result: ${{ steps.determination.outputs.result }}
43+
steps:
44+
- name: Determine if the rest of the workflow should run
45+
id: determination
46+
run: |
47+
RELEASE_BRANCH_REGEX="refs/heads/[0-9]+.[0-9]+.x"
48+
# The `create` event trigger doesn't support `branches` filters, so it's necessary to use Bash instead.
49+
if [[
50+
"${{ github.event_name }}" != "create" ||
51+
"${{ github.ref }}" =~ $RELEASE_BRANCH_REGEX
52+
]]; then
53+
# Run the other jobs.
54+
RESULT="true"
55+
else
56+
# There is no need to run the other jobs.
57+
RESULT="false"
58+
fi
59+
60+
echo "result=$RESULT" >> $GITHUB_OUTPUT
61+
62+
check-cache:
63+
needs: run-determination
64+
if: needs.run-determination.outputs.result == 'true'
65+
runs-on: ubuntu-latest
66+
permissions:
67+
contents: read
68+
69+
steps:
70+
- name: Checkout repository
71+
uses: actions/checkout@v3
72+
with:
73+
submodules: recursive
74+
75+
# This is required to allow jonabc/setup-licensed to install licensed via Ruby gem.
76+
- name: Install Ruby
77+
uses: ruby/setup-ruby@v1
78+
with:
79+
ruby-version: ruby # Install latest version
80+
81+
- name: Install licensed
82+
uses: jonabc/setup-licensed@v1
83+
with:
84+
github_token: ${{ secrets.GITHUB_TOKEN }}
85+
version: 3.x
86+
87+
- name: Install Go
88+
uses: actions/setup-go@v4
89+
with:
90+
go-version: ${{ env.GO_VERSION }}
91+
92+
- name: Install Task
93+
uses: arduino/setup-task@v1
94+
with:
95+
repo-token: ${{ secrets.GITHUB_TOKEN }}
96+
version: 3.x
97+
98+
- name: Update dependencies license metadata cache
99+
run: task --silent general:cache-dep-licenses
100+
101+
- name: Check for outdated cache
102+
id: diff
103+
run: |
104+
git add .
105+
if ! git diff --cached --color --exit-code; then
106+
echo
107+
echo "::error::Dependency license metadata out of sync. See: https://github.com/arduino/tooling-project-assets/blob/main/workflow-templates/check-go-dependencies-task.md#metadata-cache"
108+
exit 1
109+
fi
110+
111+
# Some might find it convenient to have CI generate the cache rather than setting up for it locally
112+
- name: Upload cache to workflow artifact
113+
if: failure() && steps.diff.outcome == 'failure'
114+
uses: actions/upload-artifact@v3
115+
with:
116+
if-no-files-found: error
117+
name: dep-licenses-cache
118+
path: .licenses/
119+
120+
check-deps:
121+
needs: run-determination
122+
if: needs.run-determination.outputs.result == 'true'
123+
runs-on: ubuntu-latest
124+
permissions:
125+
contents: read
126+
127+
steps:
128+
- name: Checkout repository
129+
uses: actions/checkout@v3
130+
with:
131+
submodules: recursive
132+
133+
# This is required to allow jonabc/setup-licensed to install licensed via Ruby gem.
134+
- name: Install Ruby
135+
uses: ruby/setup-ruby@v1
136+
with:
137+
ruby-version: ruby # Install latest version
138+
139+
- name: Install licensed
140+
uses: jonabc/setup-licensed@v1
141+
with:
142+
github_token: ${{ secrets.GITHUB_TOKEN }}
143+
version: 3.x
144+
145+
- name: Install Go
146+
uses: actions/setup-go@v4
147+
with:
148+
go-version: ${{ env.GO_VERSION }}
149+
150+
- name: Install Task
151+
uses: arduino/setup-task@v1
152+
with:
153+
repo-token: ${{ secrets.GITHUB_TOKEN }}
154+
version: 3.x
155+
156+
- name: Check for dependencies with unapproved licenses
157+
run: task --silent general:check-dep-licenses

.github/workflows/check-go-task.yml

Lines changed: 234 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,234 @@
1+
# Source: https://github.com/arduino/tooling-project-assets/blob/main/workflow-templates/check-go-task.md
2+
name: Check Go
3+
4+
env:
5+
# See: https://github.com/actions/setup-go/tree/main#supported-version-syntax
6+
GO_VERSION: "1.20"
7+
8+
# See: https://docs.github.com/actions/using-workflows/events-that-trigger-workflows
9+
on:
10+
create:
11+
push:
12+
paths:
13+
- ".github/workflows/check-go-task.ya?ml"
14+
- "Taskfile.ya?ml"
15+
- "**/go.mod"
16+
- "**/go.sum"
17+
- "**.go"
18+
pull_request:
19+
paths:
20+
- ".github/workflows/check-go-task.ya?ml"
21+
- "Taskfile.ya?ml"
22+
- "**/go.mod"
23+
- "**/go.sum"
24+
- "**.go"
25+
schedule:
26+
# Run periodically to catch breakage caused by external changes.
27+
- cron: "0 7 * * WED"
28+
workflow_dispatch:
29+
repository_dispatch:
30+
31+
jobs:
32+
run-determination:
33+
runs-on: ubuntu-latest
34+
permissions: {}
35+
outputs:
36+
result: ${{ steps.determination.outputs.result }}
37+
steps:
38+
- name: Determine if the rest of the workflow should run
39+
id: determination
40+
run: |
41+
RELEASE_BRANCH_REGEX="refs/heads/[0-9]+.[0-9]+.x"
42+
# The `create` event trigger doesn't support `branches` filters, so it's necessary to use Bash instead.
43+
if [[
44+
"${{ github.event_name }}" != "create" ||
45+
"${{ github.ref }}" =~ $RELEASE_BRANCH_REGEX
46+
]]; then
47+
# Run the other jobs.
48+
RESULT="true"
49+
else
50+
# There is no need to run the other jobs.
51+
RESULT="false"
52+
fi
53+
54+
echo "result=$RESULT" >> $GITHUB_OUTPUT
55+
56+
check-errors:
57+
name: check-errors (${{ matrix.module.path }})
58+
needs: run-determination
59+
if: needs.run-determination.outputs.result == 'true'
60+
runs-on: ubuntu-latest
61+
permissions:
62+
contents: read
63+
64+
strategy:
65+
fail-fast: false
66+
67+
matrix:
68+
module:
69+
- path: ./
70+
71+
steps:
72+
- name: Checkout repository
73+
uses: actions/checkout@v3
74+
75+
- name: Install Go
76+
uses: actions/setup-go@v4
77+
with:
78+
go-version: ${{ env.GO_VERSION }}
79+
80+
- name: Install Task
81+
uses: arduino/setup-task@v1
82+
with:
83+
repo-token: ${{ secrets.GITHUB_TOKEN }}
84+
version: 3.x
85+
86+
- name: Check for errors
87+
env:
88+
GO_MODULE_PATH: ${{ matrix.module.path }}
89+
run: task go:vet
90+
91+
check-outdated:
92+
name: check-outdated (${{ matrix.module.path }})
93+
needs: run-determination
94+
if: needs.run-determination.outputs.result == 'true'
95+
runs-on: ubuntu-latest
96+
permissions:
97+
contents: read
98+
99+
strategy:
100+
fail-fast: false
101+
102+
matrix:
103+
module:
104+
- path: ./
105+
106+
steps:
107+
- name: Checkout repository
108+
uses: actions/checkout@v3
109+
110+
- name: Install Go
111+
uses: actions/setup-go@v4
112+
with:
113+
go-version: ${{ env.GO_VERSION }}
114+
115+
- name: Install Task
116+
uses: arduino/setup-task@v1
117+
with:
118+
repo-token: ${{ secrets.GITHUB_TOKEN }}
119+
version: 3.x
120+
121+
- name: Modernize usages of outdated APIs
122+
env:
123+
GO_MODULE_PATH: ${{ matrix.module.path }}
124+
run: task go:fix
125+
126+
- name: Check if any fixes were needed
127+
run: git diff --color --exit-code
128+
129+
check-style:
130+
name: check-style (${{ matrix.module.path }})
131+
needs: run-determination
132+
if: needs.run-determination.outputs.result == 'true'
133+
runs-on: ubuntu-latest
134+
permissions:
135+
contents: read
136+
137+
strategy:
138+
fail-fast: false
139+
140+
matrix:
141+
module:
142+
- path: ./
143+
144+
steps:
145+
- name: Checkout repository
146+
uses: actions/checkout@v3
147+
148+
- name: Install Go
149+
uses: actions/setup-go@v4
150+
with:
151+
go-version: ${{ env.GO_VERSION }}
152+
153+
- name: Install Task
154+
uses: arduino/setup-task@v1
155+
with:
156+
repo-token: ${{ secrets.GITHUB_TOKEN }}
157+
version: 3.x
158+
159+
- name: Install golint
160+
run: go install golang.org/x/lint/golint@latest
161+
162+
- name: Check style
163+
env:
164+
GO_MODULE_PATH: ${{ matrix.module.path }}
165+
run: task --silent go:lint
166+
167+
check-formatting:
168+
name: check-formatting (${{ matrix.module.path }})
169+
needs: run-determination
170+
if: needs.run-determination.outputs.result == 'true'
171+
runs-on: ubuntu-latest
172+
permissions:
173+
contents: read
174+
175+
strategy:
176+
fail-fast: false
177+
178+
matrix:
179+
module:
180+
- path: ./
181+
182+
steps:
183+
- name: Checkout repository
184+
uses: actions/checkout@v3
185+
186+
- name: Install Go
187+
uses: actions/setup-go@v4
188+
with:
189+
go-version: ${{ env.GO_VERSION }}
190+
191+
- name: Install Task
192+
uses: arduino/setup-task@v1
193+
with:
194+
repo-token: ${{ secrets.GITHUB_TOKEN }}
195+
version: 3.x
196+
197+
- name: Format code
198+
env:
199+
GO_MODULE_PATH: ${{ matrix.module.path }}
200+
run: task go:format
201+
202+
- name: Check formatting
203+
run: git diff --color --exit-code
204+
205+
check-config:
206+
name: check-config (${{ matrix.module.path }})
207+
needs: run-determination
208+
if: needs.run-determination.outputs.result == 'true'
209+
runs-on: ubuntu-latest
210+
permissions:
211+
contents: read
212+
213+
strategy:
214+
fail-fast: false
215+
216+
matrix:
217+
module:
218+
- path: ./
219+
220+
steps:
221+
- name: Checkout repository
222+
uses: actions/checkout@v3
223+
224+
- name: Install Go
225+
uses: actions/setup-go@v4
226+
with:
227+
go-version: ${{ env.GO_VERSION }}
228+
229+
- name: Run go mod tidy
230+
working-directory: ${{ matrix.module.path }}
231+
run: go mod tidy
232+
233+
- name: Check whether any tidying was needed
234+
run: git diff --color --exit-code

0 commit comments

Comments
 (0)