Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion .github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,7 @@ on:
permissions: read-all

env:
GO_VERSION: '1.26.5'
GO_VERSION: '1.26.6'

jobs:
lint:
Expand Down
2 changes: 1 addition & 1 deletion .github/workflows/govulncheck.yml
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@ on:
permissions: read-all

env:
GO_VERSION: '1.26.5'
GO_VERSION: '1.26.6'

jobs:
govulncheck:
Expand Down
2 changes: 1 addition & 1 deletion .github/workflows/release.yml
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@ on:
- 'v*'

env:
GO_VERSION: '1.26.5'
GO_VERSION: '1.26.6'

permissions: read-all

Expand Down
2 changes: 1 addition & 1 deletion .golangci.yaml
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
# golangci-lint configuration for router wrapper
# Target: Go 1.26.5, module github.com/eclipse-iofog/router
# Target: Go 1.26.6, module github.com/eclipse-iofog/router

version: "2"

Expand Down
19 changes: 19 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1,5 +1,24 @@
# Changelog


## [v3.8.3] - 2026-08-20

### Wrapper release

- **v3.8.3** — security/maintenance patch; Go toolchain **1.26.6** (was 1.26.5) to pick up stdlib fixes (GO-2026-6218, GO-2026-6090, GO-2026-5972, GO-2026-5026). No wrapper change.
- Bump iofog-go-sdk to **iofog-go-sdk v3.8.3-rc.1**

### Embedded skupper-router

- Pin and compile upstream **skupper-router 3.5.2** (was 3.5.1; separate from wrapper semver).

### CI and release

- **`ci.yml`**, **`release.yml`**, **`govulncheck.yml`**: Go **1.26.6** in workflow env.
- **`Dockerfile`**, **`Dockerfile.dev`**, **`Dockerfile.edge`**: `golang:1.26.6-alpine` builder image (digest-pinned in prod/edge).
- **`Dockerfile`**: refresh digest pins for `ubi9/ubi-minimal` and `ubi9/ubi`; compile skupper-router **3.5.2**.
- **`Dockerfile.edge`**: refresh digest pins for `debian:trixie` and `debian:trixie-slim`; compile skupper-router **3.5.2**.

## [v3.8.2] - 2026-07-25

### Wrapper release
Expand Down
4 changes: 2 additions & 2 deletions CONTRIBUTING.md
Original file line number Diff line number Diff line change
Expand Up @@ -29,9 +29,9 @@ Do **not** use the legacy **`iofog/merge`** branch — it is abandoned in favor

## Development setup

- **Go 1.26.5** (see `go.mod`).
- **Go 1.26.6** (see `go.mod`).
- `make test`, `make fmt-check`, `make security-code` before pushing.
- Local wrapper overlay: `Dockerfile.dev` (upstream `quay.io/skupper/skupper-router:3.5.1` image).
- Local wrapper overlay: `Dockerfile.dev` (upstream `quay.io/skupper/skupper-router:3.5.2` image).

Module import path is always **`github.com/eclipse-iofog/router`**, even when cloning the Datasance mirror.

Expand Down
14 changes: 7 additions & 7 deletions Dockerfile
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
# registry.access.redhat.com/ubi9/ubi-minimal:latest — pin manifest list digest
FROM registry.access.redhat.com/ubi9/ubi-minimal@sha256:2e8edce823a48e51858f1fad3ff4cbf6875ce8a3f86b9eecf298bc2050c8652a AS builder
FROM registry.access.redhat.com/ubi9/ubi-minimal@sha256:8eb2830d0936237fc13a1f2f7e45aecf90d69043380ad167fad0343632937f41 AS builder

# upgrade first to avoid fixable vulnerabilities
# do this in builder as well as in buildee, so builder does not have different pkg versions from buildee image
Expand All @@ -17,14 +17,14 @@
&& microdnf clean all -y

