Skip to content

Commit b1e1df4

Browse files
doctordaemonx85446
andauthored
Release 0.21.2 (#115)
* Enabled Firmware Update (FOTA) v3 in Debian BYOC dockerimage * Added support to demonstrate updating a component COMP_1 other than MAIN * Fixed FOTA over CoAP * Re-register after update to reach desired state in server * Dockerfile BYOC and Dev: enable core dump * Updated mbed-cloud-client 4.13.3 * Added documentation * Added connectivity issue troubleshooting steps --------- Co-authored-by: Yash Goyal <yash.goyal@izumanetworks.com> Co-authored-by: Travis McCollum <travis.mccollum+github@gmail.com>
1 parent 8480d51 commit b1e1df4

20 files changed

+561
-26
lines changed

.dockerignore

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,2 +1,5 @@
1-
build
21
.git
2+
build/
3+
*.o
4+
*.log
5+
edge-tool-c

.gitignore

Lines changed: 15 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,14 @@ generated
1818
compilation_info.txt
1919
config/edge_version_info.h
2020
release_whitelist_remove_intermediate_files
21+
mcc_config*
22+
edge_configuration/*.c
23+
edge_configuration/*.der
24+
edge_configuration/*.pem
25+
edge_configuration/*.cnf
26+
edge_configuration/*.srl
27+
edge_configuration/*.yaml
28+
edge_configuration/*.txt
2129

2230
### C ###
2331
# Object files
@@ -125,4 +133,10 @@ edge-tool/dist
125133
edge-tool/edge-tool
126134

127135
# Python virtualenv
128-
venv
136+
venv
137+
138+
docs/internal.md
139+
*.log
140+
*.img
141+
*.dtb
142+
*.zip

CHANGELOG.md

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,22 @@
11
# Changelog for Edge
22

3+
## Release 0.21.2
4+
5+
### New Features
6+
7+
* Register a default component COMP_1 when FOTA is enabled using flags `-DFOTA_ENABLE=ON -DFIRMWARE_UPDATE=ON -DFOTA_COMBINED_IMAGE_SUPPORT=ON`.
8+
* Added default firmware install `fota_update_activate.sh` and verify `fota_update_verify.sh` scripts to demonstarted edge-core FOTA feature.
9+
* Added documentation `./docs/create_manifest_v3.md` and `./docs/prepare_fota_component_update.md`.
10+
* Updated `Dockerfile.debian.byoc` to enabled FOTA feature.
11+
* Docker Support: Added new Dockerfiles to build a lightweight, Debian-based `edge-core` Docker image for different modes:
12+
* Dockerfile.debian.dev: DEVELOPER_MODE
13+
* Dockerfile.debian.byoc: BYOC_MODE (Bring Your Own Certificate/Configuration)
14+
* Dockerfile.debian.prod: PRODUCTION_MODE (provisioning requires use of Izuma's factory tooling)
15+
16+
### Improvements
17+
18+
* Upgraded `libevent` to version 2.1.12
19+
320
## Release 0.21.1
421

522
* Update mbed-cloud-client to version [4.13.2](https://github.com/PelionIoT/mbed-cloud-client/blob/4.13.2/CHANGELOG.md).

Dockerfile.debian.byoc

Lines changed: 76 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,76 @@
1+
# Stage 1: Build the application
2+
FROM debian:bookworm-slim AS builder
3+
4+
ARG fota_linux_storage_dir=/opt/izuma
5+
6+
# Set the working directory
7+
WORKDIR /usr/src/app/mbed-edge
8+
9+
# Install dependencies in a single step to reduce layers
10+
RUN apt-get update && \
11+
DEBIAN_FRONTEND="noninteractive" apt-get install -y --no-install-recommends \
12+
tzdata build-essential libc6-dev cmake libcurl4-openssl-dev libssl-dev \
13+
python3 python3-pip pkg-config git && \
14+
rm -rf /var/lib/apt/lists/*
15+
16+
# Copy source files after dependencies are installed
17+
COPY . .
18+
19+
# Return to main project and ensure it links with libbsd
20+
WORKDIR /usr/src/app/mbed-edge
21+
RUN mkdir -p build && cd build && \
22+
cmake -DBYOC_MODE=ON \
23+
-DFIRMWARE_UPDATE=ON \
24+
-DTRACE_LEVEL=DEBUG \
25+
-DFOTA_ENABLE=ON \
26+
-DFOTA_COMBINED_IMAGE_SUPPORT=ON \
27+
-DPLATFORM_TARGET=x86_x64_NativeLinux_mbedtls \
28+
-DFOTA_LINUX_STORAGE_DIR=${fota_linux_storage_dir} \
29+
-DFOTA_SCRIPT_DIR=\"/opt/izuma\" \
30+
-DFOTA_INSTALL_SCRIPT=\"fota_update_activate.sh\" \
31+
-DFOTA_VERIFY_SCRIPT=\"fota_update_verify.sh\" \
32+
.. && \
33+
make -j$(nproc)
34+
35+
# Stage 2: Create a minimal runtime image
36+
FROM debian:bookworm-slim
37+
38+
# Set working directory
39+
WORKDIR /usr/src/app/mbed-edge
40+
41+
ARG fota_linux_storage_dir=/opt/izuma
42+
ENV FOTA_LINUX_STORAGE_DIR=${fota_linux_storage_dir}
43+
44+
# Install only the required runtime dependencies
45+
RUN apt-get update && \
46+
DEBIAN_FRONTEND="noninteractive" apt-get install -y --no-install-recommends \
47+
tzdata libc6 libcurl4 \
48+
vim \
49+
iptables \
50+
iputils-ping \
51+
net-tools \
52+
dnsutils \
53+
traceroute \
54+
curl \
55+
wget \
56+
tcpdump \
57+
socat \
58+
telnet \
59+
nmap \
60+
gdb \
61+
libc6-dbg \
62+
coreutils \
63+
procps && \
64+
rm -rf /var/lib/apt/lists/*
65+
66+
RUN mkdir -p /opt/izuma
67+
68+
# Copy only the built binary from the builder stage
69+
COPY --from=builder /usr/src/app/mbed-edge/build/ /usr/src/app/mbed-edge/build/
70+
COPY --from=builder /usr/src/app/mbed-edge/fota/MAIN "${FOTA_LINUX_STORAGE_DIR}/MAIN"
71+
COPY --from=builder /usr/src/app/mbed-edge/fota/COMP_1 "${FOTA_LINUX_STORAGE_DIR}/COMP_1"
72+
COPY --from=builder /usr/src/app/mbed-edge/start.sh /start.sh
73+
RUN chmod +x /start.sh
74+
75+
ENTRYPOINT ["/start.sh"]
76+
CMD []

Dockerfile.debian.dev

Lines changed: 42 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -3,14 +3,16 @@ FROM debian:bookworm-slim AS builder
33

44
ARG developer_certificate=./config/mbed_cloud_dev_credentials.c
55
ARG update_certificate=./config/update_default_resources.c
6+
ARG fota_linux_storage_dir=/opt/izuma
67

78
# Set the working directory
89
WORKDIR /usr/src/app/mbed-edge
910

1011
# Install dependencies in a single step to reduce layers
1112
RUN apt-get update && \
1213
DEBIAN_FRONTEND="noninteractive" apt-get install -y --no-install-recommends \
13-
tzdata build-essential libc6-dev cmake && \
14+
tzdata build-essential libc6-dev cmake libcurl4-openssl-dev libssl-dev \
15+
python3 python3-pip pkg-config git && \
1416
rm -rf /var/lib/apt/lists/*
1517

1618
# Copy source files after dependencies are installed
@@ -19,22 +21,57 @@ COPY . .
1921
# Return to main project and ensure it links with libbsd
2022
WORKDIR /usr/src/app/mbed-edge
2123
RUN mkdir -p build && cd build && \
22-
cmake -DDEVELOPER_MODE=ON -DFIRMWARE_UPDATE=ON .. && \
23-
make
24+
cmake -DDEVELOPER_MODE=ON \
25+
-DFACTORY_MODE=OFF \
26+
-DBYOC_MODE=OFF \
27+
-DFIRMWARE_UPDATE=ON \
28+
-DTRACE_LEVEL=DEBUG \
29+
-DFOTA_ENABLE=ON \
30+
-DFOTA_COMBINED_IMAGE_SUPPORT=ON \
31+
-DPLATFORM_TARGET=x86_x64_NativeLinux_mbedtls \
32+
-DFOTA_LINUX_STORAGE_DIR=${fota_linux_storage_dir} \
33+
.. && \
34+
make -j$(nproc)
2435

2536
# Stage 2: Create a minimal runtime image
2637
FROM debian:bookworm-slim
2738

2839
# Set working directory
2940
WORKDIR /usr/src/app/mbed-edge
3041

42+
ARG fota_linux_storage_dir=/opt/izuma
43+
ENV FOTA_LINUX_STORAGE_DIR=${fota_linux_storage_dir}
44+
3145
# Install only the required runtime dependencies
3246
RUN apt-get update && \
3347
DEBIAN_FRONTEND="noninteractive" apt-get install -y --no-install-recommends \
34-
tzdata libc6 && \
48+
tzdata libc6 libcurl4 \
49+
vim \
50+
iptables \
51+
iputils-ping \
52+
net-tools \
53+
dnsutils \
54+
traceroute \
55+
curl \
56+
wget \
57+
tcpdump \
58+
socat \
59+
telnet \
60+
nmap \
61+
gdb \
62+
libc6-dbg \
63+
coreutils \
64+
procps && \
3565
rm -rf /var/lib/apt/lists/*
3666

67+
RUN mkdir -p /opt/izuma
68+
3769
# Copy only the built binary from the builder stage
3870
COPY --from=builder /usr/src/app/mbed-edge/build/ /usr/src/app/mbed-edge/build/
71+
COPY --from=builder /usr/src/app/mbed-edge/fota/MAIN "${FOTA_LINUX_STORAGE_DIR}/MAIN"
72+
COPY --from=builder /usr/src/app/mbed-edge/fota/COMP_1 "${FOTA_LINUX_STORAGE_DIR}/COMP_1"
73+
COPY --from=builder /usr/src/app/mbed-edge/start.sh /start.sh
74+
RUN chmod +x /start.sh
3975

40-
CMD [ "./build/bin/edge-core", "--http-port", "8080", "--edge-pt-domain-socket", "/tmp/edge.sock" ]
76+
ENTRYPOINT ["/start.sh"]
77+
CMD []

Dockerfile.debian.prod

Lines changed: 21 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,16 @@
11
# Stage 1: Build the application
22
FROM debian:bookworm-slim AS builder
33

4+
ARG fota_linux_storage_dir=/opt/izuma
5+
46
# Set the working directory
57
WORKDIR /usr/src/app/mbed-edge
68

79
# Install dependencies in a single step to reduce layers
810
RUN apt-get update && \
911
DEBIAN_FRONTEND="noninteractive" apt-get install -y --no-install-recommends \
10-
tzdata build-essential libc6-dev cmake && \
12+
tzdata build-essential libc6-dev cmake libcurl4-openssl-dev libssl-dev \
13+
python3 python3-pip pkg-config git && \
1114
rm -rf /var/lib/apt/lists/*
1215

1316
# Copy source files after dependencies are installed
@@ -16,12 +19,23 @@ COPY . .
1619
# Return to main project and ensure it links with libbsd
1720
WORKDIR /usr/src/app/mbed-edge
1821
RUN mkdir -p build && cd build && \
19-
cmake -DFACTORY_MODE=ON -DDEVELOPER_MODE=OFF -DFIRMWARE_UPDATE=ON .. && \
20-
make
22+
cmake -DFACTORY_MODE=ON \
23+
-DDEVELOPER_MODE=OFF \
24+
-DFIRMWARE_UPDATE=ON \
25+
-DTRACE_LEVEL=DEBUG \
26+
-DFOTA_ENABLE=ON \
27+
-DFOTA_COMBINED_IMAGE_SUPPORT=ON \
28+
-DPLATFORM_TARGET=x86_x64_NativeLinux_mbedtls \
29+
-DFOTA_LINUX_STORAGE_DIR=${fota_linux_storage_dir} \
30+
.. && \
31+
make -j$(nproc)
2132

2233
# Stage 2: Create a minimal runtime image
2334
FROM debian:bookworm-slim
2435

36+
ARG fota_linux_storage_dir=/opt/izuma
37+
ENV FOTA_LINUX_STORAGE_DIR=${fota_linux_storage_dir}
38+
2539
# Set working directory
2640
WORKDIR /usr/src/app/mbed-edge
2741

@@ -31,7 +45,11 @@ RUN apt-get update && \
3145
tzdata libc6 && \
3246
rm -rf /var/lib/apt/lists/*
3347

48+
RUN mkdir -p /opt/izuma
49+
3450
# Copy only the built binary from the builder stage
3551
COPY --from=builder /usr/src/app/mbed-edge/build/ /usr/src/app/mbed-edge/build/
52+
COPY --from=builder /usr/src/app/mbed-edge/fota/MAIN "${FOTA_LINUX_STORAGE_DIR}/MAIN"
53+
COPY --from=builder /usr/src/app/mbed-edge/fota/COMP_1 "${FOTA_LINUX_STORAGE_DIR}/COMP_1"
3654

3755
CMD [ "./build/bin/edge-core", "--http-port", "8080", "--edge-pt-domain-socket", "/tmp/edge.sock" ]

Dockerfile.edge-core-builder

Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,33 @@
1+
FROM ubuntu:22.04
2+
3+
# Set environment variables
4+
ENV DEBIAN_FRONTEND=noninteractive \
5+
TZ=Etc/UTC
6+
7+
# Install required tools and dependencies
8+
RUN apt-get update && apt-get install -y \
9+
build-essential \
10+
cmake \
11+
python3 \
12+
python3-pip \
13+
git \
14+
curl \
15+
wget \
16+
unzip \
17+
ninja-build \
18+
pkg-config \
19+
libssl-dev \
20+
python3-pycryptodome \
21+
python3-venv \
22+
ca-certificates \
23+
libcurl4-openssl-dev \
24+
libglib2.0-dev \
25+
libjson-c-dev \
26+
libc6-dev \
27+
&& apt-get clean && rm -rf /var/lib/apt/lists/*
28+
29+
# Create a working directory
30+
WORKDIR /workspace
31+
32+
# Default command: open bash
33+
CMD ["/bin/bash"]

0 commit comments

Comments
 (0)