Skip to content

fix: rebuild fledge Docker image from GitHub sources#1146

Merged
eriknordmark merged 1 commit intolf-edge:masterfrom
rene:build-fledge
Apr 25, 2026
Merged

fix: rebuild fledge Docker image from GitHub sources#1146
eriknordmark merged 1 commit intolf-edge:masterfrom
rene:build-fledge

Conversation

@rene
Copy link
Copy Markdown
Contributor

@rene rene commented Apr 23, 2026

The fledge-iot.org website and package archive were decommissioned; .deb packages are no longer available. Rewrite the Dockerfile to clone and build all fledge components directly from https://github.com/fledge-iot.

Key changes:

  • Base image bumped from ubuntu:18.04 (EOL) to ubuntu:20.04
  • FLEDGEVERSION defaults to 3.1.0 (latest stable)
  • fledge core built via requirements.sh + make install
  • C++ plugins built with cmake -DFLEDGE_INSTALL
  • Python plugins (sinusoid, http_south) installed by file copy
  • fledge-gui built with yarn + ./build --clean-start, served by nginx

Package renames from deb to GitHub repo names:

  • fledge-south-modbus → fledge-south-modbus-c
  • fledge-south-flirax8 → fledge-south-FlirAX8
  • fledge-south-http-south → fledge-south-http
  • fledge-north-httpc → fledge-north-http-c
  • fledge-filter-flirvalidity removed (no public GitHub repo)

Build fixes discovered during docker buildx build:

  • FLEDGE_ROOT must be unset during make install to avoid missing get_storage_plugin.sh (check_schema_update.sh uses installed path)
  • cmake_build/ and C/ dirs must be copied from source to install dir so plugin FindFledge.cmake can locate headers and compiled libs
  • libboost-filesystem-dev and libboost-program-options-dev needed for freeopcua (OPC-UA dependency)
  • Notification service headers saved to notification-service-include/ and NOTIFICATION_SERVICE_INCLUDE_DIRS set for rule/notify plugins

@rene rene requested a review from eriknordmark April 23, 2026 14:49
@rene rene requested a review from uncleDecart as a code owner April 23, 2026 14:49
@rene rene requested review from europaul and shjala April 23, 2026 14:49
The fledge-iot.org website and package archive were decommissioned;
.deb packages are no longer available. Rewrite the Dockerfile to clone
and build all fledge components directly from https://github.com/fledge-iot.

Key changes:
- Base image bumped from ubuntu:18.04 (EOL) to ubuntu:20.04
- FLEDGEVERSION defaults to 3.1.0 (latest stable)
- fledge core built via requirements.sh + make install
- C++ plugins built with cmake -DFLEDGE_INSTALL
- Python plugins (sinusoid, http_south) installed by file copy
- fledge-gui built with yarn + ./build --clean-start, served by nginx

Package renames from deb to GitHub repo names:
- fledge-south-modbus      → fledge-south-modbus-c
- fledge-south-flirax8     → fledge-south-FlirAX8
- fledge-south-http-south  → fledge-south-http
- fledge-north-httpc       → fledge-north-http-c
- fledge-filter-flirvalidity removed (no public GitHub repo)

Build fixes discovered during docker buildx build:
- FLEDGE_ROOT must be unset during make install to avoid missing
  get_storage_plugin.sh (check_schema_update.sh uses installed path)
- cmake_build/ and C/ dirs must be copied from source to install dir
  so plugin FindFledge.cmake can locate headers and compiled libs
- libboost-filesystem-dev and libboost-program-options-dev needed for
  freeopcua (OPC-UA dependency)
- Notification service headers saved to notification-service-include/
  and NOTIFICATION_SERVICE_INCLUDE_DIRS set for rule/notify plugins

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Signed-off-by: Renê de Souza Pinto <rene@renesp.com.br>
@rene
Copy link
Copy Markdown
Contributor Author

rene commented Apr 24, 2026

From Claude:

Here's the full lifecycle of the FLIR image in Eden:


