Skip to content

Commit af20ed6

Browse files
committed
Added Dockerfile and publish action to push docker package
1 parent 8bec7e7 commit af20ed6

File tree

3 files changed

+124
-0
lines changed

3 files changed

+124
-0
lines changed

.github/workflows/publish.yml

+30
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,30 @@
1+
name: Publish Docker
2+
on:
3+
push:
4+
paths:
5+
- 'Integrations/docker/images/Dockerfile'
6+
- '.github/workflows/publish.yml'
7+
jobs:
8+
publish-matter-extension-dependencies-image:
9+
runs-on: ubuntu-latest
10+
permissions:
11+
packages: write
12+
contents: read
13+
attestations: write
14+
id-token: write
15+
steps:
16+
- uses: actions/checkout@v2
17+
- name: Login to GitHub Container Registry
18+
uses: docker/login-action@v1
19+
with:
20+
registry: ghcr.io
21+
username: ${{ github.actor }}
22+
password: ${{ secrets.GITHUB_TOKEN }}
23+
- name: Build the matter_extension_dependencies Docker image
24+
run: |
25+
SiSDK="SiSDK-2024.06.2"
26+
WiFiSDK="WiFiSDK-3.3.1"
27+
VERSION="${SiSDK}_${WiFiSDK}"
28+
docker build -f Integrations/docker/images/Dockerfile . --tag ghcr.io/siliconlabssoftware/matter_extension_dependencies:${VERSION}
29+
docker run ghcr.io/siliconlabssoftware/matter_extension_dependencies:${VERSION}
30+
docker push ghcr.io/siliconlabssoftware/matter_extension_dependencies:${VERSION}

Integrations/docker/images/Dockerfile

