Skip to content

Commit

Permalink
seccomp: add CI check for up-to-date seccomp.json
Browse files Browse the repository at this point in the history
Signed-off-by: Aleksa Sarai <[email protected]>
  • Loading branch information
cyphar committed Jan 27, 2021
1 parent 2b92ef3 commit 7042d61
Show file tree
Hide file tree
Showing 2 changed files with 40 additions and 0 deletions.
1 change: 1 addition & 0 deletions Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -69,6 +69,7 @@ docs:
.PHONY: validate
validate: build/golangci-lint
./build/golangci-lint run
./tools/validate_seccomp.sh ./pkg/seccomp

vendor-in-container:
podman run --privileged --rm --env HOME=/root -v `pwd`:/src -w /src golang make vendor
Expand Down
39 changes: 39 additions & 0 deletions tools/validate_seccomp.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,39 @@
#!/bin/bash
#
# validate_seccomp.sh <gopath/to/pkg/seccomp>
#
# Validates that the seccomp.json file has been generated and matches the
# profile defined in the pkg/seccomp package.

set -Eeuo pipefail

PACKAGE_PATH="${1:-./pkg/seccomp}"
TARGET_FILE="$PACKAGE_PATH/seccomp.json"

# Stash a copy.
tmp_copy="$(mktemp --tmpdir podman-seccomp.json.XXXXXX)"
cp "$TARGET_FILE" "$tmp_copy"

# Generate it again and figure out if there was a difference.
go generate -tags seccomp "$PACKAGE_PATH" >/dev/null
diffs="$(diff -u "$tmp_copy" "$TARGET_FILE" ||:)"

if [ "$diffs" ]; then
# Can we make a prettier diff?
have_diffstat=1
which diffstat || have_diffstat=
if [ "$have_diffstat" ]; then
diffs="$(echo "$diffs" | diffstat)"
fi

# Output an error message and fail the CI.
cat >&2 <<-EOF
The result of 'go generate -tags seccomp $PACKAGE_PATH' differs.
$diffs
Please re-run 'go generate -tags seccomp $PACKAGE_PATH' and then amend your
commits to include the updated seccomp.json file.
EOF
exit 1
fi

0 comments on commit 7042d61

Please sign in to comment.