1010permissions :
1111contents :read
1212
13+
1314jobs :
1415build-and-update :
1516runs-on :ubuntu-22.04
1617
17- env :
18- TAG_VERSION :" v0.6.7"
19- ARCH :amd64
20- APPCLI_REPO :arduino/arduino-app-cli
21- ROUTER_REPO :arduino/arduino-router
22-
23- APPCLI_TAG :" "
24- APPCLI_REGEX :" amd64\\ .deb$"
25-
26- ROUTER_TAG :" "
27- ROUTER_REGEX :" amd64\\ .deb$"
28-
2918steps :
3019 -name :Checkout
3120uses :actions/checkout@v4
3524with :
3625go-version-file :go.mod
3726
38- -name :Build deb
39- run :|
40- go tool task build-deb VERSION=${TAG_VERSION} ARCH=${ARCH}
41-
42- -name :Fetch .debs dynamically into build/stable
27+ -name :Run dep package update test
4328env :
44- GH_TOKEN :${{ secrets.GITHUB_TOKEN }}
45- run :|
46- set -euo pipefail
47- mkdir -p build/stable
48-
49- fetch_deb () {
50- local repo="$1" tag="${2:-}" regex="$3"
51-
52- echo "==> Resolving release for ${repo} (tag='${tag:-<latest>}')"
53- if [ -n "${tag}" ]; then
54- url="https://api.github.com/repos/${repo}/releases/tags/${tag}"
55- else
56- url="https://api.github.com/repos/${repo}/releases/latest"
57- fi
58-
59- rel="$(curl -sfL -H "Authorization: token ${GH_TOKEN}" -H "Accept: application/vnd.github+json" "${url}")"
60-
61- name="$(echo "$rel" | jq -r --arg re "${regex}" '.assets[] | select(.name | test($re)) | .name' | head -n1)"
62- dl="$(echo "$rel" | jq -r --arg re "${regex}" '.assets[] | select(.name | test($re)) | .browser_download_url' | head -n1)"
63-
64- if [ -z "${name}" ] || [ "${name}" = "null" ] || [ -z "${dl}" ] || [ "${dl}" = "null" ]; then
65- echo "!! No asset found in ${repo} matching regex: ${regex}"
66- echo " Available assets:"
67- echo "$rel" | jq -r '.assets[].name'
68- exit 1
69- fi
70-
71- echo "Found: ${name}"
72- echo "Downloading: ${dl}"
73-
74- curl -sfL -H "Authorization: token ${GH_TOKEN}" \
75- -o "build/stable/${name}" \
76- "${dl}"
77-
78- ls -lh "build/stable/${name}"
79- }
80-
81- fetch_deb "${APPCLI_REPO}" "${APPCLI_TAG}" "${APPCLI_REGEX}"
82- fetch_deb "${ROUTER_REPO}" "${ROUTER_TAG}" "${ROUTER_REGEX}"
83-
84- echo "✅ Downloaded files:"
85- ls -lh build/stable/
86- ls -lh build/
87-
88- -name :Build Docker image (no cache)
89- run :|
90- docker build -t mock-apt-repo -f test.Dockerfile .
91-
92- -name :Run mock-apt-repo container
93- run :|
94- docker run --rm -d \
95- --privileged \
96- --cgroupns=host \
97- -v /sys/fs/cgroup:/sys/fs/cgroup:rw \
98- -v /var/run/docker.sock:/var/run/docker.sock \
99- -e DOCKER_HOST=unix:///var/run/docker.sock \
100- --name apt-test-update \
101- mock-apt-repo
102-
103- -name :Run arduino-app-cli current version
104- run :|
105- docker exec --user arduino apt-test-update arduino-app-cli version
106-
107- -name :Run arduino-app-cli with auto-yes (as arduino)
108- run :|
109- mkdir -p artifacts
110- docker exec apt-test-update sh -lc 'su - arduino -c "yes | arduino-app-cli system update"' \
111- | tee artifacts/arduino-system-update.log
112-
113- -name :Run arduino-app-cli version updated
29+ GH_TOKEN :${{ secrets.ARDUINOBOT_TOKEN }}
11430run :|
115- docker exec --user arduino apt-test-update arduino-app-cli version<
31+ cd internal/testtools
32+ go test -v ./deb_test.go --arch amd64