What the Image Is

The image (lfedge/eden-fledgeeveflirdemo) is a FLEDGE IoT gateway — a Linux Foundation Edge framework — with plugins for the FLIR AX8 thermal camera. It runs Nginx, the Fledge core, several
south/north/filter/rule plugins, and a web GUI.

Built from: tests/flir/image/Dockerfile (Ubuntu 20.04 base, plugins compiled from GitHub source via cmake/git).


Build Pipeline

make build-docker (root)
└─> make -C tests build-docker
└─> make -C tests/flir build-docker
└─> docker buildx build --tag lfedge/eden-fledgeeveflirdemo: tests/flir/image/

The version tag is derived from git tag --contains HEAD, falling back to the short commit SHA. The image is multi-arch (amd64 + arm64) and published to DockerHub via .github/workflows/publish.yml on pushes to
master or semver tags.


How It's Used in Tests

The sole consumer is tests/flir/testdata/test_flir.txt, an escript scenario. The flow:

  1. Deploy the image as an EVE pod via eden pod deploy:
    eden pod deploy -p 8027:80 -p 8028:8081 --name=fledge --memory=2GB --cpus=2 \
    docker://lfedge/eden-fledgeeveflirdemo:83cfe07
  2. Wait up to 20 minutes for the pod to reach RUNNING state.
  3. Configure the FlirAX8 south plugin by POSTing to the Fledge REST API via Eden SDN port forwarding (port 8028 → container's 8081).
  4. Verify that dataRead > 0 (camera is delivering data).
  5. Query /fledge/asset/AX8/summary and assert the response contains "green" and "average".
  6. Cleanup by deleting the pod.

The test is registered in tests/flir/eden.flir.tests.txt and runs through the escript runner (tests/escript/escript_test.go → TestEdenScripts/test_flir).


Notable Caveats

  • The image tag in the test script is hardcoded to 83cfe07 (a 2021 commit SHA) — it doesn't dynamically pick up the latest build unlike other tests that use EdenConfig "eden.*.tag".
  • The test is not wired into CI (test.yml) — there's no active runner for it.
  • The image was recently overhauled (Dockerfile rebuilt from source instead of .deb packages) but the test's pinned tag hasn't been updated to match.

@rene
Copy link
Copy Markdown
Contributor Author

rene commented Apr 24, 2026

In a nutshell our workflows are not impacted by this image, only Eden build....

@uncleDecart
Copy link
Copy Markdown
Member

Look good @rene. Did you try to run it locally?

Copy link
Copy Markdown
Contributor

@eriknordmark eriknordmark left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Run tests

@eriknordmark eriknordmark merged commit c42bb5e into lf-edge:master Apr 25, 2026
18 checks passed
eriknordmark added a commit that referenced this pull request May 8, 2026
Backport of #1146 (commit c42bb5e).

The fledge-iot.org website and package archive were decommissioned;
.deb packages are no longer available. The Dockerfile must be rewritten
to clone and build all fledge components directly from
https://github.com/fledge-iot.

Manual port: the original commit was a 60-line→180-line rewrite that does
not cherry-pick cleanly because the stable branch had ubuntu:18.04 /
FLEDGEVERSION 1.8.2 while the new version is ubuntu:20.04 /
FLEDGEVERSION 3.1.0. Adopt master's Dockerfile verbatim, since the old
one no longer builds anywhere now that fledge-iot.org is gone.

Original commit message follows:

The fledge-iot.org website and package archive were decommissioned;
.deb packages are no longer available. Rewrite the Dockerfile to clone
and build all fledge components directly from https://github.com/fledge-iot.

Key changes:
- Base image bumped from ubuntu:18.04 (EOL) to ubuntu:20.04
- FLEDGEVERSION defaults to 3.1.0 (latest stable)
- fledge core built via requirements.sh + make install
- C++ plugins built with cmake -DFLEDGE_INSTALL
- Python plugins (sinusoid, http_south) installed by file copy
- fledge-gui built with yarn + ./build --clean-start, served by nginx

Package renames from deb to GitHub repo names:
- fledge-south-modbus      -> fledge-south-modbus-c
- fledge-south-flirax8     -> fledge-south-FlirAX8
- fledge-south-http-south  -> fledge-south-http
- fledge-north-httpc       -> fledge-north-http-c
- fledge-filter-flirvalidity removed (no public GitHub repo)

Signed-off-by: eriknordmark <erik@zededa.com>
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
eriknordmark added a commit that referenced this pull request May 8, 2026
Backport of #1146 (commit c42bb5e).

The fledge-iot.org website and package archive were decommissioned;
.deb packages are no longer available. The Dockerfile must be rewritten
to clone and build all fledge components directly from
https://github.com/fledge-iot.

Manual port: the original commit was a 60-line→180-line rewrite that does
not cherry-pick cleanly because the stable branch had ubuntu:18.04 /
FLEDGEVERSION 1.8.2 while the new version is ubuntu:20.04 /
FLEDGEVERSION 3.1.0. Adopt master's Dockerfile verbatim, since the old
one no longer builds anywhere now that fledge-iot.org is gone.

Original commit message follows:

The fledge-iot.org website and package archive were decommissioned;
.deb packages are no longer available. Rewrite the Dockerfile to clone
and build all fledge components directly from https://github.com/fledge-iot.

Key changes:
- Base image bumped from ubuntu:18.04 (EOL) to ubuntu:20.04
- FLEDGEVERSION defaults to 3.1.0 (latest stable)
- fledge core built via requirements.sh + make install
- C++ plugins built with cmake -DFLEDGE_INSTALL
- Python plugins (sinusoid, http_south) installed by file copy
- fledge-gui built with yarn + ./build --clean-start, served by nginx

Package renames from deb to GitHub repo names:
- fledge-south-modbus      -> fledge-south-modbus-c
- fledge-south-flirax8     -> fledge-south-FlirAX8
- fledge-south-http-south  -> fledge-south-http
- fledge-north-httpc       -> fledge-north-http-c
- fledge-filter-flirvalidity removed (no public GitHub repo)

Signed-off-by: eriknordmark <erik@zededa.com>
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
eriknordmark added a commit that referenced this pull request May 8, 2026
Backport of #1146 (commit c42bb5e).

The fledge-iot.org website and package archive were decommissioned;
.deb packages are no longer available. The Dockerfile must be rewritten
to clone and build all fledge components directly from
https://github.com/fledge-iot.

Manual port: the original commit was a 60-line→180-line rewrite that does
not cherry-pick cleanly because the stable branch had ubuntu:18.04 /
FLEDGEVERSION 1.8.2 while the new version is ubuntu:20.04 /
FLEDGEVERSION 3.1.0. Adopt master's Dockerfile verbatim, since the old
one no longer builds anywhere now that fledge-iot.org is gone.

Original commit message follows:

The fledge-iot.org website and package archive were decommissioned;
.deb packages are no longer available. Rewrite the Dockerfile to clone
and build all fledge components directly from https://github.com/fledge-iot.

Key changes:
- Base image bumped from ubuntu:18.04 (EOL) to ubuntu:20.04
- FLEDGEVERSION defaults to 3.1.0 (latest stable)
- fledge core built via requirements.sh + make install
- C++ plugins built with cmake -DFLEDGE_INSTALL
- Python plugins (sinusoid, http_south) installed by file copy
- fledge-gui built with yarn + ./build --clean-start, served by nginx

Package renames from deb to GitHub repo names:
- fledge-south-modbus      -> fledge-south-modbus-c
- fledge-south-flirax8     -> fledge-south-FlirAX8
- fledge-south-http-south  -> fledge-south-http
- fledge-north-httpc       -> fledge-north-http-c
- fledge-filter-flirvalidity removed (no public GitHub repo)

Signed-off-by: eriknordmark <erik@zededa.com>
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants