Movatterモバイル変換


[0]ホーム

URL:


Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Commit68f1946

Browse files
author
Your Name
committed
dind
1 parent1e534da commit68f1946

File tree

2 files changed

+133
-26
lines changed

2 files changed

+133
-26
lines changed

‎.github/workflows/test-update.yml‎

Lines changed: 115 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,115 @@
1+
name:Build & Update with Arduino CLI
2+
3+
on:
4+
push:
5+
branches:
6+
-main
7+
-test_package_update
8+
workflow_dispatch:
9+
10+
permissions:
11+
contents:read
12+
13+
jobs:
14+
build-and-update:
15+
runs-on:ubuntu-22.04
16+
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+
29+
steps:
30+
-name:Checkout
31+
uses:actions/checkout@v4
32+
33+
-name:Set up Go
34+
uses:actions/setup-go@v5
35+
with:
36+
go-version-file:go.mod
37+
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
43+
env:
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 --no-cache -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
114+
run:|
115+
docker exec --user arduino apt-test-update arduino-app-cli version

‎test.Dockerfile‎

Lines changed: 18 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -1,46 +1,38 @@
11
FROM debian:trixie
22

3-
ENV container docker
4-
STOPSIGNAL SIGRTMIN+3
5-
VOLUME ["/sys/fs/cgroup"]
6-
7-
# Install systemd + dependencies
8-
RUN apt update && apt install -y systemd systemd-sysv dbus \
9-
dpkg-dev apt-utils adduser gzip \
10-
&& rm -rf /var/lib/apt/lists/*
11-
12-
# Copy your packages and setup repo (as before)
13-
ARG OLD_PACKAGE_PATH=build/old_package
14-
ARG NEW_PACKAGE_PATH=build
15-
ARG APP_PACKAGE_NAME=arduino-app-cli
16-
ARG ROUTER_PACKAGE_NAME=arduino-router
3+
RUN apt update && \
4+
apt install -y systemd systemd-sysv dbus \
5+
sudo docker.io ca-certificates curl gnupg \
6+
dpkg-dev apt-utils adduser gzip && \
7+
rm -rf /var/lib/apt/lists/*
8+
179
ARG ARCH=arm64
1810

19-
COPY ${OLD_PACKAGE_PATH}/${APP_PACKAGE_NAME}*.deb /tmp/old_app.deb
20-
COPY ${NEW_PACKAGE_PATH}/${APP_PACKAGE_NAME}*.deb /tmp/new_app.deb
21-
COPY ${NEW_PACKAGE_PATH}/${ROUTER_PACKAGE_NAME}*.deb /tmp/new_router.deb
11+
COPY build/stable/arduino-app-cli*.deb /tmp/stable.deb
12+
COPY build/arduino-app-cli*.deb /tmp/unstable.deb
13+
COPY build/stable/arduino-router*.deb /tmp/router.deb
14+
2215

23-
RUN apt update && apt install -y /tmp/old_app.deb /tmp/new_router.deb \
24-
&& rm /tmp/old_app.deb \
16+
RUN apt update && apt install -y /tmp/stable.deb /tmp/router.deb \
17+
&& rm /tmp/stable.deb /tmp/router.deb \
2518
&& mkdir -p /var/www/html/myrepo/dists/trixie/main/binary-${ARCH} \
26-
&& mv /tmp/new_app.deb /var/www/html/myrepo/dists/trixie/main/binary-${ARCH}/ \
27-
&& mv /tmp/new_router.deb /var/www/html/myrepo/dists/trixie/main/binary-${ARCH}/
19+
&& mv /tmp/unstable.deb /var/www/html/myrepo/dists/trixie/main/binary-${ARCH}/
2820

2921
WORKDIR /var/www/html/myrepo
3022
RUN dpkg-scanpackages dists/trixie/main/binary-${ARCH} /dev/null | gzip -9c > dists/trixie/main/binary-${ARCH}/Packages.gz
3123
WORKDIR /
3224

25+
26+
3327
RUN usermod -s /bin/bash arduino || true
3428
RUN mkdir -p /home/arduino && chown -R arduino:arduino /home/arduino
29+
RUN usermod -aG docker arduino
30+
3531

3632

3733
RUN echo"deb [trusted=yes arch=${ARCH}] file:/var/www/html/myrepo trixie main" \
3834
> /etc/apt/sources.list.d/my-mock-repo.list
3935

4036

41-
VOLUME ["/sys/fs/cgroup" ]
42-
43-
44-
4537
# CMD: systemd must be PID 1
46-
CMD ["/sbin/init"]
38+
CMD ["/sbin/init"]

0 commit comments

Comments
 (0)

[8]ページ先頭

©2009-2025 Movatter.jp