Skip to content

Commit b88e957

Browse files
alessio-peruginiMatteoPologrutoumbynos
authored
Bootstrap (#1)
* bootstrap * use arduino-cli executils * handle HID port address in get version * improve the flash output messages * update relaxed-semver and the plugin-helper * use FindToolPath func to find espflash binary * update .gitignore * add commands sketches to control reboot and version * handle new way to reboot the board * use bcmi-labs/hid fork * remove tmp files * update .gitignore * use commands sketch to retrive board version * refactor HID logic * add missing modem.begin() * update helper deps that fixes the proper tools discovery path * use espflash write-bin command to flash the firmware * add a small information message before the flash step * add taskfile + dist templates * fix CR * better error handling * fix changing serial port after going in esp mode * rename some serial pkg types * add some commnets in reboot function * Add PemToCrt function * Use PemToCrt function in UploadCertificate * add padding * remove LICENSE in favor of LICENSE.txt * update commands.ino to send multiple commands * reboot logic now read the fw version to decide which logic to apply * add logging * add slog license files * add go.work.sum to .gitignore * fix a panic when the serial port is busy * update the helper pkg (adds: fqbn and logging) * add license headers to *.go files * comment public exported function of serial and serial/utils pkg * Add CI workflow to check for unapproved Go dependency licenses (#4) A task and GitHub Actions workflow are provided here for checking the license types of Go project dependencies. On every push and pull request that affects relevant files, the CI workflow will check: - If the dependency licenses cache is up to date - If any of the project's dependencies have an unapproved license type. Approval can be based on: - Universally allowed license type - Individual dependency * Add CI workflow to lint and check formatting of Go code (#3) * Add CI workflow to lint and check formatting of Go code On every push and pull request that affects relevant files, check the Go module for: - Common detectable errors in the code. - Use of outdated APIs - Code style violations - Code formatting inconsistency - Misconfiguration * Order tasks alphabetically * Run go mod tidy * Add CI workflow to publish releases (#2) * Add CI workflow to publish releases On every push of a tag named with a version format: - Build the project for all supported platforms. - Sign and notarize the macOS builds. - Create a GitHub release. - Builds and checksums are attached as release assets - A changelog generated from the commit history is added to the release description - If the tag has a pre-release version suffix, the GitHub release will be marked as a pre-release. - Upload the builds to Arduino's downloads server. * fix `Taskfile.yml` file * add package index generation like in the fwuploader * add top level dir in the archive * fix typos * fix possible infinite loop when parsin invalid pem content --------- Co-authored-by: MatteoPologruto <[email protected]> Co-authored-by: MatteoPologruto <[email protected]> Co-authored-by: Umberto Baldi <[email protected]>
1 parent 0913760 commit b88e957

File tree

79 files changed

+11580
-2
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

79 files changed

+11580
-2
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)