Script 'mail_helper' called by obssrc
Hello community,

here is the log from the commit of package golang-stable-image for 
openSUSE:Factory checked in at 2026-10-27 16:47:57
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/golang-stable-image (Old)
 and      /work/SRC/openSUSE:Factory/.golang-stable-image.new.2252680 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Package is "golang-stable-image"

Tue Oct 27 16:47:57 2026 rev:64 rq:1392792 version:unknown

Changes:
--------
--- /work/SRC/openSUSE:Factory/golang-stable-image/golang-stable-image.changes  
2026-09-24 23:04:30.553943902 +0200
+++ 
/work/SRC/openSUSE:Factory/.golang-stable-image.new.2252680/golang-stable-image.changes
     2026-10-27 16:48:16.879774185 +0100
@@ -1,0 +2,5 @@
+Mon Oct 26 16:00:21 UTC 2026 - SUSE Update Bot <[email protected]>
+
+- improve migration instructions in the README.md
+
+-------------------------------------------------------------------

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Other differences:
------------------
++++++ README.md ++++++
--- /var/tmp/diff_new_pack.LL3moq/_old  2026-10-27 16:48:17.575803374 +0100
+++ /var/tmp/diff_new_pack.LL3moq/_new  2026-10-27 16:48:17.580803583 +0100
@@ -4,7 +4,7 @@
 
 ## Description
 
