[CI:DOCS]Initial PR validation

This PR is only a first step towards being able to validate developer
code locally prior to pushing a PR and using CI.  Right now, we have a
prepared image in a temporary spot (will change when done).  That image
can be used to exercise various podman builds, make validate, and DCO
check.

The idea here is we have a make target that spins a podman container (or
machine) and then execute a small script to perform the actual builds.
Note, these builds are to verify code, not make production binaries so
corners are cut.  As of now, we choose to not build cross-arch binaries
because most of our problems thus far have been operating system builds
and not arch.

Of course this can be expanded in the future.  This is just step one to
start getting some of it in place.  The rest of the work is tracked in
JIRA under two cards.

Signed-off-by: Brent Baude <bbaude@redhat.com>
This commit is contained in:
Brent Baude
2024-04-04 09:54:09 -05:00
parent 2f603fc372
commit e773ed42b3
3 changed files with 52 additions and 0 deletions

View File

@ -315,6 +315,18 @@ codespell:
.PHONY: validate
validate: lint .gitvalidation validate.completions man-page-check swagger-check tests-expect-exit pr-removes-fixed-skips
.PHONY: validatepr
validatepr:
$(PODMANCMD) run --rm --env HOME=/root \
-v $(CURDIR):/var/tmp/go/src/github.com/containers/podman \
--security-opt label=disable \
quay.io/libpod/fedora_podman:latest \
make .validatepr
.PHONY: .validatepr
.validatepr:
env BUILDTAGS="$(BUILDTAGS)" REMOTETAGS="$(REMOTETAGS)" contrib/validatepr/validatepr.sh
.PHONY: build-all-new-commits
build-all-new-commits:
# Validate that all the commits build on top of $(GIT_BASE_BRANCH)

View File

@ -0,0 +1,17 @@
FROM registry.fedoraproject.org/fedora:latest
WORKDIR /go/src/github.com/containers/podman
RUN dnf install -y systemd-devel \
libassuan-devel \
libseccomp-devel \
gpgme-devel \
device-mapper-devel \
btrfs-progs-devel \
golang \
make \
man-db \
git \
perl-Clone \
perl-FindBin \
pre-commit && dnf clean all

View File

@ -0,0 +1,23 @@
#!/bin/bash
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 podman
echo "Building podman binaries ..."
make binaries
echo "Running validation tooling ..."
make validate