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
6 changes: 3 additions & 3 deletions .github/workflows/codeql-verification.yml
Original file line number Diff line number Diff line change
Expand Up @@ -45,12 +45,12 @@ jobs:
shell: bash
run: |
set -euo pipefail
archive="$RUNNER_TEMP/go1.27.2.linux-amd64.tar.gz"
archive="$RUNNER_TEMP/go1.27.3.linux-amd64.tar.gz"
curl --fail --silent --show-error --location \
--output "$archive" \
'https://go.dev/dl/go1.27.2.linux-amd64.tar.gz'
'https://go.dev/dl/go1.27.3.linux-amd64.tar.gz'
printf '%s %s\n' \
'ecbadb99091a3f46e31f5f934b068b1864eafa7995211b39eaddf76996045fe5' \
'65efbc80fdc1fa2cd2631cad5b481777a68e8725f34e89f50fc6ac714e379b40' \
"$archive" | sha256sum --check
tar -C "$RUNNER_TEMP" -xzf "$archive"
"$RUNNER_TEMP/go/bin/go" version
Expand Down
7 changes: 4 additions & 3 deletions .github/workflows/security-release-gate.yml
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,7 @@ jobs:
env:
DAPPER_IMAGE: pasturestack/compose-cli-dapper:${{ github.sha }}
TRIVY_IMAGE: aquasec/trivy:0.74.0@sha256:62b1e65e8869bc4b4c6aa4fa2b21595256c7c2f6018a9d9ad61caf87187c1969
VERSION_OVERRIDE: 0.14.37
VERSION_OVERRIDE: 0.14.38
PLATFORM_COMPAT_JAR_URL: https://github.com/PastureStack/orchestration-engine/releases/download/v0.183.281/orchestration-engine-0.183.281.jar
PLATFORM_COMPAT_JAR_SHA256: da2a8a51562ed16e296f7e29e99482bb44042ff0834cca679bbe01d951ba1682

Expand Down Expand Up @@ -69,7 +69,7 @@ jobs:
}

run_ci
artifact="dist/artifacts/compose-executor-0.14.37-linux-amd64.gz"
artifact="dist/artifacts/compose-executor-0.14.38-linux-amd64.gz"
test -s "$artifact"
cp "$artifact" /tmp/compose-executor-first.gz