-[Go](https://go.dev/) (a.k.a., Golang) is a statically-typed programming
+[Go](https://go.dev/) (a.k.a. Golang) is a statically-typed programming
 language, with syntax loosely derived from C. Go offers additional features
 such as garbage collection, type safety, certain dynamic-typing capabilities,
 additional built-in types (for example, variable-length arrays and key-value
@@ -14,79 +14,128 @@
 
 Go binaries can natively operate in a mode that facilitates
 [FIPS 140-3 compliance](https://go.dev/doc/security/fips140).
+Go includes a cryptographic module certified under NIST's
+Cryptographic Module Validation Program (CMVP).
 
 ### The GOFIPS140 environment variable
 
-The `GOFIPS140` environment variable can be used with `go build`, `go install`,
-and `go test` to enable FIPS 140-3 mode.
+The `GOFIPS140` environment variable controls FIPS 140-3 mode during 
compilation
+with `go build`, `go install`, and `go test`.
 
-The recommended values are `off` (default value) or `certified` to select the
-corresponding NIST CMVP certified release.
+The available values are:
 
-### The fips140 GODEBUG option
+- **`off`** (default): Uses the standard library's cryptographic 
implementations in
+  standard mode. The compiled binary does not enable FIPS mode by default at 
runtime.
+- **`certified`**: Links against the latest frozen snapshot of the Go 
Cryptographic
+  Module that has completed an official NIST CMVP validation certificate. 
Binaries
+  compiled with `GOFIPS140=certified` automatically execute in FIPS 140-3 mode 
by
+  default (`fips140=on`) at runtime.
+- **`latest`**: Uses the current toolchain's cryptographic module and enables 
FIPS
+  140-3 mode by default at runtime.
+- **`<version>`** (for example, `v1.0.0`): Links against a specific frozen 
snapshot
+  version of the cryptographic module.
+
+To compile an application with the certified module enabled:
+
+```ShellSession
+$ GOFIPS140=certified go build -o myapp .
+```
+
+In a `Dockerfile`:
 
-The `fips140` option in `GODEBUG` controls FIPS 140-3 mode during runtime 
execution.
+```Dockerfile
+RUN GOFIPS140=certified go build -o /hello .
+```
+
+### The fips140 GODEBUG option
 
-It defaults to `off` unless `GOFIPS140` was set at build time.
+The `fips140` option in the `GODEBUG` environment variable controls FIPS 140-3 
mode
+during runtime execution. It defaults to `off` unless `GOFIPS140=certified` or
+`GOFIPS140=latest` was specified at build time.
 
 The possible values for `fips140` are:
 
-- **off**: The Go Cryptographic Module does not operate in FIPS 140-3 mode.
-- **on**: The Go Cryptographic Module operates in FIPS 140-3 mode.
-- **only**: The Go Cryptographic Module operates in FIPS 140-3 mode, but 
cryptographic algorithms not approved by FIPS 140-3 return an error or panic.
+- **`off`**: The Go Cryptographic Module does not operate in FIPS 140-3 mode.
+- **`on`**: The Go Cryptographic Module operates in FIPS 140-3 mode. The 
runtime
+  executes Power-On Self-Tests (POST) during initialization and key generation,
+  enforces the NIST SP 800-90A DRBG for random number generation, and restricts
+  `crypto/tls` to approved cipher suites, curves, and protocol versions (TLS 
1.2 and TLS 1.3).
+- **`only`**: Strict FIPS 140-3 mode. Cryptographic algorithms, key sizes, or
+  configurations not approved by FIPS 140-3 return an error or panic. This 
setting
+  is recommended in CI/CD pipelines to detect unapproved algorithms.
+
+To run an application container with FIPS 140-3 mode explicitly enabled:
+
+```ShellSession
+$ podman run -e GODEBUG="fips140=on" my-golang-app
+```
+
+### Verifying the binary
+
+To verify that a binary was compiled with the certified Go cryptographic 
module:
+
+```ShellSession
+$ go version -m myapp
+```
+
+The output will include the embedded module snapshot under 
`crypto/internal/fips140`.
 
 ### Migration from Go-openssl
 
-Starting with Go 1.27, the Go-openssl variant—which routes cryptographic
-operations through OpenSSL—will no longer be supported in openSUSE BCI.
+Starting with Go 1.27, the legacy Go-openssl variant—which routed cryptographic
+operations through OpenSSL via CGO—will no longer be supported or provided in 
openSUSE BCI.
+All workloads requiring FIPS 140-3 compliance should migrate to this standard 
Go
+container image.
+
 
-To maintain compatibility with prior Go-openssl behavior, during build time
-set `GOFIPS140` to `certified` or set `fips140=on` during runtime in `GODEBUG`.
+#### How to migrate
+
+1. Replace the legacy base image 
`registry.suse.com/bci/golang:<version>-openssl`
+   with `registry.opensuse.org/opensuse/bci/golang:1.27`.
+2. Build your binary with `GOFIPS140=certified` (for example,
+   `RUN CGO_ENABLED=0 GOFIPS140=certified go build -o /hello .`).
+3. Deploy the binary into a minimal container image such as `bci-nano`.
 
 
 ## Usage
-We recommend using the Go image as a build environment. Thus,
-the compiler does not need to be shipped as part of the images that are
-deployed. Instead, we recommend using the Go image as the
-builder image only.
-
-There are two options to work with Go images. First, you can encapsulate your
-application in a `scratch` container image, essentially an empty file system
-image. This approach only works if your Go application does not depend on libc
-or any other library or files, as they will not be available.
+We recommend using the Go image solely as a build environment so that
+the compiler does not need to be shipped as part of deployed images.
 
-The second option uses a slim base container image with just the minimal
+There are two options for working with Go images. First, you can encapsulate 
your
+application in a `bci-nano` container image, a minimal runtime environment 
containing
+only basic locale data and CA certificates. This approach only works if your 
Go application does not
+depend on libc or any other libraries or binaries, as they will not be 
available.
+
+The second option uses a slim base container image (such as `bci-micro`) with 
the minimal
 packages required to run the Go application.
 
 To compile and deploy an application, copy the sources, fetch dependencies
-(assuming go.mod is used for dependency management), and build the binary using
+(assuming `go.mod` is used for dependency management), and build the binary 
using
 the following Dockerfile options.
 
 
-### Building from `scratch`
+### Building from `bci-nano`
 
 ```Dockerfile
 # Build the application using the Go 1.27 development container image
-FROM registry.opensuse.org/opensuse/bci/golang:1.27 as build
+FROM registry.opensuse.org/opensuse/bci/golang:1.27 AS build
 
 WORKDIR /app
 
-# pre-copy/cache go.mod for pre-downloading dependencies and only
+# Pre-copy/cache go.mod for pre-downloading dependencies and only
 # redownloading them in subsequent builds if they change
 COPY go.mod go.sum ./
 RUN go mod download && go mod verify
 
 COPY . ./
 
-# Make sure to build the application with CGO disabled.
-# This will force Go to use some Go implementations of code
-# rather than those supplied by the host operating system.
-# You need this for scratch images as those supporting libraries
-# are not available.
+# Disable CGO to create a statically linked binary using Go's built-in
+# implementations rather than host operating system C libraries. This is
+# required for bci-nano images as C runtime libraries (libc) are not available.
 RUN CGO_ENABLED=0 go build -o /hello
 
-# Bundle the application into a scratch image
-FROM scratch
+# Bundle the application into a bci-nano image
+FROM registry.suse.com/bci/bci-nano:latest
 
 COPY --from=build /hello /usr/local/bin/hello
 
@@ -100,15 +149,13 @@
 $ podman run -it --rm my-golang-app
 ```
 
-There are situations when you don't want to run an application inside a 
container.
-
-To compile the application, without running it inside a container instance, 
use the following command:
+To compile an application on the host using the containerized Go toolchain 
(without creating an application container image), run:
 
 ```ShellSession
 $ podman run --rm -v "$PWD":/app:Z -w /app 
registry.opensuse.org/opensuse/bci/golang:1.27 go build -v
 ```
 
-To run the application tests inside a container, use the following command:
+To run application tests inside a container, run:
 
 ```ShellSession
 $ podman run --rm -v "$PWD":/app:Z -w /app 
registry.opensuse.org/opensuse/bci/golang:1.27 go test -v
@@ -117,16 +164,16 @@
 
 ### Building from openSUSE BCI
 
-The [openSUSE BCI General Purpose Base 
Containers](https://opensource.suse.com/bci-docs/documentation/general-purpose-bci/)
-images offer four different options for deployment, depending on your exact 
requirements.
+The [openSUSE BCI General Purpose Base Container 
Images](https://opensource.suse.com/bci-docs/documentation/general-purpose-bci/)
+documentation describes four different options for deployment, depending on 
your exact requirements.
 
 ```Dockerfile
-# Build the application using the Go 1.27 development Container Image
-FROM registry.opensuse.org/opensuse/bci/golang:1.27 as build
+# Build the application using the Go 1.27 development container image
+FROM registry.opensuse.org/opensuse/bci/golang:1.27 AS build
 
 WORKDIR /app
 
-# pre-copy/cache go.mod for pre-downloading dependencies and only
+# Pre-copy/cache go.mod for pre-downloading dependencies and only
 # redownloading them in subsequent builds if they change
 COPY go.mod go.sum ./
 RUN go mod download && go mod verify
@@ -135,7 +182,7 @@
 
 RUN go build -o /hello
 
-# Bundle the application into a scratch image
+# Bundle the application into a bci-micro image
 FROM registry.opensuse.org/opensuse/bci/bci-micro:latest
 
 COPY --from=build /hello /usr/local/bin/hello

Reply via email to