Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
172 commits
Select commit Hold shift + click to select a range
1b8954e
chore: fix linting issues of web_tls.go
ym Mar 24, 2025
a3580b5
Improve error handling when `RTCPeerConnection` throws (#289)
adamshiervani Mar 25, 2025
a9180c9
chore: move smoketest to private repo (#291)
ym Mar 26, 2025
edafe99
chore: fix linting issues of web_tls.go (#287)
ym Mar 26, 2025
aed453c
chore: Enable more linters
SuperQ Mar 12, 2025
1f8f885
chore: Enable more linters (#255)
ym Mar 28, 2025
df0d083
chore: Update README Discord Link
Nevexo Mar 29, 2025
65e4a58
chore: Update README Discord Link (#308)
ym Mar 31, 2025
1e9adf8
chore: skip websocket client if net isn't up or time sync hasn't comp…
ym Apr 3, 2025
f3b5011
feat(cloud): add metrics for cloud connections
ym Apr 3, 2025
1a26431
chore(cloud): websocket client improvements (#323)
ym Apr 3, 2025
8268b20
refactor: Update WebRTC connection handling and overlays (#320)
adamshiervani Apr 3, 2025
73e7151
feat(cloud): disconnect from cloud immediately when cloud URL changes…
ym Apr 4, 2025
abc6d92
feat(cloud): disconnect from cloud immediately when cloud URL changes…
ym Apr 7, 2025
fa1b11b
chore(ota): allow a longer timeout when downloading packages (#332)
ym Apr 7, 2025
1a30977
Feat/Trickle ice (#336)
adamshiervani Apr 8, 2025
652e845
fix(ota): certificate signed by unknown authority
ym Apr 9, 2025
84b35d5
re-add old signaling for when upgrading
adamshiervani Apr 9, 2025
98af805
refactor: remove unnecessary whitespace in setupRouter function
adamshiervani Apr 9, 2025
960ef23
Don't block new PC if connection is stable. No need to (#340)
adamshiervani Apr 9, 2025
1505ca1
fix(dev_device): update JETKVM_PROXY_URL to use WebSocket protocol (#…
adamshiervani Apr 9, 2025
b94de38
fix(ui): increase z-index for Modal component to improve layering (#341)
adamshiervani Apr 9, 2025
3f20c23
fix: Shell linting (#328)
SuperQ Apr 9, 2025
647250c
fix(ui): update WebRTCVideo component to properly animate on peer con…
adamshiervani Apr 10, 2025
9c758b6
fix(ui): adjust layout and z-index for improved UI consistency in Kvm…
adamshiervani Apr 10, 2025
66a3352
feat(websocket): handle ping messages sent from react and add logging…
ym Apr 10, 2025
dc1ce03
chore(websocket): logging and metrics improvement (#347)
ym Apr 10, 2025
76efa56
chore(dev_deploy): update logging for websocket in deployment script …
adamshiervani Apr 10, 2025
8f6e64f
Add keyboard macros (#305)
Savid Apr 10, 2025
4c37f7e
refactor: use structured logging
ym Apr 10, 2025
82c018a
feat(tls): #330
ym Mar 18, 2025
04aa352
chore(log): add jsonRpcLogger
ym Apr 11, 2025
5f7dded
chore(log): add watchdogLogger
ym Apr 11, 2025
48a917f
chore(log): add otaLogger
ym Apr 11, 2025
612c50b
chore(log): add serialLogger
ym Apr 11, 2025
d5f8e51
chore(log): add terminalLogger
ym Apr 11, 2025
e08ff42
chore(log): add webRtcLogger
ym Apr 11, 2025
6489421
fix(ota): verifyFile missing arguments
ym Apr 11, 2025
924b550
chore(log): add wolLogger
ym Apr 11, 2025
0ba7902
chore: update logging
ym Apr 11, 2025
334b3be
chore: fix linting issue
ym Apr 11, 2025
8888d13
chore(log): add nbdLogger
ym Apr 11, 2025
f98eadd
chore(log): ntp logger
ym Apr 11, 2025
94e8324
chore(cloud): use request id from the cloud
ym Apr 11, 2025
87ee954
chore(log): move each component to its own logger (#353)
ym Apr 11, 2025
edca8a4
fix(log): segmentation violation when err is nil
ym Apr 11, 2025
951e673
chore(ntp): add logging for time sync errors
ym Apr 11, 2025
009b0ab
refactor: update golintci-lint and linter issues
SuperQ Apr 13, 2025
440f85f
VideoOverlay: add missing word to adapter line (#355)
xdevs23 Apr 15, 2025
2b2a142
feat: implement pointer-lock and keyboard-lock (#352)
ym Apr 15, 2025
189b843
network enhanecment / refactor (#361)
ym Apr 15, 2025
d79f359
chore: bump version to 0.4.0
ym Apr 16, 2025
5a4f176
feat: UI for changing display orientation
morgendagen May 11, 2025
5f8b451
fix: absolute mouse scroll (#434)
john-- May 11, 2025
77b4c1c
ntp: fix panic on NTP query error and add IPv6 server for IPv6-only s…
lqs May 11, 2025
d0faf03
Fix: Alt Gr not recognized (#399)
dlorch May 12, 2025
8ee0532
Update npm packages for the UI (#432)
IDisposable May 12, 2025
63c2272
feat(usb_mass_storage): mount as disk (#333)
ym May 12, 2025
38252de
chore: create images folder when starting the application (#437)
ym May 13, 2025
19bd161
chore: update jetkvm_native binary (4e2ce48) (#442)
ym May 13, 2025
2aa7b85
feat: Reset optionally reset USB HID in dev-deploy (#440)
IDisposable May 14, 2025
340baba
feat(network): enhance network settings UI (#364)
adamshiervani May 14, 2025
7ccb8e6
chore: Upgrade UI vite and tailwind packages (#443)
IDisposable May 15, 2025
c9dd3cd
feat(ui): Enhance Virtual Keyboard for US (#449)
IDisposable May 15, 2025
baf85dc
refactor: Migrate from tailwind.js config to Tailwind CSS config (#451)
adamshiervani May 15, 2025
033bdcd
fix(ui): Adjust EmptyCard icon size and tweak SettingsMacros (#452)
adamshiervani May 15, 2025
c9068af
Update devcontainer.json to match ui package.json (#457)
IDisposable May 16, 2025
d545686
fix(ui): Fix regression on Shift-Backspace not being handled (#454)
IDisposable May 16, 2025
fea89a0
chore: run golang tests
ym May 16, 2025
3ec1bdf
chore(ui): Patch-bump packages and use tailwind upgrade (#456)
IDisposable May 16, 2025
840743f
fix: golang test report input argument
ym May 16, 2025
17baf16
chore: append package name to build script
ym May 16, 2025
fc3dbcd
chore: add Go Report Card
zandercodes May 19, 2025
0a4a1af
Improve/Simplify Mouse Wheel Scroll Behavior (#470)
rmschooley May 19, 2025
7a9fb7c
chore(usbgadget): update usbgadget config only when needed (#474)
ym May 19, 2025
3f320e5
refactor: remove scroll sensitivity functionality and clean up relate…
adamshiervani May 19, 2025
5ba08de
fix: unit test not returning error when test fails
ym May 19, 2025
51814dc
fix: add missing files for building unit tests
ym May 19, 2025
c6b05d4
build: add device-tests
ym May 19, 2025
8cf6b40
build: set up golang (smoketest)
ym May 19, 2025
eeb103a
fix: configFS might not be mounted if the directory exists (#479)
ym May 19, 2025
b4dd496
fix: jetkvm_app path is now bin/jetkvm_app
ym May 19, 2025
a0f6d01
fix(usbgadget): do not panic if a change isn't found (#481)
ym May 19, 2025
66fbda8
chore: reset usb after updating config (#482)
ym May 19, 2025
860327b
chore: always return local version if update check fails (#485)
ym May 20, 2025
222a847
refactor: network settings UI (#486)
adamshiervani May 20, 2025
4b91c75
chore: upgrade golang to 1.24.3 and nodejs to 22.x (#483)
ym May 20, 2025
354941b
build: add trimpath to go build command
ym May 20, 2025
8eaa86a
style(ui): update styling for access and network settings components …
adamshiervani May 20, 2025
4e90883
build: enable trimpath for both dev and prod releases
ym May 20, 2025
a60e1a5
chore: bump version to 0.4.0
ym May 20, 2025
590c606
Handle panics when calling the RPCHandler instead of dying (#488)
IDisposable May 21, 2025
b91a995
feat(ui): enable multiple keyboard layouts for "paste text" to remote…
dlorch May 21, 2025
25e30f6
refactor: remove init functions (#489)
ym May 22, 2025
21e30c6
fix: display scaling broken (#499)
ym May 22, 2025
2272247
chore: fix linter issues
ym May 22, 2025
0cee284
chore: bump version to 0.4.1
ym May 22, 2025
0c5c69f
feat: sync keyboard led status (#502)
ym May 22, 2025
019934d
chore(ui): Allow mac address copying (#504) (#506)
adammkelly May 22, 2025
c1d771c
feat: allow user to disable keyboard LED synchronization (#507)
ym May 22, 2025
1b5062c
fix(ui): Default the keyboardLayout to en-US if not set (#512)
IDisposable May 23, 2025
7e64a52
chore: add VSCode extensions for improved development environment (#509)
agoodkind May 23, 2025
2ec061b
feat(Keyboard): Hide Pressed Keys (#518)
ariedel87 May 25, 2025
a28676c
feat(websecure): add support for ed25519 certificates (#513)
ym May 25, 2025
55d7f22
chore(ui): Removed unused DeviceSettingState (#496)
IDisposable May 25, 2025
1f7c5c9
feat(ui): Add Ctrl+Alt+Del to the action bar (#498)
IDisposable May 25, 2025
718b343
feat: add local web server loopback mode configuration (#511)
agoodkind May 27, 2025
8d77d75
chore(ui): Clean up warnings (#536)
IDisposable May 30, 2025
a7693df
fix: the screen doesn't dim or turn off
alexballas Jun 2, 2025
f4bb47c
fix(ui): Fix full-screen keyboard lock issues. (#535)
IDisposable Jun 2, 2025
eaa5849
fix: Log spam when using a web terminal #547 (#550)
john-- Jun 2, 2025
e95e30e
Re-add scroll blocking/throttling (#544)
john-- Jun 2, 2025
52dd675
chore: fix eslint errors
ym Jun 3, 2025
9d2abd9
feat(video): add video enhancement settings for saturation, brightnes…
ariedel87 Jun 4, 2025
52825da
Upgrade pion modules to fix CVE (#572)
IDisposable Jun 12, 2025
abb4350
chore: enable dependabot (#256)
SuperQ Jun 12, 2025
bfbc1a5
build(deps): bump actions/setup-go from 4 to 5 (#577)
dependabot[bot] Jun 12, 2025
7ef9a7b
build(deps): bump github.com/gin-contrib/logger from 1.2.5 to 1.2.6 (…
dependabot[bot] Jun 12, 2025
9bd587b
build(deps): bump github.com/prometheus/client_golang (#588)
dependabot[bot] Jun 12, 2025
a40d26a
build(deps): bump github.com/prometheus/procfs from 0.15.1 to 0.16.1 …
dependabot[bot] Jun 12, 2025
0d955a8
build(deps): bump github.com/beevik/ntp from 1.3.1 to 1.4.3 (#585)
dependabot[bot] Jun 12, 2025
91171d9
build(deps): bump golang.org/x/net from 0.40.0 to 0.41.0 (#580)
dependabot[bot] Jun 12, 2025
89f3bc8
build(deps): bump github.com/go-jose/go-jose/v4 in the go_modules gro…
dependabot[bot] Jun 12, 2025
4f6026e
build(deps): bump github.com/Masterminds/semver/v3 from 3.3.0 to 3.3.…
dependabot[bot] Jun 12, 2025
0636cc9
build(deps): bump github.com/hanwen/go-fuse/v2 from 2.5.1 to 2.8.0 (#…
dependabot[bot] Jun 12, 2025
4bfbc66
chore: upgrade go from 1.24.3 to 1.24.4 (#600)
ym Jun 12, 2025
c494cf2
chore: disable cgo (#601)
ym Jun 12, 2025
3cc119c
chore: bump version to 0.4.3
ym Jun 12, 2025
58ade3b
fix: Update metric naming (#602)
SuperQ Jun 12, 2025
b822b73
chore: use pure Go resolver and remove CGO_ENABLED=0 (#603)
ym Jun 12, 2025
1987151
fix(timesync): queryMultipleHttp hanging if all servers are unreachab…
ym Jun 12, 2025
7725278
chore: bump version to 0.4.4
ym Jun 12, 2025
1674a66
fix(ui/cloud): missing SettingsNetworkRoute (#608)
ym Jun 13, 2025
a1ed28c
build: allow the versions in the Makefile to be overwritten with ENV …
Caedis Jun 16, 2025
ffeaf8c
ui(actionBar): remove Ctrl + Alt + Del in favor of Keyboard Macros
ym Jun 18, 2025
cf9c6e5
chore(hid): change absolute mouse usb interface descriptor's subclass…
ronskvm Jun 19, 2025
ccba27c
chore(mDNS): ensure the mDNS mode is set every time network state cha…
IDisposable Jun 19, 2025
6f037a8
feat(native): restart jetkvm_native automatically (#629)
ym Jun 20, 2025
254c001
fix: keyboard_layout default config (en-US/en_US) (#633)
dseven Jun 20, 2025
0d7f47c
fix(ui) firefox permissions error handling (#631)
IDisposable Jun 20, 2025
3e7d8fb
feat(usbgadget): suppress duplicate error logs (#630).
ym Jun 20, 2025
fe127ed
chore: bump version to 0.4.6
ym Jun 25, 2025
960f555
fix: ensure certStore is initialised when adding custom cert (#639)
dseven Jun 30, 2025
73f5659
fix(usbgadget): add lock for logWithSupression (#653)
ym Jul 1, 2025
3530990
build: upgrade packages and move to GitHub runner
IDisposable Jul 1, 2025
9fcf74b
fix(display): reset display state after native binary is restarted (#…
ym Jul 3, 2025
e4f6a71
build(deps): bump github.com/Masterminds/semver/v3 from 3.3.1 to 3.4.…
dependabot[bot] Jul 3, 2025
48a7a63
build(deps): bump github.com/pion/webrtc/v4 from 4.1.2 to 4.1.3 (#667)
dependabot[bot] Jul 3, 2025
090e0b4
build(deps): bump actions/setup-go from 4.2.1 to 5.5.0 (#666)
dependabot[bot] Jul 3, 2025
9c9335d
chore: typo 'supression' should be 'suppression' (#671)
ym Jul 3, 2025
bde0a08
chore: bump to 0.4.7
ym Jul 3, 2025
6d13e1b
chore: remove ActionBar-Ctrl-Alt-Del (#669)
IDisposable Jul 9, 2025
393bc12
chore: fix the base usb configuration (#610)
IDisposable Jul 9, 2025
7267347
feat(dc-power-extension): power restore mode in DCPowerControl compon…
PH89 Jul 9, 2025
488276f
feat(ui): reboot device (#421) (#505)
adammkelly Jul 9, 2025
584768b
chore: remove /device/ui-config.js endpoint (#678)
ym Jul 10, 2025
11a095c
feat(ntp): enhances time sync with DHCP NTP and custom servers (#625)
IDisposable Jul 11, 2025
4a23f22
chore: upgrade ui packages (#571)
IDisposable Jul 11, 2025
ab3dda6
chore(network): fix linting error errcheck
ym Jul 11, 2025
d704fcc
feat: add command to show version (#604)
ym Jul 11, 2025
aada3d9
feat(metrics): adding prometheus metrics for dc power extension (#556)
BradErz Jul 11, 2025
1fc603b
Add -i/--install option to dev_deploy.sh (#527)
solemnwarning Jul 11, 2025
ef95643
Implement HTTP proxy option (#515). (#521)
solemnwarning Jul 11, 2025
3359f8f
Remove Out Endpoint Descriptors from Absolute Mouse and Relative Mous…
rmschooley Jul 11, 2025
5fb8d86
refactor(ui): Refactor the keyboardLayouts (#497)
IDisposable Jul 11, 2025
9ba97eb
chore(ui): Clean new keyboard option (#495)
IDisposable Jul 11, 2025
f1953fd
chore: add metrics for configuration and WOL (#193)
SuperQ Jul 11, 2025
5a3ce2d
chore(ui) Upgrade packages (#682)
IDisposable Jul 11, 2025
b4525b8
chore/ Fix go lint error (#683)
IDisposable Jul 11, 2025
cff3dda
chore: add issue templates (#686)
ym Jul 14, 2025
55fbd6c
docs: add comprehensive DEVELOPMENT.md for JetKVM (#692)
SilkePilon Jul 15, 2025
4fbf43a
chore: add cgo support for devcontainer and github actions
ym Aug 7, 2025
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
23 changes: 18 additions & 5 deletions .devcontainer/devcontainer.json
Original file line number Diff line number Diff line change
@@ -1,14 +1,27 @@
{
"name": "JetKVM",
"image": "mcr.microsoft.com/devcontainers/go:1-1.23-bookworm",
"image": "mcr.microsoft.com/devcontainers/go:1.24-bookworm",
"features": {
"ghcr.io/devcontainers/features/node:1": {
// Should match what is defined in ui/package.json
"version": "21.1.0"
"version": "22.15.0"
}
},
"mounts": [
"source=${localEnv:HOME}/.ssh,target=/home/vscode/.ssh,type=bind,consistency=cached"
]
"source=${localEnv:HOME}/.ssh,target=/home/vscode/.ssh,type=bind,consistency=cached"
],
"onCreateCommand": ".devcontainer/install-deps.sh",
"customizations": {
"vscode": {
"extensions": [
"bradlc.vscode-tailwindcss",
"GitHub.vscode-pull-request-github",
"dbaeumer.vscode-eslint",
"golang.go",
"ms-vscode.makefile-tools",
"esbenp.prettier-vscode",
"github.vscode-github-actions"
]
}
}
}

23 changes: 23 additions & 0 deletions .devcontainer/install-deps.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
#!/bin/bash

set -e

sudo apt-get update && sudo apt-get install -y --no-install-recommends \
build-essential \
device-tree-compiler \
gperf g++-multilib gcc-multilib \
libnl-3-dev libdbus-1-dev libelf-dev libmpc-dev dwarves \
bc openssl flex bison libssl-dev python3 python-is-python3 texinfo kmod cmake \
wget zstd \
&& sudo rm -rf /var/lib/apt/lists/*

# Install buildkit
BUILDKIT_VERSION="v0.2.5"
BUILDKIT_TMPDIR="$(mktemp -d)"
pushd "${BUILDKIT_TMPDIR}" > /dev/null

wget https://github.com/jetkvm/rv1106-system/releases/download/${BUILDKIT_VERSION}/buildkit.tar.zst && \
sudo mkdir -p /opt/jetkvm-native-buildkit && \
sudo tar --use-compress-program="unzstd --long=31" -xvf buildkit.tar.zst -C /opt/jetkvm-native-buildkit && \
rm buildkit.tar.zst
popd
76 changes: 76 additions & 0 deletions .github/ISSUE_TEMPLATE/bug.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,76 @@
---
name: Bug report
description: 🐛 Let us know about an unexpected error, a crash, or an unexpected behavior.
type: 'Bug'
labels:
- 'type: bug'
body:
- type: checkboxes
attributes:
label: Disclaimer
description: |
For support questions, please use the [discussions][] or [Discord][] instead. Before
opening a bug report, ensure you have read the [documentation][],
[Troubleshooting][] and [Device FAQs][]. Only use bug reports for actual
bugs.

[documentation]: https://jetkvm.com/docs
[Troubleshooting]: https://jetkvm.com/docs/getting-started/troubleshooting
[Device FAQs]: https://jetkvm.com/docs/getting-started/faq
[discussions]: https://github.com/jetkvm/kvm/discussions
[Discord]: https://jetkvm.com/discord
options:
- label: I have read and understood the disclaimer.
required: true
- type: input
attributes:
label: Application version
description: |
Provide the application version (can be found in General settings)
validations:
required: true
- type: input
attributes:
label: System version
description: |
Provide the system version (can be found in General settings)
validations:
required: true
- type: dropdown
attributes:
label: Device model
description: Provide the device model
options:
- JetKVM
- JetKVM (POE)
validations:
required: false
- type: dropdown
attributes:
label: Extension model
description: Provide the extension model (if the bug is related to the extension)
options:
- ATX Power Control
- DC Power Control
- Serial Console
validations:
required: false
- type: input
attributes:
label: Remote device Hardware
description: If the bug is related to a remote device, please provide its hardware information e.g. Raspberry Pi 5
validations:
required: false
- type: input
attributes:
label: Remote device OS
description: If the bug is related to a remote device, please provide its OS information as detailed as possible e.g. Debian 12.
validations:
required: false
- type: textarea
attributes:
label: Bug description
description: |
Provide a description of the problem: steps to reproduce it, what you are expecting and what you got.
validations:
required: true
10 changes: 10 additions & 0 deletions .github/ISSUE_TEMPLATE/config.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
blank_issues_enabled: true

contact_links:
- name: Hardware Issues
url: https://jetkvm.com/contact
about: If your hardware is not powering on or is not working, please contact us.

- name: Discord
url: https://jetkvm.com/discord
about: Engage with the JetKVM team and other community members.
46 changes: 46 additions & 0 deletions .github/ISSUE_TEMPLATE/feature.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,46 @@
name: Feature
type: 'Feature'
description: 🚀 Request a new feature.
labels:
- 'type: feature'
body:
- type: textarea
attributes:
label: A note for the community
value: |
> [!NOTE]
> Please vote on this issue by adding a 👍 [reaction](https://blog.github.com/2016-03-10-add-reactions-to-pull-requests-issues-and-comments/) to the original issue to help the community and maintainers prioritize this request.
validations:
required: true
- type: checkboxes
attributes:
label: Disclaimer
description: |
Before requesting a feature, check it does not already exist in the [documentation](https://jetkvm.com/docs) or our [roadmap](https://jetkvm.com/roadmap).
You are quite welcome opening a feature request before spending time to implement it yourself.
options:
- label: I have read and understood the disclaimer.
required: true
- label: I plan to implement the feature myself.
- type: dropdown
attributes:
label: Subsystem
description: Provide the subsystem of the feature you request, you can choose multiple if you think it fits in multiple areas.
options:
- Hardware
- Device Compatibility
- Keyboard
- Mouse
- Power
- UI: Screen
- UI: Application
- UI: Cloud
validations:
required: false
- type: textarea
attributes:
label: Feature description
description: |
Provide a description of the feature you request.
validations:
required: true
17 changes: 17 additions & 0 deletions .github/dependabot.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
version: 2
updates:
- package-ecosystem: gomod
directory: /
schedule:
interval: monthly
open-pull-requests-limit: 10
- package-ecosystem: github-actions
directory: /
schedule:
interval: monthly
open-pull-requests-limit: 10
- package-ecosystem: npm
directory: /ui
open-pull-requests-limit: 10
schedule:
interval: monthly
27 changes: 21 additions & 6 deletions .github/workflows/build.yml
Original file line number Diff line number Diff line change
Expand Up @@ -10,30 +10,45 @@ on:

jobs:
build:
runs-on: buildjet-4vcpu-ubuntu-2204
runs-on: ubuntu-latest
name: Build
if: "github.event.review.state == 'approved' || github.event.event_type != 'pull_request_review'"
if: github.event_name != 'pull_request_review' || github.event.review.state == 'approved'
steps:
- name: Checkout
uses: actions/checkout@v4
- name: Set up Node.js
uses: actions/setup-node@v4
with:
node-version: v21.1.0
node-version: "22"
cache: "npm"
cache-dependency-path: "**/package-lock.json"
- name: Set up Golang
uses: actions/setup-go@v4
uses: actions/setup-go@v5.5.0
with:
go-version: "1.24.0"
go-version: "1.24.4"
- name: Build frontend
run: |
make frontend
- name: Install dependencies
run: |
./.devcontainer/install-deps.sh
- name: Build application
run: |
make build_dev
- name: Run tests
run: |
go test ./... -json > testreport.json
- name: Make test cases
run: |
make build_dev_test
- name: Golang Test Report
uses: becheran/[email protected]
with:
input: "testreport.json"
- name: Upload artifact
uses: actions/upload-artifact@v4
with:
name: jetkvm-app
path: bin/jetkvm_app
path: |
bin/jetkvm_app
device-tests.tar.gz
8 changes: 4 additions & 4 deletions .github/workflows/golangci-lint.yml
Original file line number Diff line number Diff line change
Expand Up @@ -24,14 +24,14 @@ jobs:
- name: Checkout repository
uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
- name: Install Go
uses: actions/setup-go@41dfa10bad2bb2ae585af6ee5bb4d7d973ad74ed # v5.1.0
uses: actions/setup-go@fa96338abe5531f6e34c5cc0bbe28c1a533d5505 # v4.2.1
with:
go-version: 1.23.x
go-version: 1.24.4
- name: Create empty resource directory
run: |
mkdir -p static && touch static/.gitkeep
- name: Lint
uses: golangci/golangci-lint-action@971e284b6050e8a5849b72094c50ab08da042db8 # v6.1.1
uses: golangci/golangci-lint-action@1481404843c368bc19ca9406f87d6e0fc97bdcfd # v7.0.0
with:
args: --verbose
version: v1.62.0
version: v2.0.2
64 changes: 58 additions & 6 deletions .github/workflows/smoketest.yml
Original file line number Diff line number Diff line change
Expand Up @@ -69,12 +69,54 @@ jobs:
CI_USER: ${{ vars.JETKVM_CI_USER }}
CI_HOST: ${{ vars.JETKVM_CI_HOST }}
CI_SSH_PRIVATE: ${{ secrets.JETKVM_CI_SSH_PRIVATE }}
- name: Run tests
run: |
set -e
echo "+ Copying device-tests.tar.gz to remote host"
ssh jkci "cat > /tmp/device-tests.tar.gz" < device-tests.tar.gz
echo "+ Running go tests"
ssh jkci ash << 'EOF'
set -e
TMP_DIR=$(mktemp -d)
cd ${TMP_DIR}
tar zxf /tmp/device-tests.tar.gz
./gotestsum --format=testdox \
--jsonfile=/tmp/device-tests.json \
--post-run-command 'sh -c "echo $TESTS_FAILED > /tmp/device-tests.failed"' \
--raw-command -- ./run_all_tests -json

GOTESTSUM_EXIT_CODE=$?
if [ $GOTESTSUM_EXIT_CODE -ne 0 ]; then
echo "❌ Tests failed (exit code: $GOTESTSUM_EXIT_CODE)"
rm -rf ${TMP_DIR} /tmp/device-tests.tar.gz
exit 1
fi

TESTS_FAILED=$(cat /tmp/device-tests.failed)
if [ "$TESTS_FAILED" -ne 0 ]; then
echo "❌ Tests failed $TESTS_FAILED tests failed"
rm -rf ${TMP_DIR} /tmp/device-tests.tar.gz
exit 1
fi

echo "✅ Tests passed"
rm -rf ${TMP_DIR} /tmp/device-tests.tar.gz
EOF
ssh jkci "cat /tmp/device-tests.json" > device-tests.json
- name: Set up Golang
uses: actions/[email protected]
with:
go-version: "1.24.4"
- name: Golang Test Report
uses: becheran/[email protected]
with:
input: "device-tests.json"
- name: Deploy application
run: |
set -e
# Copy the binary to the remote host
echo "+ Copying the application to the remote host"
cat jetkvm_app | gzip | ssh jkci "cat > /userdata/jetkvm/jetkvm_app.update.gz"
cat bin/jetkvm_app | gzip | ssh jkci "cat > /userdata/jetkvm/jetkvm_app.update.gz"
# Deploy and run the application on the remote host
echo "+ Deploying the application on the remote host"
ssh jkci ash <<EOF
Expand Down Expand Up @@ -108,15 +150,25 @@ jobs:
run: |
echo "+ Checking the status of the device"
curl -v http://$CI_HOST/device/status && echo
echo "+ Waiting for 10 seconds to allow all services to start"
sleep 10
echo "+ Waiting for 15 seconds to allow all services to start"
sleep 15
echo "+ Collecting logs"
ssh jkci "cat /userdata/jetkvm/last.log" > last.log
cat last.log
local_log_tar=$(mktemp)
ssh jkci ash > $local_log_tar <<'EOF'
log_path=$(mktemp -d)
dmesg > $log_path/dmesg.log
cp /userdata/jetkvm/last.log $log_path/last.log
tar -czf - -C $log_path .
EOF
tar -xf $local_log_tar
cat dmesg.log last.log
env:
CI_HOST: ${{ vars.JETKVM_CI_HOST }}
- name: Upload logs
uses: actions/upload-artifact@v4
with:
name: device-logs
path: last.log
path: |
last.log
dmesg.log
device-tests.json
6 changes: 3 additions & 3 deletions .github/workflows/ui-lint.yml
Original file line number Diff line number Diff line change
Expand Up @@ -14,16 +14,16 @@ permissions:
jobs:
ui-lint:
name: UI Lint
runs-on: buildjet-4vcpu-ubuntu-2204
runs-on: ubuntu-latest
steps:
- name: Checkout repository
uses: actions/checkout@v4
- name: Set up Node.js
uses: actions/setup-node@v4
with:
node-version: v21.1.0
node-version: "22"
cache: "npm"
cache-dependency-path: "ui/package-lock.json"
cache-dependency-path: "**/package-lock.json"
- name: Install dependencies
run: |
cd ui
Expand Down
Loading