Skip to content

Commit dbecbf3

Browse files
Merge pull request #216 from Datasance/develop
release 3.8.1
2 parents deb4c59 + ff09be6 commit dbecbf3

60 files changed

Lines changed: 1408 additions & 244 deletions

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

.github/workflows/ci.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@ on:
1919
permissions: read-all
2020

2121
env:
22-
GO_VERSION: '1.26.4'
22+
GO_VERSION: '1.26.5'
2323

2424
jobs:
2525
grep-gates:

.github/workflows/codeql.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@ on:
99
permissions: read-all
1010

1111
env:
12-
GO_VERSION: '1.26.4'
12+
GO_VERSION: '1.26.5'
1313

1414
jobs:
1515
analyze:

.github/workflows/govulncheck.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@ on:
1111
permissions: read-all
1212

1313
env:
14-
GO_VERSION: '1.26.4'
14+
GO_VERSION: '1.26.5'
1515

1616
jobs:
1717
govulncheck:

.github/workflows/release.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ on:
66
workflow_dispatch: {}
77

88
env:
9-
GO_VERSION: '1.26.4'
9+
GO_VERSION: '1.26.5'
1010

1111
jobs:
1212
release:

.golangci.yaml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
# golangci-lint v2 — Go 1.26.4, module github.com/eclipse-iofog/iofogctl
1+
# golangci-lint v2 — Go 1.26.5, module github.com/eclipse-iofog/iofogctl
22
#
33
# Layers:
44
# 1. edgelet/.golangci.yaml parity (govet, revive, staticcheck, errcheck, misspell, errorlint)

CHANGELOG.md

Lines changed: 45 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,51 @@ All notable changes to potctl / iofogctl are documented in this file.
55
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
66
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
77

8-
## [3.8.0-rc.1] — June 2026
8+
## [v3.8.1] — July 2026
9+
10+
Stable v3.8 patch release. Bumps SDK, operator, and edgelet pins; adds fog node OTA semver targeting and hardens edgelet redeploy/containerd orchestration.
11+
12+
### Added
13+
14+
- `upgrade agent` / `rollback agent --semver` for targeted fog node version OTA via SDK `UpgradeNode` / `RollbackNode`
15+
- ConfigMap `useVault` in deploy, describe, and `get configmaps`
16+
- SSH keep-alive and streamed output for long-running remote edgelet installs
17+
- `version --ecn`: NATS and debugger component image lines
18+
19+
### Changed
20+
21+
- Bump Go to **1.26.5**; **iofog-go-sdk** and **iofog-operator** to **v3.8.1**
22+
- ConfigMap `immutable` is optional in YAML; updates preserve existing `immutable` / `useVault` when omitted
23+
- Edgelet install redeploy: detect active engine and installed version; defer and deduplicate `edgelet-containerd` restarts (WASM + OTA)
24+
- Edgelet readiness scripts: case-insensitive daemon status parsing and embedded-engine `runtime.engineReady` gate
25+
- Offline/airgap image transfer: shared container-engine handling via airgap package
26+
27+
### Fixed
28+
29+
- Redundant `edgelet-containerd` restart on redeploy/OTA when WASM install already restarted the engine
30+
- ConfigMap PATCH semantics when `immutable` or `useVault` are not set in deploy YAML
31+
32+
### Security
33+
34+
- Documented govulncheck exception **GO-2026-5932** (`golang.org/x/crypto/openpgp` via `go.podman.io/image/v5` image signature handling) until upstream migrates off the deprecated package; see `SECURITY.md`.
35+
36+
### Known limitations
37+
38+
- **GO-2026-5932**: CLI builds use `containers_image_openpgp` for cgo-free release binaries; `golang.org/x/crypto/openpgp` remains on the call path for airgap/offline image copy with no upstream fix available.
39+
40+
### Component pairing
41+
42+
| Component | Pin |
43+
|-----------|-----|
44+
| CLI | `v3.8.1` |
45+
| operator | `3.8.1` |
46+
| controller | `3.8.1` |
47+
| router | `3.8.1` |
48+
| nats | `2.14.3-1` |
49+
| edgelet binary | `v1.0.1` |
50+
| edgelet image | `ghcr.io/<registry>/edgelet:1.0.1` |
51+
52+
## [v3.8.0] — June 2026
953

1054

1155
First greenfield v3.8 release candidate. Dual-flavor build (`potctl` / `iofogctl`) from a single codebase; no in-place upgrade from potctl- or v3.7.