WORKDIR /build
# Clone skupper-router 3.5.1 so repo contents are in /build (not /build/skupper-router)
RUN git clone --depth 1 --branch 3.5.1 https://github.com/skupperproject/skupper-router.git .
# Clone skupper-router 3.5.2 so repo contents are in /build (not /build/skupper-router)
RUN git clone --depth 1 --branch 3.5.2 https://github.com/skupperproject/skupper-router.git .
ENV PROTON_VERSION=e5d5c2badb964684bf41ba509a110bf06a24712a
ENV PROTON_SOURCE_URL=${PROTON_SOURCE_URL:-https://github.com/apache/qpid-proton/archive/${PROTON_VERSION}.tar.gz}

Check warning on line 23 in Dockerfile

View workflow job for this annotation

GitHub Actions / Docker smoke (arm64)

Variables should be defined before their use

UndefinedVar: Usage of undefined variable '$PROTON_SOURCE_URL' More info: https://docs.docker.com/go/dockerfile/rule/undefined-var/

Check warning on line 23 in Dockerfile

View workflow job for this annotation

GitHub Actions / Docker smoke (amd64)

Variables should be defined before their use

UndefinedVar: Usage of undefined variable '$PROTON_SOURCE_URL' More info: https://docs.docker.com/go/dockerfile/rule/undefined-var/

Check warning on line 23 in Dockerfile

View workflow job for this annotation

GitHub Actions / Publish UBI image (amd64, arm64)

Variables should be defined before their use

UndefinedVar: Usage of undefined variable '$PROTON_SOURCE_URL' More info: https://docs.docker.com/go/dockerfile/rule/undefined-var/
ENV LWS_VERSION=v4.3.3
ENV LIBUNWIND_VERSION=v1.8.1
ENV LWS_SOURCE_URL=${LWS_SOURCE_URL:-https://github.com/warmcat/libwebsockets/archive/refs/tags/${LWS_VERSION}.tar.gz}

Check warning on line 26 in Dockerfile

View workflow job for this annotation

GitHub Actions / Docker smoke (arm64)

Variables should be defined before their use

UndefinedVar: Usage of undefined variable '$LWS_SOURCE_URL' More info: https://docs.docker.com/go/dockerfile/rule/undefined-var/

Check warning on line 26 in Dockerfile

View workflow job for this annotation

GitHub Actions / Docker smoke (amd64)

Variables should be defined before their use

UndefinedVar: Usage of undefined variable '$LWS_SOURCE_URL' More info: https://docs.docker.com/go/dockerfile/rule/undefined-var/

Check warning on line 26 in Dockerfile

View workflow job for this annotation

GitHub Actions / Publish UBI image (amd64, arm64)

Variables should be defined before their use

UndefinedVar: Usage of undefined variable '$LWS_SOURCE_URL' More info: https://docs.docker.com/go/dockerfile/rule/undefined-var/
ENV LIBUNWIND_SOURCE_URL=${LIBUNWIND_SOURCE_URL:-https://github.com/libunwind/libunwind/archive/refs/tags/${LIBUNWIND_VERSION}.tar.gz}

Check warning on line 27 in Dockerfile

View workflow job for this annotation

GitHub Actions / Docker smoke (arm64)

Variables should be defined before their use

UndefinedVar: Usage of undefined variable '$LIBUNWIND_SOURCE_URL' More info: https://docs.docker.com/go/dockerfile/rule/undefined-var/

Check warning on line 27 in Dockerfile

View workflow job for this annotation

GitHub Actions / Docker smoke (amd64)

Variables should be defined before their use

UndefinedVar: Usage of undefined variable '$LIBUNWIND_SOURCE_URL' More info: https://docs.docker.com/go/dockerfile/rule/undefined-var/

Check warning on line 27 in Dockerfile

View workflow job for this annotation

GitHub Actions / Publish UBI image (amd64, arm64)

Variables should be defined before their use

UndefinedVar: Usage of undefined variable '$LIBUNWIND_SOURCE_URL' More info: https://docs.docker.com/go/dockerfile/rule/undefined-var/
ENV PKG_CONFIG_PATH=/usr/local/lib/pkgconfig

ARG VERSION=0.0.0
Expand All @@ -40,7 +40,7 @@
RUN mkdir /image/licenses && cp ./LICENSE /image/licenses

# registry.access.redhat.com/ubi9/ubi:latest — pin manifest list digest
FROM registry.access.redhat.com/ubi9/ubi@sha256:2a6bd6971e6026177b2439655282660519198870e9063c4a03a208de88be2e9e AS packager
FROM registry.access.redhat.com/ubi9/ubi@sha256:5426a8f45e80a07168a30ea24d84f266094b3756624a5508cc53927e6ee39e09 AS packager

RUN dnf -y --setopt=install_weak_deps=0 --nodocs \
--installroot /output install \
Expand All @@ -56,8 +56,8 @@
RUN [ -d /usr/share/buildinfo ] && cp -a /usr/share/buildinfo /output/usr/share/buildinfo ||:
RUN [ -d /root/buildinfo ] && cp -a /root/buildinfo /output/root/buildinfo ||:

# golang:1.26.5-alpine — pin manifest list digest
FROM golang:1.26.5-alpine@sha256:0178a641fbb4858c5f1b48e34bdaabe0350a330a1b1149aabd498d0699ff5fb2 AS go-builder
# golang:1.26.6-alpine — pin manifest list digest
FROM golang:1.26.6-alpine@sha256:3889b425f035be855a72fb4755265311293b6d414521f0a519d819df32222d83 AS go-builder

ARG TARGETOS
ARG TARGETARCH
Expand All @@ -69,7 +69,7 @@
RUN GOOS=${TARGETOS} GOARCH=${TARGETARCH} go build -trimpath -ldflags="-s -w" -o bin/router .

# registry.access.redhat.com/ubi9/ubi-minimal:latest — pin manifest list digest
FROM registry.access.redhat.com/ubi9/ubi-minimal@sha256:2e8edce823a48e51858f1fad3ff4cbf6875ce8a3f86b9eecf298bc2050c8652a AS tz
FROM registry.access.redhat.com/ubi9/ubi-minimal@sha256:8eb2830d0936237fc13a1f2f7e45aecf90d69043380ad167fad0343632937f41 AS tz
RUN microdnf install -y tzdata && microdnf reinstall -y tzdata

FROM scratch
Expand Down
4 changes: 2 additions & 2 deletions Dockerfile.dev
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
FROM golang:1.26.5-alpine AS go-builder
FROM golang:1.26.6-alpine AS go-builder

ARG TARGETOS
ARG TARGETARCH
Expand All @@ -12,7 +12,7 @@ RUN GOOS=${TARGETOS} GOARCH=${TARGETARCH} go build -trimpath -ldflags="-s -w" -
FROM registry.access.redhat.com/ubi9/ubi-minimal:latest AS tz
RUN microdnf install -y tzdata && microdnf reinstall -y tzdata

FROM quay.io/skupper/skupper-router:3.5.1
FROM quay.io/skupper/skupper-router:3.5.2
COPY LICENSE /licenses/LICENSE
COPY --from=go-builder /go/src/github.com/eclipse-iofog/router/bin/router /home/skrouterd/bin/router
COPY scripts/launch.sh /home/skrouterd/bin/launch.sh
Expand Down
12 changes: 6 additions & 6 deletions Dockerfile.edge
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@
# UBI Dockerfile handles amd64/arm64; this file mirrors /image layout → scratch.

# debian:trixie — pin manifest list digest
FROM debian:trixie@sha256:fac46bff2e02f51425b6e33b0e1169f55dfb053d83511ca28aa50c09fd5ed7a4 AS builder
FROM debian:trixie@sha256:34cd9e9fd437c0a095ec39cb2e73422c9f30821b0d0848ed74fd0d43bae4d958 AS builder

RUN apt-get update && apt-get install -y --no-install-recommends \
gcc g++ make cmake pkg-config \
Expand All @@ -15,14 +15,14 @@
&& rm -rf /var/lib/apt/lists/*

WORKDIR /build
RUN git clone --depth 1 --branch 3.5.1 https://github.com/skupperproject/skupper-router.git .
RUN git clone --depth 1 --branch 3.5.2 https://github.com/skupperproject/skupper-router.git .

ENV PROTON_VERSION=e5d5c2badb964684bf41ba509a110bf06a24712a
ENV PROTON_SOURCE_URL=${PROTON_SOURCE_URL:-https://github.com/apache/qpid-proton/archive/${PROTON_VERSION}.tar.gz}

Check warning on line 21 in Dockerfile.edge

View workflow job for this annotation

GitHub Actions / Docker smoke (armv7)

Variables should be defined before their use

UndefinedVar: Usage of undefined variable '$PROTON_SOURCE_URL' More info: https://docs.docker.com/go/dockerfile/rule/undefined-var/

Check warning on line 21 in Dockerfile.edge

View workflow job for this annotation

GitHub Actions / Docker smoke (riscv64)

Variables should be defined before their use

UndefinedVar: Usage of undefined variable '$PROTON_SOURCE_URL' More info: https://docs.docker.com/go/dockerfile/rule/undefined-var/

Check warning on line 21 in Dockerfile.edge

View workflow job for this annotation

GitHub Actions / Publish edge image (arm/v7, riscv64)

Variables should be defined before their use

UndefinedVar: Usage of undefined variable '$PROTON_SOURCE_URL' More info: https://docs.docker.com/go/dockerfile/rule/undefined-var/
ENV LWS_VERSION=v4.3.3
ENV LIBUNWIND_VERSION=v1.8.1
ENV LWS_SOURCE_URL=${LWS_SOURCE_URL:-https://github.com/warmcat/libwebsockets/archive/refs/tags/${LWS_VERSION}.tar.gz}

Check warning on line 24 in Dockerfile.edge

View workflow job for this annotation

GitHub Actions / Docker smoke (armv7)

Variables should be defined before their use

UndefinedVar: Usage of undefined variable '$LWS_SOURCE_URL' More info: https://docs.docker.com/go/dockerfile/rule/undefined-var/

Check warning on line 24 in Dockerfile.edge

View workflow job for this annotation

GitHub Actions / Docker smoke (riscv64)

Variables should be defined before their use

UndefinedVar: Usage of undefined variable '$LWS_SOURCE_URL' More info: https://docs.docker.com/go/dockerfile/rule/undefined-var/

Check warning on line 24 in Dockerfile.edge

View workflow job for this annotation

GitHub Actions / Publish edge image (arm/v7, riscv64)

Variables should be defined before their use

UndefinedVar: Usage of undefined variable '$LWS_SOURCE_URL' More info: https://docs.docker.com/go/dockerfile/rule/undefined-var/
ENV LIBUNWIND_SOURCE_URL=${LIBUNWIND_SOURCE_URL:-https://github.com/libunwind/libunwind/archive/refs/tags/${LIBUNWIND_VERSION}.tar.gz}

Check warning on line 25 in Dockerfile.edge

View workflow job for this annotation

GitHub Actions / Docker smoke (armv7)

Variables should be defined before their use

UndefinedVar: Usage of undefined variable '$LIBUNWIND_SOURCE_URL' More info: https://docs.docker.com/go/dockerfile/rule/undefined-var/

Check warning on line 25 in Dockerfile.edge

View workflow job for this annotation

GitHub Actions / Docker smoke (riscv64)

Variables should be defined before their use

UndefinedVar: Usage of undefined variable '$LIBUNWIND_SOURCE_URL' More info: https://docs.docker.com/go/dockerfile/rule/undefined-var/

Check warning on line 25 in Dockerfile.edge

View workflow job for this annotation

GitHub Actions / Publish edge image (arm/v7, riscv64)

Variables should be defined before their use

UndefinedVar: Usage of undefined variable '$LIBUNWIND_SOURCE_URL' More info: https://docs.docker.com/go/dockerfile/rule/undefined-var/
ENV PKG_CONFIG_PATH=/usr/local/lib/pkgconfig
ENV PIP_BREAK_SYSTEM_PACKAGES=1
ENV CFLAGS="-O2 -g -pipe -Wall -Wp,-D_FORTIFY_SOURCE=2 -fstack-protector-strong"
Expand Down Expand Up @@ -58,7 +58,7 @@
RUN mkdir /image/licenses && cp ./LICENSE /image/licenses

# debian:trixie — pin manifest list digest
FROM debian:trixie@sha256:fac46bff2e02f51425b6e33b0e1169f55dfb053d83511ca28aa50c09fd5ed7a4 AS packager
FROM debian:trixie@sha256:34cd9e9fd437c0a095ec39cb2e73422c9f30821b0d0848ed74fd0d43bae4d958 AS packager

# UBI installroot analogue: download only runtime .debs + hard deps, extract to /output.
ENV ROOTFS=/output
Expand All @@ -84,8 +84,8 @@
&& find "${ROOTFS}/usr/lib" -name 'libapt*.so*' -delete \
&& find "${ROOTFS}/usr/lib" -path '*/python3*' -type d \( -name test -o -name idlelib -o -name tkinter -o -name ensurepip \) -exec rm -rf {} + 2>/dev/null || true

# golang:1.26.5-alpine — pin manifest list digest
FROM golang:1.26.5-alpine@sha256:0178a641fbb4858c5f1b48e34bdaabe0350a330a1b1149aabd498d0699ff5fb2 AS go-builder
# golang:1.26.6-alpine — pin manifest list digest
FROM golang:1.26.6-alpine@sha256:3889b425f035be855a72fb4755265311293b6d414521f0a519d819df32222d83 AS go-builder

ARG TARGETOS
ARG TARGETARCH
Expand All @@ -101,7 +101,7 @@
fi

# debian:trixie-slim — pin manifest list digest
FROM debian:trixie-slim@sha256:020c0d20b9880058cbe785a9db107156c3c75c2ac944a6aa7ab59f2add76a7bd AS tz
FROM debian:trixie-slim@sha256:3a39a0592364683e6bab97937b72cad5a8fa6dcbbee90edb3bb48c7f8e94f258 AS tz
RUN apt-get update && apt-get install -y --no-install-recommends tzdata \
&& rm -rf /var/lib/apt/lists/*

Expand Down
6 changes: 3 additions & 3 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,14 +2,14 @@

[![CI](https://github.com/eclipse-iofog/router/actions/workflows/ci.yml/badge.svg?branch=develop)](https://github.com/eclipse-iofog/router/actions/workflows/ci.yml)
[![Release](https://github.com/eclipse-iofog/router/actions/workflows/release.yml/badge.svg)](https://github.com/eclipse-iofog/router/actions/workflows/release.yml)
[![Go](https://img.shields.io/badge/Go-1.26.5-00ADD8?logo=go&logoColor=white)](https://go.dev/)
[![Go](https://img.shields.io/badge/Go-1.26.6-00ADD8?logo=go&logoColor=white)](https://go.dev/)

Go wrapper image for **[skupper-router](https://github.com/skupperproject/skupper-router)** used by **Eclipse ioFog** and **Datasance PoT** edge fleets. The wrapper supervises embedded **`skrouterd`** with config watch and AMQP hot reload.

| Component | Version |
|-----------|---------|
| Wrapper release | **v3.8.0** |
| Embedded skupper-router | **3.5.1** (compiled from upstream tag pin) |
| Wrapper release | **v3.8.3** |
| Embedded skupper-router | **3.5.2** (compiled from upstream tag pin) |

Edgelet workload label: **`iofog-router`**.

Expand Down
6 changes: 3 additions & 3 deletions go.mod
Original file line number Diff line number Diff line change
@@ -1,9 +1,9 @@
module github.com/eclipse-iofog/router

go 1.26.5
go 1.26.6

require (
github.com/eclipse-iofog/iofog-go-sdk/v3 v3.8.1
github.com/eclipse-iofog/iofog-go-sdk/v3 v3.8.3-rc.1
github.com/fsnotify/fsnotify v1.7.0
github.com/interconnectedcloud/go-amqp v0.12.6-0.20200506124159-f51e540008b5
gotest.tools/v3 v3.5.2
Expand All @@ -21,5 +21,5 @@ require (
github.com/gorilla/websocket v1.5.0 // indirect
github.com/pkg/errors v0.9.1 // indirect
golang.org/x/crypto v0.28.0 // indirect
golang.org/x/sys v0.45.0 // indirect
golang.org/x/sys v0.46.0 // indirect
)
8 changes: 4 additions & 4 deletions go.sum
Original file line number Diff line number Diff line change
Expand Up @@ -21,8 +21,8 @@ github.com/Azure/go-autorest/tracing v0.6.0 h1:TYi4+3m5t6K48TGI9AUdb+IzbnSxvnvUM
github.com/Azure/go-autorest/tracing v0.6.0/go.mod h1:+vhtPC754Xsa23ID7GlGsrdKBpUA79WCAKPPZVC2DeU=
github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
github.com/eclipse-iofog/iofog-go-sdk/v3 v3.8.1 h1:bjy4FvkEcKS+td/1zIVgWUjJFQVxkXiI6P/JCXrXlRA=
github.com/eclipse-iofog/iofog-go-sdk/v3 v3.8.1/go.mod h1:yuTviLS8Z4MM7glAugZV+gwzjSxKFiKPDLA74GxFba4=
github.com/eclipse-iofog/iofog-go-sdk/v3 v3.8.3-rc.1 h1:3D3eklSjFqQ/0G4/BDiQAz0X8jORrm/glcAvqIsW7gc=
github.com/eclipse-iofog/iofog-go-sdk/v3 v3.8.3-rc.1/go.mod h1:16CjC/B5xwOc76nzCsoXS3EdD/MHeusxbsUGS/Wi1UI=
github.com/fortytw2/leaktest v1.3.0 h1:u8491cBMTQ8ft8aeV+adlcytMZylmA5nnwwkRZjI8vw=
github.com/fortytw2/leaktest v1.3.0/go.mod h1:jDsjWgpAGjm2CA7WthBh/CdZYEPF31XHquHwclZch5g=
github.com/fsnotify/fsnotify v1.7.0 h1:8JEhPFa5W2WU7YfeZzPNqzMP6Lwt7L2715Ggo0nosvA=
Expand Down Expand Up @@ -74,8 +74,8 @@ golang.org/x/sys v0.0.0-20220722155257-8c9f86f7a55f/go.mod h1:oPkhp1MJrh7nUepCBc
golang.org/x/sys v0.5.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
golang.org/x/sys v0.8.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
golang.org/x/sys v0.15.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA=
golang.org/x/sys v0.45.0 h1:dO4czNzziLiiXplLQgBCEpCvXQ3dnkn0SdaZSYdQ+FY=
golang.org/x/sys v0.45.0/go.mod h1:4GL1E5IUh+htKOUEOaiffhrAeqysfVGipDYzABqnCmw=
golang.org/x/sys v0.46.0 h1:noSf2Fq6F8DBgS+LysIkx7rIExoNHJsxOAtPp4rthXw=
golang.org/x/sys v0.46.0/go.mod h1:4GL1E5IUh+htKOUEOaiffhrAeqysfVGipDYzABqnCmw=
golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo=
golang.org/x/term v0.0.0-20210927222741-03fcf44c2211/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8=
golang.org/x/term v0.5.0/go.mod h1:jMB1sMXY+tzblOD4FWmEbocvup2/aLOaQEp7JmGp78k=
Expand Down
Loading