Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
58 commits
Select commit Hold shift + click to select a range
401e42f
fix: honor container capabilities on docker API >1.40 (upstream #538)
thomasdesr Jun 29, 2026
8459458
fix: make "platform" optional in bazel rule (upstream #543)
thomasdesr Jun 29, 2026
042a189
fix: remove spurious format specifier (upstream #485)
thomasdesr Jun 29, 2026
98b23f4
chore(deps): bump cobra to v1.10.2 (upstream #536)
thomasdesr Jun 29, 2026
9470930
chore(deps): bump logrus to v1.9.4 (upstream #540)
thomasdesr Jun 29, 2026
7ae603b
chore(deps): bump opencontainers/image-spec to v1.1.1 (upstream #494)
thomasdesr Jun 29, 2026
ce198c2
chore(deps): bump google/go-cmp to v0.7.0 (upstream #488)
thomasdesr Jun 29, 2026
e97548d
ci: bump actions/setup-go to v6 (upstream #513)
thomasdesr Jun 29, 2026
2b867c5
ci: bump goreleaser/goreleaser-action to v7 (upstream #551)
thomasdesr Jun 29, 2026
238bc2f
ci: bump actions/checkout to v7 (upstream #561)
thomasdesr Jun 29, 2026
8ed1b81
ci: bump imjasonh/setup-crane to v0.6 (upstream #556)
thomasdesr Jun 29, 2026
422c769
Merge pull request #1 from anyscale/thomas/merge-clean-upstream-prs
thomasdesr Jun 29, 2026
53e59ef
feat(tar): constrain tar driver paths to image root (upstream #555)
thomasdesr Jun 29, 2026
b619172
fix: surface dropped error in file_existence check
thomasdesr Jun 29, 2026
e4614ff
Merge pull request #2 from anyscale/thomas/fix-file-existence-vet
thomasdesr Jun 29, 2026
c024eed
Merge pull request #3 from anyscale/thomas/adopt-555-tar-path-confine…
thomasdesr Jun 29, 2026
5c39028
feat(tar): add OCI layout tar driver support (upstream #554)
thomasdesr Jun 29, 2026
b1bc437
feat(docker): add --cap-drop support (upstream #390)
ddl-ebrown Jun 29, 2026
e9291d6
feat(docker): add sysctls run option (upstream #480)
ciarand Jun 29, 2026
50ebe70
feat(docker): add network mode selection (upstream #548)
jmwachtel Jun 29, 2026
edeb98c
fix(bazel): symlink structure_test binary to .exe on Windows (upstrea…
thomasdesr Jun 29, 2026
ecdc1a5
feat: support multi-arch image indexes (upstream #503)
thomasdesr Jun 29, 2026
bbf50ea
feat: decouple report-file format from stdout via --test-report-forma…
thomasdesr Jun 29, 2026
b5e43d0
chore: bump go directive to 1.24
thomasdesr Jun 29, 2026
91803d8
chore(deps): bump containerd to v1.7.33 and x/crypto to v0.47.0 for C…
thomasdesr Jun 29, 2026
52b5ed3
build: add rules_go + gazelle and generate BUILD files (upstream #511)
thomasdesr Jun 29, 2026
bc4f307
ci: exercise Go Bazel targets in PR unit tests (upstream #511)
thomasdesr Jun 29, 2026
c7a5500
fix(bazel): drop sysctls from rule smoke-test fixture
thomasdesr Jun 29, 2026
aae727b
fix(bazel): run smoke-test against from-source binary
thomasdesr Jun 29, 2026
a63b735
fix(bazel): build from-source toolchain in WORKSPACE smoke-test
thomasdesr Jun 30, 2026
ef3c902
fix(docker): make CapDrop effective by not setting legacy Capabilities
thomasdesr Jun 30, 2026
ab6c6ad
test(docker): drop privileged from cap-drop fixture so the drop is te…
thomasdesr Jun 30, 2026
1c2cf84
test(docker): match granted chown only in cap-drop assertion
thomasdesr Jun 30, 2026
8ab3a1f
ci: scope the bazel build/test step to the Go packages
thomasdesr Jun 30, 2026
db47fcc
docs(bazel): regenerate stardoc defs.md after #543/#539; restore CI d…
thomasdesr Jun 30, 2026
0edc7c2
ci: revive macOS leg on a supported runner with working Docker
thomasdesr Jun 30, 2026
ec53c9d
chore(deps): bump docker stack (go-containerregistry/docker/cli) for v28
thomasdesr Jun 30, 2026
8570e57
chore(deps): bump fsouza/go-dockerclient to v1.12.3
thomasdesr Jun 30, 2026
70e9d1a
chore(deps): regenerate WORKSPACE go_deps for docker v28 stack
thomasdesr Jun 30, 2026
60f60c5
ci(macos): set DOCKER_HOST so the binary reaches colima's daemon
thomasdesr Jun 30, 2026
70f8ad0
test: run cross-platform (riscv64/s390x) cases on Linux only
thomasdesr Jun 30, 2026
350f997
fix(vet): use keyed fields in EnvVar literal
thomasdesr Jun 30, 2026
96d08cc
fix(tar): keep non-traversable dirs enterable during extraction
thomasdesr Jun 30, 2026
14b4afd
fix: Clean up loaded OCI images after container_structure_test runs
thomasdesr Jul 1, 2026
02507d6
fix: Handle environment variables without '=' in convertSliceToMap
thomasdesr Jul 1, 2026
0061c54
fix: support protocol-qualified port matching in metadata tests
thomasdesr Jul 1, 2026
6296523
test: add UnexposedPorts test coverage for protocol-aware port matching
thomasdesr Jul 1, 2026
08a43fe
fix(tar): tolerate setuid/setgid chmod failure during extraction (#276)
thomasdesr Jul 1, 2026
3913e01
chore: Bump go-dockerclient to v1.13.2 for Docker Engine v29 support
thomasdesr Jul 1, 2026
79df921
fix(bazel): pin go SDK to 1.25.5 for go-dockerclient v1.13.2
thomasdesr Jul 1, 2026
eb3ea95
ci(bazel): bump reusable workflow v7 -> v7.7.0 (stable Bazel 8.0.0)
thomasdesr Jul 1, 2026
e8b99a8
fix(bazel): register rules_shell for sh toolchain in WORKSPACE mode
thomasdesr Jul 1, 2026
2ef6aee
Revert "fix(bazel): register rules_shell for sh toolchain in WORKSPAC…
thomasdesr Jul 1, 2026
f499df9
fix(bazel): drop unused sh toolchain from container_structure_test rule
thomasdesr Jul 1, 2026
cbc5f46
fix(bazel): bump WORKSPACE rules_go 0.55.1 -> 0.60.0 for go 1.25.5
thomasdesr Jul 2, 2026
2d90ac9
chore(deps): bump otel 1.41.0 and docker/cli 29.2.0 (dependabot #17, #9)
thomasdesr Jul 2, 2026
d19e74c
deps: bump github.com/google/go-containerregistry v0.20.7 -> v0.21.7
thomasdesr Jul 6, 2026
01e51fd
ci: stop duplicate PR builds; pin actions to SHAs
thomasdesr Jul 6, 2026
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: 6 additions & 0 deletions .bazelrc
Original file line number Diff line number Diff line change
@@ -1 +1,7 @@
common --enable_bzlmod

# The go_deps extension is isolated so the docker proto-disable gazelle_override
# (forbidden in non-root modules) keeps working when bazel/test consumes this
# module as a dependency to build the from-source container-structure-test
# binary. Isolated usages may carry overrides regardless of root status.
common --experimental_isolated_extension_usages
2 changes: 1 addition & 1 deletion .github/workflows/bazel.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@ on:

jobs:
test:
uses: bazel-contrib/.github/.github/workflows/bazel.yaml@v7
uses: bazel-contrib/.github/.github/workflows/bazel.yaml@v7.7.0
with:
folders: '["bazel/test"]'
exclude_windows: true
65 changes: 47 additions & 18 deletions .github/workflows/integration-tests.yml
Original file line number Diff line number Diff line change
@@ -1,47 +1,76 @@
name: PR unit tests

# Triggers the workflow on push or pull request events
on: [push, pull_request]
# PRs are covered by pull_request; push is limited to main so same-repo PR
# branches don't run every build twice.
on:
push:
branches: [main]
pull_request:

permissions: read-all

concurrency:
# On master/release, we don't want any jobs cancelled
# On main, we don't want any jobs cancelled
# On PR branches, we cancel the job if new commits are pushed
# More info: https://stackoverflow.com/a/70972844/1261287
group: ${{ github.ref }}
cancel-in-progress: ${{ github.ref != 'refs/heads/master' }}
cancel-in-progress: ${{ github.ref != 'refs/heads/main' }}

jobs:
build:
name: PR unit tests
strategy:
matrix:
os: [ubuntu-latest, macos-12]
# macos-15-intel is the only GitHub-hosted macOS runner that can run a
# Docker daemon: colima needs nested virtualization, which is absent on
# Apple Silicon runners (HV_UNSUPPORTED) and gone from retired macos-12/13.
os: [ubuntu-latest, macos-15-intel]
fail-fast: false
runs-on: ${{ matrix.os }}

steps:
- name: start docker
if: ${{ matrix.os == 'macos-12' }}
run: |
brew install docker
colima start
echo "DOCKER_HOST=unix:///Users/runner/.colima/default/docker.sock" >> $GITHUB_ENV

# Installs colima + the Docker CLI and starts the daemon; sets the active
# docker context so `docker` works without DOCKER_HOST. macOS-only — the
# action's own ARM64 guard exits if it ever lands on an Apple Silicon runner.
- name: Set up Docker (macOS)
if: ${{ runner.os == 'macOS' }}
uses: douglascamata/setup-docker-macos-action@d5ccc6aae0ce23e7700154f5e63cc53e6433ac48 # v1.1.0

- name: Point go-dockerclient at colima's socket (macOS)
if: ${{ runner.os == 'macOS' }}
# The container-structure-test binary uses go-dockerclient, which honors
# DOCKER_HOST but NOT the docker CLI context that colima configures. Without
# this it falls back to /var/run/docker.sock (absent on colima) and every
# docker-driver test fails. Derive the socket from colima's docker context.
run: echo "DOCKER_HOST=$(docker context inspect colima -f '{{.Endpoints.docker.Host}}')" >> "$GITHUB_ENV"

- name: Set up Go
uses: actions/setup-go@v5
uses: actions/setup-go@924ae3a1cded613372ab5595356fb5720e22ba16 # v6.5.0
with:
go-version: ^1.22
go-version: ^1.24
id: go
- uses: imjasonh/setup-crane@v0.4

- uses: imjasonh/setup-crane@59c71e96a00b28651f10369ba3359a6d730740a0 # v0.6

- name: Check out code into the Go module directory
uses: actions/checkout@v4
uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0
with:
fetch-depth: 0
persist-credentials: false

- name: Run tests
run: |
make test

# Ensure the Go code stays buildable and testable via Bazel (rules_go + gazelle).
# Scoped to the Go packages: //bazel/test is the rule's smoke test (covered by
# the dedicated Bazel workflow as its own module).
- name: Bazel
if: ${{ matrix.os == 'ubuntu-latest' }}
run: |
bazel build //cmd/... //pkg/... //internal/... //testutil/...
bazel test //pkg/... //internal/...
# Doc-freshness: //bazel/docs:update_test fails if bazel/docs/defs.md
# drifts from the rule. Run `bazel run //bazel/docs:update` to regenerate.
bazel build //bazel/docs/...
bazel test //bazel/docs:update_test
6 changes: 3 additions & 3 deletions .github/workflows/release.yml
Original file line number Diff line number Diff line change
Expand Up @@ -13,15 +13,15 @@ jobs:
runs-on: ubuntu-latest

steps:
- uses: actions/checkout@v4
- uses: actions/checkout@v7

- name: Set up Go
uses: actions/setup-go@v5
uses: actions/setup-go@v6
with:
go-version-file: 'go.mod'

- name: Run GoReleaser
uses: goreleaser/goreleaser-action@v6
uses: goreleaser/goreleaser-action@v7
with:
distribution: goreleaser
version: latest
Expand Down
7 changes: 6 additions & 1 deletion BUILD.bazel
Original file line number Diff line number Diff line change
@@ -1,11 +1,16 @@
load("@bazel_skylib//:bzl_library.bzl", "bzl_library")
load("@gazelle//:def.bzl", "gazelle")

# gazelle:prefix github.com/GoogleContainerTools/container-structure-test
# gazelle:exclude bazel
gazelle(name = "gazelle")

# For stardoc to reference the file directly
exports_files(["defs.bzl"])

bzl_library(
name = "defs",
srcs = ["defs.bzl"],
deps = ["//bazel:container_structure_test"],
visibility = ["//visibility:public"],
deps = ["//bazel:container_structure_test"],
)
28 changes: 28 additions & 0 deletions MODULE.bazel
Original file line number Diff line number Diff line change
Expand Up @@ -29,3 +29,31 @@ register_toolchains("@structure_test_toolchains//:all")

# 0.5.4 is the first version with bzlmod support
bazel_dep(name = "stardoc", version = "0.7.2", dev_dependency = True, repo_name = "io_bazel_stardoc")

bazel_dep(name = "rules_go", version = "0.61.1", repo_name = "io_bazel_rules_go")
bazel_dep(name = "gazelle", version = "0.51.3")

# go-dockerclient v1.13.2 declares `go 1.25.5`; pin the SDK so bazel's go_deps
# fetch/build satisfies that directive (rules_go 0.61.1 otherwise defaults to
# go 1.25.0, which fails with "requires go >= 1.25.5").
go_sdk = use_extension("@io_bazel_rules_go//go:extensions.bzl", "go_sdk")
go_sdk.download(version = "1.25.5")

go_deps = use_extension("@gazelle//:extensions.bzl", "go_deps", isolate = True)
go_deps.from_file(go_mod = "//:go.mod")

# All *direct* Go dependencies of the module have to be listed explicitly.
use_repo(
go_deps,
"com_github_fsouza_go_dockerclient",
"com_github_google_go_cmp",
"com_github_google_go_containerregistry",
"com_github_joho_godotenv",
"com_github_moby_sys_sequential",
"com_github_opencontainers_image_spec",
"com_github_pkg_errors",
"com_github_sirupsen_logrus",
"com_github_spf13_cobra",
"in_gopkg_yaml_v2",
"org_golang_x_crypto",
)
Loading
Loading