README.md

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
[![CLI CI](https://github.com/eclipse-iofog/iofogctl/actions/workflows/ci.yml/badge.svg)](https://github.com/eclipse-iofog/iofogctl/actions/workflows/ci.yml)
22
[![Release](https://img.shields.io/github/v/release/eclipse-iofog/iofogctl?include_prereleases)](https://github.com/eclipse-iofog/iofogctl/releases)
3-
[![Go](https://img.shields.io/badge/Go-1.26.4-blue.svg)](https://go.dev/)
3+
[![Go](https://img.shields.io/badge/Go-1.26.5-blue.svg)](https://go.dev/)
44
[![License](https://img.shields.io/badge/License-EPL--2.0-blue.svg)](LICENSE)
55
[![govulncheck](https://github.com/eclipse-iofog/iofogctl/actions/workflows/govulncheck.yml/badge.svg)](https://github.com/eclipse-iofog/iofogctl/actions/workflows/govulncheck.yml)
66
[![CodeQL](https://github.com/eclipse-iofog/iofogctl/actions/workflows/codeql.yml/badge.svg)](https://github.com/eclipse-iofog/iofogctl/actions/workflows/codeql.yml)
@@ -18,7 +18,7 @@ Upstream: [eclipse-iofog/iofogctl](https://github.com/eclipse-iofog/iofogctl) ·
1818

1919
**iofogctl** and **potctl** are dual-flavor CLIs for installing, configuring, and operating ioFog [Edge Compute Networks](https://iofog.org/docs/2/getting-started/core-concepts.html) (ECNs). v3.8 is a greenfield release: configuration lives under `~/.iofog/v3`, and there is no in-place upgrade path from legacy potctl- or v3.7 deployments.
2020

21-
Release binaries ship for **linux** (amd64, arm64, armv6, armv7), **macOS** (amd64, arm64), and **Windows** (amd64). Built with **Go 1.26.4** (see `go.mod`).
21+
Release binaries ship for **linux** (amd64, arm64, armv6, armv7), **macOS** (amd64, arm64), and **Windows** (amd64). Built with **Go 1.26.5** (see `go.mod`).
2222

2323
## Install — iofogctl
2424

@@ -90,7 +90,7 @@ Shell autocompletion: `iofogctl autocomplete bash` (or `zsh`), then follow the p
9090

9191
## Build from source
9292

93-
Requires Go **1.26.4+** (matches the Go badge and `go.mod`). Build outside `$GOPATH` (Go modules):
93+
Requires Go **1.26.5+** (matches the Go badge and `go.mod`). Build outside `$GOPATH` (Go modules):
9494

9595
```bash
9696
make FLAVOR=iofog build # iofogctl → bin/iofogctl

SECURITY.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -43,9 +43,9 @@ Build, test, goreleaser, and govulncheck share the same Go build tags via `GOTAG
4343

4444
| GO ID | CVE | Component | Rationale | Fix timeline |
4545
|-------|-----|-----------|-----------|--------------|
46-
| *(none)* | | | | |
46+
| GO-2026-5932 | | `golang.org/x/crypto/openpgp` via `go.podman.io/image/v5` | Required by `containers_image_openpgp` build tag for cgo-free cross-platform builds (macOS, Windows, CI). Used for container image signature parsing in airgap/offline flows. Upstream `go.podman.io/image/v5` v5.40.0 explicitly retains deprecated openpgp; no patched version exists (`Fixed in: N/A`). | Remove when `go.podman.io/image` migrates to a maintained fork (e.g. `github.com/ProtonMail/go-crypto/openpgp`). |
4747

48-
No documented exceptions at launch. `make vulncheck` must pass with zero findings affecting CLI call paths.
48+
`make vulncheck` must pass with zero undocumented findings affecting CLI call paths.
4949

5050
## Exception policy
5151

assets/edgelet/scripts/configure_container_edgelet.sh

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -29,10 +29,15 @@ wait_edgelet_api_running() {
2929
_iter=$((_iter + 1))
3030
continue
3131
fi
32-
if echo "$_out" | grep -q 'edgeletDaemon: RUNNING'; then
32+
if echo "$_out" | grep -qi 'LOCAL_API_STARTING\|Local API is starting'; then
33+
sleep 1
34+
_iter=$((_iter + 1))
35+
continue
36+
fi
37+
if echo "$_out" | grep -qi 'edgeletDaemon:[[:space:]]*RUNNING\|edgeletDaemon:[[:space:]]*running'; then
3338
return 0
3439
fi
35-
if echo "$_out" | grep -q 'runtime.agentPhase: running'; then
40+
if echo "$_out" | grep -qi 'runtime.agentPhase:[[:space:]]*running'; then
3641
return 0
3742
fi
3843
sleep 1

assets/edgelet/scripts/install.sh

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -182,6 +182,10 @@ if [ "$ACTION" = "upgrade" ]; then
182182
[ "$AIRGAP" = true ] && _method="upgrade-airgap"
183183
write_install_receipt "$EDGELET_VERSION" "$OS" "$ARCH" "$CONTAINER_ENGINE" "$(compute_source_url)" "$_sha" "$_method"
184184
"$SCRIPT_DIR/bundled.sh" || true
185+
if [ "$SKIP_START" = true ]; then
186+
info "Skipping daemon start (--skip-start); use start_edgelet.sh"
187+
exit 0
188+
fi
185189
_run_post_install
186190
info "Upgrade to ${EDGELET_VERSION} complete."
187191
exit 0

0 commit comments

Comments
 (0)