From 279e2d0cb2a84d2c5347d5a81b2f430c9e0b1192 Mon Sep 17 00:00:00 2001 From: Ashley Cui Date: Thu, 9 May 2024 00:16:45 -0400 Subject: [PATCH] [CI:DOCS] Improvements to make validatepr Small usability improvements for our containerized validate target. - Responds to SIGINT - Exits if build fails, only validate if builds succeed - Warns about potential of insufficient memory - Document `make validatepr` Signed-off-by: Ashley Cui --- CONTRIBUTING.md | 8 +---- Makefile | 1 + contrib/validatepr/validatepr.sh | 50 +++++++++++++++++++++++++------- 3 files changed, 41 insertions(+), 18 deletions(-) diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 5e664edb70..8f605ac280 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -291,13 +291,7 @@ commit automatically with `git commit -s`. ### Go Format and lint -All code changes must pass ``make validate`` and ``make lint``. - -``` -podman build -t gate -f contrib/gate/Dockerfile . -``` - -***N/B:*** **don't miss the dot (.) at the end, it's really important** +All code changes must pass ``make validatepr``. ### Integration Tests diff --git a/Makefile b/Makefile index cf2f0b5ab5..3c5184555e 100644 --- a/Makefile +++ b/Makefile @@ -324,6 +324,7 @@ validatepr: $(PODMANCMD) run --rm \ -v $(CURDIR):/go/src/github.com/containers/podman \ --security-opt label=disable \ + -it \ -w /go/src/github.com/containers/podman \ quay.io/libpod/validatepr:latest \ make .validatepr diff --git a/contrib/validatepr/validatepr.sh b/contrib/validatepr/validatepr.sh index 15cd09edb2..ad754b409c 100755 --- a/contrib/validatepr/validatepr.sh +++ b/contrib/validatepr/validatepr.sh @@ -6,18 +6,46 @@ set -x # This script is intended to help developers contribute to the podman project. It # checks various pre-CI checks like building, linting, man-pages, etc. It is meant # to be run in a specific container environment. -# -# build all require incantations of podman -echo "Building windows ..." -GOOS=windows CGO_ENABLED=0 go build -tags "$REMOTETAGS" -o bin/test.windows ./cmd/podman -echo "Building darwin..." -GOOS=darwin CGO_ENABLED=0 go build -tags "$REMOTETAGS" -o bin/test.darwin ./cmd/podman +build() { + err="" + + echo "Building windows" + if ! GOOS=windows CGO_ENABLED=0 go build -tags "$REMOTETAGS" -o bin/podman-remote-windows ./cmd/podman; then + err+="\n - Windows " + fi + + echo "Building darwin" + if ! GOOS=darwin CGO_ENABLED=0 go build -tags "$REMOTETAGS" -o bin/podman-remote-darwin ./cmd/podman; then + err+="\n - Darwin " + fi + + echo "Building podman binaries" + if ! make binaries; then + err+="\n - Additional Binaries " + fi + + if [ ! -z "$err" ] + then + echo -e "\033[31mFailed to build: ${err}\033[0m">&2 + exit 1 + fi +} + +validate(){ + echo "Running validation tooling" -# build podman -echo "Building podman binaries ..." -make binaries + # golangci-lint gobbles memory. + # By default, podman machines only have 2GB memory, + # often causing the linter be killed when run on Darwin/Windows + mem=$(awk '/MemTotal/ {print $2}' /proc/meminfo) + if (( $((mem)) < 3900000 )); then + echo -e "\033[33mWarning: Your machine may not have sufficient memory (< 4 GB)to run the linter. \ +If the process is killed, please allocate more memory.\033[0m">&2 + fi + make validate +} -echo "Running validation tooling ..." -make validate +build +validate