Expand All @@ -81,7 +81,7 @@ jobs:
mkdir -p evidence/product
gzip -cd "$artifact" > evidence/product/compose-executor
chmod +x evidence/product/compose-executor
evidence/product/compose-executor --version | grep -F '0.14.37' >/dev/null
evidence/product/compose-executor --version | grep -F '0.14.38' >/dev/null
cp "$artifact" evidence/
(
cd evidence
Expand All @@ -92,6 +92,7 @@ jobs:
"$DAPPER_IMAGE" \
version -m /work/evidence/product/compose-executor \
> evidence/product-go-version.txt
grep -F 'go1.27.3' evidence/product-go-version.txt >/dev/null

- name: Record resolved build inputs
shell: bash
Expand Down
12 changes: 9 additions & 3 deletions Dockerfile.dapper
Original file line number Diff line number Diff line change
Expand Up @@ -3,9 +3,9 @@ FROM ubuntu:26.04@sha256:2260313b31c8c011cd2eebe728008efac1b3982be73eb71348ea264
COPY ubuntu-apt.lock /licenses/ubuntu-apt.lock
ADD --checksum=sha256:6077d27c6b6f8b23590cb01ff877ed8c804a67a5442cc32b5a33da10d2bd0e90 https://archive.ubuntu.com/ubuntu/pool/main/c/ca-certificates/ca-certificates_20260601~26.04.1_all.deb /tmp/ca-certificates.deb

ARG GO_VERSION=1.27.2
ARG GO_SHA256_amd64=ecbadb99091a3f46e31f5f934b068b1864eafa7995211b39eaddf76996045fe5
ARG GO_SHA256_arm64=94f3e30b8e374bc285e7dadc11e0865726b9bc6e85b841ccceaabc0214c6b7c8
ARG GO_VERSION=1.27.3
ARG GO_SHA256_amd64=65efbc80fdc1fa2cd2631cad5b481777a68e8725f34e89f50fc6ac714e379b40
ARG GO_SHA256_arm64=a06e99309dbcbdca1a8ccd2282c3ee146e55930886e26b4f1193269587165f49
ARG DAPPER_HOST_ARCH=amd64

ENV DEBIAN_FRONTEND=noninteractive \
Expand Down Expand Up @@ -41,7 +41,13 @@ RUN set -eux; \
git="${UBUNTU_APT_GIT_VERSION}" \
gzip="${UBUNTU_APT_GZIP_VERSION}" \
libc6-dev="${UBUNTU_APT_LIBC6_DEV_VERSION}" \
libcurl3t64-gnutls="${UBUNTU_APT_CURL_VERSION}" \
libcurl4t64="${UBUNTU_APT_CURL_VERSION}" \
libssl3t64="${UBUNTU_APT_OPENSSL_VERSION}" \
linux-libc-dev="${UBUNTU_APT_LINUX_LIBC_DEV_VERSION}" \
make="${UBUNTU_APT_MAKE_VERSION}" \
openssl="${UBUNTU_APT_OPENSSL_VERSION}" \
openssl-provider-legacy="${UBUNTU_APT_OPENSSL_VERSION}" \
python3="${UBUNTU_APT_PYTHON3_VERSION}" \
python3-virtualenv="${UBUNTU_APT_PYTHON3_VIRTUALENV_VERSION}" \
rsync="${UBUNTU_APT_RSYNC_VERSION}" \
Expand Down
15 changes: 7 additions & 8 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@ PastureStack is an independent community effort to preserve, audit, and moderniz

## Project status

The candidate source uses Ubuntu 26.04, Go 1.27.2, and Python 3.14.7 for integration-source verification. Ubuntu build packages, the base image, and Go archives are fixed by snapshot, exact version, and SHA-256. Go dependencies are managed by `go.mod` and a reproducible module vendor tree. AWS access uses AWS SDK for Go v2; container structures use the maintained Moby API module; the command parser uses urfave/cli v3. The abandoned AWS SDK v1, Rancher generated-client modules, event-subscriber module, `docker/libcompose`, and other GOPATH-era dependencies have been removed. The small Rancher 1.6 protocol boundary retained by this compatibility CLI is maintained and tested locally. The Dapper builder does not embed a Docker CLI or mount a Docker socket; Docker is required only on the host to create and run the isolated builder. The maintained binaries are `pasturestack-compose` and `compose-executor`; `platform-compose.yml` is the preferred companion file. Releases are built and verified from the preserved source history; this repository does not enable automated deployment.
The candidate source uses Ubuntu 26.04, Go 1.27.3, and Python 3.14.7 for integration-source verification. Ubuntu build packages, the base image, and Go archives are fixed by snapshot, exact version, and SHA-256. Go dependencies are managed by `go.mod` and a reproducible module vendor tree. AWS access uses AWS SDK for Go v2; container structures use the maintained Moby API module; the command parser uses urfave/cli v3. The abandoned AWS SDK v1, Rancher generated-client modules, event-subscriber module, `docker/libcompose`, and other GOPATH-era dependencies have been removed. The small Rancher 1.6 protocol boundary retained by this compatibility CLI is maintained and tested locally. The Dapper builder does not embed a Docker CLI or mount a Docker socket; Docker is required only on the host to create and run the isolated builder. The maintained binaries are `pasturestack-compose` and `compose-executor`; `platform-compose.yml` is the preferred companion file. Releases are built and verified from the preserved source history; this repository does not enable automated deployment.

## Configuration

Expand All @@ -26,20 +26,19 @@ make test
make package
```

Release `v0.14.36` is the current reviewed maintenance version and is consumed
by PastureStack Server `v1.6.410`. For published installations, use its
`compose-executor-0.14.36-linux-amd64.gz` release asset. Packaging from that
published source uses `VERSION_OVERRIDE=0.14.36`.
Release `v0.14.37` is the currently published maintenance version. Its
`compose-executor-0.14.37-linux-amd64.gz` asset and earlier releases remain
immutable; the compiler-only rebuild does not replace their bytes.

Set `VERSION_OVERRIDE=0.14.37` only for the current maintenance candidate.
Candidate packaging produces `compose-executor-0.14.37-linux-amd64.gz` for a
Set `VERSION_OVERRIDE=0.14.38` only for the current maintenance candidate.
Candidate packaging produces `compose-executor-0.14.38-linux-amd64.gz` for a
matching future `PastureStack/server` GitHub Release; candidate publication
and matching Server acceptance are not yet complete. Existing published tags
and assets remain immutable. The Python integration suite must run against an
isolated compatible Server before integration; it must never target an
operator's live control plane.

Go 1.27.2 compiler archives are checksum-pinned for Linux/amd64 and Linux/arm64.
Go 1.27.3 compiler archives are checksum-pinned for Linux/amd64 and Linux/arm64.
This candidate's artifact qualification covers Linux/amd64 only, not an ARM64
binary build.

Expand Down
20 changes: 16 additions & 4 deletions scripts/check-pasturestack-source
Original file line number Diff line number Diff line change
Expand Up @@ -39,9 +39,12 @@ require_line scripts/build 'OS_ARCH_ARG[linux]="amd64"'
require_line scripts/build 'OS_ARCH_ARG[windows]="amd64"'
require_line scripts/build 'OS_ARCH_ARG[darwin]="amd64"'
require_line Dockerfile.dapper 'FROM ubuntu:26.04@sha256:2260313b31c8c011cd2eebe728008efac1b3982be73eb71348ea2648d2c0e09b'
require_line Dockerfile.dapper 'ARG GO_VERSION=1.27.2'
require_line Dockerfile.dapper 'ARG GO_SHA256_amd64=ecbadb99091a3f46e31f5f934b068b1864eafa7995211b39eaddf76996045fe5'
require_line Dockerfile.dapper 'ARG GO_SHA256_arm64=94f3e30b8e374bc285e7dadc11e0865726b9bc6e85b841ccceaabc0214c6b7c8'
require_line Dockerfile.dapper 'ARG GO_VERSION=1.27.3'
require_line Dockerfile.dapper 'ARG GO_SHA256_amd64=65efbc80fdc1fa2cd2631cad5b481777a68e8725f34e89f50fc6ac714e379b40'
require_line Dockerfile.dapper 'ARG GO_SHA256_arm64=a06e99309dbcbdca1a8ccd2282c3ee146e55930886e26b4f1193269587165f49'
require_line .github/workflows/codeql-verification.yml ' archive="$RUNNER_TEMP/go1.27.3.linux-amd64.tar.gz"'
require_line .github/workflows/codeql-verification.yml " '65efbc80fdc1fa2cd2631cad5b481777a68e8725f34e89f50fc6ac714e379b40' \\"
require_line .github/workflows/security-release-gate.yml " grep -F 'go1.27.3' evidence/product-go-version.txt >/dev/null"
require_line Dockerfile.dapper ' GO111MODULE=on \'
require_line Dockerfile.dapper ' GOFLAGS=-mod=vendor \'
require_line Dockerfile.dapper " printf 'Types: deb\\nURIs: https://archive.ubuntu.com/ubuntu\\nSuites: resolute resolute-updates resolute-backports\\nComponents: main universe restricted multiverse\\nSigned-By: /usr/share/keyrings/ubuntu-archive-keyring.gpg\\nSnapshot: no\\n\\nTypes: deb\\nURIs: https://security.ubuntu.com/ubuntu\\nSuites: resolute-security\\nComponents: main universe restricted multiverse\\nSigned-By: /usr/share/keyrings/ubuntu-archive-keyring.gpg\\nSnapshot: no\\n' \\"
Expand All @@ -57,6 +60,15 @@ require_line vendor/modules.txt '# github.com/moby/moby/api v1.55.0'
require_line security/openvex.json ' "name": "GO-2026-5932"'
require_line security/openvex.json ' "justification": "vulnerable_code_not_present",'
require_line ubuntu-apt.lock "UBUNTU_APT_GCC_VERSION='4:15.2.0-5ubuntu1'"
require_line ubuntu-apt.lock "UBUNTU_APT_CURL_VERSION='8.18.0-1ubuntu2.8'"
require_line ubuntu-apt.lock "UBUNTU_APT_OPENSSL_VERSION='3.5.5-1ubuntu3.7'"
require_line ubuntu-apt.lock "UBUNTU_APT_LINUX_LIBC_DEV_VERSION='7.0.0-38.38'"
require_line Dockerfile.dapper ' libcurl3t64-gnutls="${UBUNTU_APT_CURL_VERSION}" \'
require_line Dockerfile.dapper ' libcurl4t64="${UBUNTU_APT_CURL_VERSION}" \'
require_line Dockerfile.dapper ' libssl3t64="${UBUNTU_APT_OPENSSL_VERSION}" \'
require_line Dockerfile.dapper ' linux-libc-dev="${UBUNTU_APT_LINUX_LIBC_DEV_VERSION}" \'
require_line Dockerfile.dapper ' openssl="${UBUNTU_APT_OPENSSL_VERSION}" \'
require_line Dockerfile.dapper ' openssl-provider-legacy="${UBUNTU_APT_OPENSSL_VERSION}" \'
require_line .python-version '3.14.7'
require_line tests/integration/requirements.txt 'pytest==9.1.1'
require_line tests/integration/requirements.txt 'setuptools==84.0.0'
Expand Down Expand Up @@ -110,4 +122,4 @@ fi
require_line README.md 'PastureStack is an independent community effort to preserve, audit, and modernize the Rancher 1.6 ecosystem. It is not affiliated with or endorsed by Rancher Labs or SUSE.'
require_line ORIGIN.md '- Migration model: unchanged upstream history followed by one PastureStack maintenance commit'

printf 'PASTURESTACK_COMPOSE_SOURCE_GATE_OK modules=vendor aws_sdk=v2 moby_api=1.55.0 archived_go_dependencies=absent system_images=ghcr local_resource_boundary=root_scoped unused_docker_cli=absent ubuntu=26.04 apt_direct_versions=locked language_floor=1.26.0 toolchain=1.27.2 module_toolchain=1.27.0 python=3.14.7\n'
printf 'PASTURESTACK_COMPOSE_SOURCE_GATE_OK modules=vendor aws_sdk=v2 moby_api=1.55.0 archived_go_dependencies=absent system_images=ghcr local_resource_boundary=root_scoped unused_docker_cli=absent ubuntu=26.04 apt_direct_versions=locked language_floor=1.26.0 toolchain=1.27.3 module_toolchain=1.27.0 python=3.14.7\n'
8 changes: 5 additions & 3 deletions ubuntu-apt.lock
Original file line number Diff line number Diff line change
Expand Up @@ -2,14 +2,16 @@
# Refresh every exact version together after validating the supported pockets.

UBUNTU_APT_BASH_VERSION='5.3-2ubuntu1'
UBUNTU_APT_CA_CERTIFICATES_VERSION='20260601~26.04.1'
UBUNTU_APT_CURL_VERSION='8.18.0-1ubuntu2.4'
UBUNTU_APT_CA_CERTIFICATES_VERSION='20260816ubuntu0.26.04.1'
UBUNTU_APT_CURL_VERSION='8.18.0-1ubuntu2.8'
UBUNTU_APT_DEFAULT_JRE_VERSION='2:1.25-77'
UBUNTU_APT_GCC_VERSION='4:15.2.0-5ubuntu1'
UBUNTU_APT_GIT_VERSION='1:2.53.0-1ubuntu1'
UBUNTU_APT_GZIP_VERSION='1.14-1~exp2ubuntu1.1'
UBUNTU_APT_LIBC6_DEV_VERSION='2.43-2ubuntu2.3'
UBUNTU_APT_LIBC6_DEV_VERSION='2.43-2ubuntu2.4'
UBUNTU_APT_LINUX_LIBC_DEV_VERSION='7.0.0-38.38'
UBUNTU_APT_MAKE_VERSION='4.4.1-3'
UBUNTU_APT_OPENSSL_VERSION='3.5.5-1ubuntu3.7'
UBUNTU_APT_PYTHON3_VERSION='3.14.3-0ubuntu2'
UBUNTU_APT_PYTHON3_VIRTUALENV_VERSION='20.36.1+ds-1'
UBUNTU_APT_RSYNC_VERSION='3.4.1+ds1-7ubuntu0.3'
Expand Down
Loading