+85
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,85 @@
1+
ARG VERSION=latest
2+
FROM ghcr.io/project-chip/chip-build:${VERSION} as build
3+
LABEL org.opencontainers.image.source https://github.com/SiliconLabsSoftware/matter_extension
4+
5+
# Requirements to clone SDKs in temporary container
6+
RUN set -x \
7+
&& apt-get update \
8+
&& DEBIAN_FRONTEND=noninteractive apt-get install -fy --no-install-recommends \
9+
git \
10+
git-lfs \
11+
&& apt-get clean \
12+
&& rm -rf /var/lib/apt/lists/ \
13+
&& : # last line
14+
15+
# Install Arm GNU Toolchain
16+
RUN wget -O gcc.tar.xz "https://developer.arm.com/-/media/Files/downloads/gnu/12.2.rel1/binrel/arm-gnu-toolchain-12.2.rel1-x86_64-arm-none-eabi.tar.xz?rev=7bd049b7a3034e64885fa1a71c12f91d&hash=732D909FA8F68C0E1D0D17D08E057619" \
17+
&& tar -xJf ./gcc.tar.xz -C /tmp \
18+
&& rm ./gcc.tar.xz \
19+
&& : # last line
20+
21+
# Download Simplicity Commander
22+
RUN wget https://www.silabs.com/documents/login/software/SimplicityCommander-Linux.zip \
23+
&& unzip ./SimplicityCommander-Linux.zip -d /tmp \
24+
&& find /tmp/SimplicityCommander-Linux -name 'Commander_linux_x86_64*' -exec tar -xvjf {} -C /tmp/SimplicityCommander-Linux \; \
25+
&& rm ./SimplicityCommander-Linux.zip \
26+
&& : # last line
27+
28+
# Download Simplicity SDK v2024.6.1 (a1a37fa)
29+
RUN wget https://github.com/SiliconLabs/simplicity_sdk/releases/download/v2024.6.2/gecko-sdk.zip -O /tmp/simplicity_sdk.zip \
30+
&& unzip /tmp/simplicity_sdk.zip -d /tmp/simplicity_sdk \
31+
&& rm -rf /tmp/simplicity_sdk.zip \
32+
&& rm -rf /tmp/simplicity_sdk/protocol/flex /tmp/simplicity_sdk/protocol/z-wave /tmp/simplicity_sdk/protocol/wisun \
33+
&& find /tmp/simplicity_sdk/protocol/openthread -name "*efr32mg21*" -delete \
34+
&& : # last line
35+
36+
# Clone WiSeConnect Wi-Fi and Bluetooth Software 2.10.0 (f94b83d)
37+
RUN git clone --depth=1 --single-branch --branch=2.10.0 https://github.com/SiliconLabs/wiseconnect-wifi-bt-sdk.git /tmp/wiseconnect-wifi-bt-sdk \
38+
&& cd /tmp/wiseconnect-wifi-bt-sdk \
39+
&& rm -rf .git \
40+
&& : # last line
41+
42+
# Clone WiSeConnect SDK v3.3.1 (841ea3f)
43+
RUN git clone --depth=1 --single-branch --branch=v3.3.1 https://github.com/SiliconLabs/wiseconnect.git /tmp/wifi_sdk \
44+
&& cd /tmp/wifi_sdk \
45+
&& rm -rf .git \
46+
&& : # last line
47+
48+
# SLC-cli install
49+
RUN wget https://www.silabs.com/documents/login/software/slc_cli_linux.zip \
50+
&& unzip ./slc_cli_linux.zip -d /tmp \
51+
&& rm ./slc_cli_linux.zip \
52+
&& : # last line
53+
54+
# Final SDK container for compiling using Silabs SDK
55+
FROM ghcr.io/project-chip/chip-build:${VERSION}
56+
57+
ADD requirements.txt /tmp/requirements.txt
58+
59+
# Cross compiler for various platform builds
60+
RUN set -x \
61+
&& apt-get update \
62+
&& DEBIAN_FRONTEND=noninteractive apt-get install -fy --no-install-recommends \
63+
openjdk-17-jdk-headless \
64+
ccache \
65+
&& apt-get clean \
66+
&& rm -rf /var/lib/apt/lists/ \
67+
# Install Python Packages
68+
&& pip3 install --break-system-packages -r /tmp/requirements.txt \
69+
&& rm /tmp/requirements.txt \
70+
&& : # last line
71+
72+
ENV SISDK_ROOT=/opt/silabs/simplicity_sdk/
73+
ENV WISECONNECT_SDK_ROOT=/opt/silabs/wiseconnect-wifi-bt-sdk/
74+
ENV WIFI_SDK_ROOT=${SISDK_ROOT}/extension/wiseconnect
75+
ENV POST_BUILD_EXE="/opt/silabs/SimplicityCommander/commander/commander"
76+
ENV PATH="${PATH}:/opt/silabs/slc_cli/"
77+
ENV ARM_GCC_DIR="/opt/silabs/arm-gcc-dir/"
78+
ENV PATH="${PATH}:${ARM_GCC_DIR}/bin"
79+
80+
COPY --from=build /tmp/arm-gnu-toolchain-12.2.rel1-x86_64-arm-none-eabi ${ARM_GCC_DIR}
81+
COPY --from=build /tmp/SimplicityCommander-Linux /opt/silabs/SimplicityCommander/
82+
COPY --from=build /tmp/simplicity_sdk ${SISDK_ROOT}
83+
COPY --from=build /tmp/wiseconnect-wifi-bt-sdk/ ${WISECONNECT_SDK_ROOT}
84+
COPY --from=build /tmp/wifi_sdk ${WIFI_SDK_ROOT}
85+
COPY --from=build /tmp/slc_cli /opt/silabs/slc_cli

requirements.txt

+9
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
# codegen.py build requirements
2+
Jinja2==3.1.3
3+
lark==1.1.7
4+
# Sphinx dependencies (for slc-cli)
5+
linkify-it-py==2.0.2
6+
myst-parser==2.0.0
7+
Sphinx==7.2.6
8+
sphinx-rtd-theme==1.3.0
9+
sphinx-tabs==3.4.1

0 commit comments

Comments
 (0)