summaryrefslogtreecommitdiff
path: root/hack
Commit message (Collapse)AuthorAge
* enable linter for pkg/machine/e2ePaul Holzinger2022-07-26
| | | | | | | | | | | | Rename all files to _test.go and rename the package to e2e_test. This makes the linter less strict about things like dot imports. Add some unused nolint directives to silence some warnings, these can be used to find untested options so someone could add tests for them. Fixes #14996 Signed-off-by: Paul Holzinger <pholzing@redhat.com>
* man page checker: enforce stricter options formatEd Santiago2022-07-26
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Followup to #14906, in which a nonexistent option was found in a man page. The xref script was designed to catch that, but I was too lax in my parsing: the option was documented using wrong syntax, and the script didn't catch it. Solution: do not allow *any* unrecognized cruft in the option description lines. And fix all improperly-written entries to conform to the rule: **--option**=*value(s)* Two asterisks around option, which must have two dashes. One asterisk around value(s). This is going to cause headaches for some people adding new options, but I don't think I can fix that: there are many factors that make an unparseable line. Adding 'hint' code would make the script even more complex than it is. I have to assume that our contributors are smart enough to look at surrounding context and figure out the right way to specify options. Signed-off-by: Ed Santiago <santiago@redhat.com> <MH: Fixed cherry-pick conflicts> Signed-off-by: Matthew Heon <matthew.heon@pm.me>
* manifest_test: safer registry setup and teardownEd Santiago2022-07-07
| | | | | | | | | | | | | | | | | | | | | | | | | manifest_test:authenticated_push() is the final test left to fix before merging #14397. The reason it's failing _seems_ to be that podman is running with a mix of netavark and CNI, and that _seems_ to be because this test invokes hack/podman-registry which invokes plain podman without whatever options used in e2e. Starting a registry directly from the test is insane: there is no reusable code for doing that (see login_logout_test.go and push_test.go. Yeesh.) Solution: set $PODMAN, by inspecting the podmanTest object which includes both a path and a list of options. podman-registry will invoke that. (It will also override --root and --runroot. This is the desired behavior). Also: add cleanup. If auth-push test fails, stop the registry. Also: add a sanity check to podman-registry script, have it wait for the registry port to activate. Die if it doesn't. That could've saved us a nice bit of debugging time. Signed-off-by: Ed Santiago <santiago@redhat.com>
* golangci install: explicitly set BINDIREd Santiago2022-07-05
| | | | | | | | The golangci installer (which is curl pipe sh, ewww) installs into $BINDIR, which it gets from the caller's environment. Make sure we set it explicitly. Signed-off-by: Ed Santiago <santiago@redhat.com>
* hack/test/utils: switch to golang native error wrappingSascha Grunert2022-07-05
| | | | | | | | | We now use the golang error wrapping format specifier `%w` instead of the deprecated github.com/pkg/errors package. [NO NEW TESTS NEEDED] Signed-off-by: Sascha Grunert <sgrunert@redhat.com>
* golangci-lint: add systemd build tagPaul Holzinger2022-06-14
| | | | | | | | | Lint the systemd code and fix the reported problems. The remoteclient tag is no longer used so I just removed it. [NO NEW TESTS NEEDED] Signed-off-by: Paul Holzinger <pholzing@redhat.com>
* Merge pull request #14199 from edsantiago/parse_localbenchmarksOpenShift Merge Robot2022-05-16
|\ | | | | [CI:DOCS] Benchmarks: new tool for parsing results
| * [CI:DOCS] Benchmarks: new tool for parsing resultsEd Santiago2022-05-11
| | | | | | | | | | | | | | | | New script for use with Valentin's benchmarks. Converts ginkgo timing results to CSV format suitable for (TBI) saving and comparing. Signed-off-by: Ed Santiago <santiago@redhat.com>
* | [CI:DOCS] Treadmill script: add --reset optionEd Santiago2022-05-12
|/ | | | | | | | | | | | | | | Buildah got vendored into podman last week, and the script went kablooie because of ever-so-slight conflicts between what was in the treadmill PR (#13808) and what ultimately got merged (#14127) which was obviously better (hey, I tried). After a buildah vendor, there really isn't any point to keeping the treadmill commits - we're much better off just restarting with two fresh empty placeholder commits. Do so. Also, mild cleanup. Signed-off-by: Ed Santiago <santiago@redhat.com>
* Cirrus: Update images + new automation libraryChris Evich2022-05-10
| | | | | | | | Add support for new automation library version w/ `$DEBUG` fix (ref: containers/automation_images#128) and added definitions for commonly used Distro/version variables. Signed-off-by: Chris Evich <cevich@redhat.com>
* Merge pull request #14092 from vrothberg/benchmarksOpenShift Merge Robot2022-05-05
|\ | | | | benchmarks: push/pull
| * benchmarks: push/pullValentin Rothberg2022-05-04
| | | | | | | | | | | | | | | | Polish the push and pull benchmarks. In particular, make sure to not be network bound during these benchmarks by running a local registry and pushing a local image that can later on be pulled. Signed-off-by: Valentin Rothberg <vrothberg@redhat.com>
* | vendor treadmill script: run 'git add vendor'Ed Santiago2022-05-03
|/ | | | | | | | | | | | | | | | | | | Situation encountered just now after buildah #3949 but before podman #14084: go.mod changed in such a way that other modules were updated, not just buildah, and those changes weren't git-added by 'make vendor'. This resulted in the dirty-tree CI test failing. Solution: check for untracked vendor files after 'make vendor', and git-add them. Show a friendly message that we're doing so: +---> Adding untracked files under containers/image, containers/storage, klauspost/compress, x/sys In order to do this safely, we run an untracked-files check under vendor as one of the first sanity checks. If there are any when we start the script, fail early. Signed-off-by: Ed Santiago <santiago@redhat.com>
* Treadmill script: revampEd Santiago2022-05-02
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Major revamp: instead of stacking a vendor commit on top of the treadmill changes, do it the other way around: vendor, then apply treadmill diffs. Reason: the build-all-new-commits test. Sigh. It fails in the common case where our treadmill changes include a new struct element in cmd/podman/images/build.go Why this is good: well, superficially, it's more intuitive. Why this is horrible: omg the rebasing games are a nightmare. When the vendor commit is on top (HEAD), it's ultra-trivial to drop it, rebase the treadmill changes on main, then add a new vendor-buildah commit on top. As you can see from the diffs in this PR, treadmill-as-HEAD introduces all sorts of complex dance steps in which things can go catastrophically wrong and you can lose all your treadmill patches. I try very hard to prevent this, and to offer hints if there's a problem, and heck in the worst case it's still git so it's still possible to find lost commits... but it's still much riskier than the old way. Alternative I considered: using sed magic to disable the build-all-new-commits test. So tempting... but that would also disable the bloat check. Signed-off-by: Ed Santiago <santiago@redhat.com>
* buildah-vendor-treadmill script: yet more checksEd Santiago2022-04-29
| | | | | | | | | | | | | | | | | | | | More safety checks for the treadmill script: * for --sync: - issue warning if HEAD is not a vendor commit - if run-buildah-bud-tests fails, leave the working dir for user to investigate. And offer a long helpful warning. - tweak .cirrus.yml so buildah-bud tests run early, so we can fail early. (Remember, the top commit will never ever ever ever be merged) * for --pick: - check branch merge-base (of your vendor-update branch), compare against that of the treadmill PR. If treadmill is newer, bail, and suggest rebasing. This would've saved us some time in #14005. Signed-off-by: Ed Santiago <santiago@redhat.com>
* benchmarks: add more image benchmarksValentin Rothberg2022-04-26
| | | | | | | | Add more benchmarks for the most common and performance-critical image commands. Benchmarks for `podman build` should go into a separate section. Signed-off-by: Valentin Rothberg <vrothberg@redhat.com>
* Add podman machine test suiteBrent Baude2022-04-25
| | | | | | | | | | | | | This PR introduces a test suite for podman machine. It can currently be run on developers' local machines and is not part of the official CI testing; however, the expectation is that any work on machine should come with an accompanying test. At present, the test must be run on Linux. It is untested on Darwin. There is no Makefile target for the test. It can be run like `ginkgo -v pkg/machine/test/.`. It should be run as a unprivileged user. Signed-off-by: Brent Baude <bbaude@redhat.com>
* Fix size-check to display more contextChris Evich2022-04-21
| | | | | | | | | | When going through the rebase+build loop, the repository state won't match the exact branch or PR history. This results in the `Building: XYZSHA` indications being entirely useless. Fix this by at least including the title line of the commit being built. This will allow a human to make sense of any size-check failure WRT their view of history. Signed-off-by: Chris Evich <cevich@redhat.com>
* Buildah Vendor Treadmill: the scriptEd Santiago2022-04-20
| | | | | | | | | | | This is the script I've been using (and tweaking) for the past two weeks. It's ready for general review and use, with the proviso that there are still corner cases I haven't tested. See https://github.com/containers/podman/wiki/Buildah-Vendor-Treadmill for an overview and instructions. Signed-off-by: Ed Santiago <santiago@redhat.com>
* manpage vs --help checker: better error messagesEd Santiago2022-04-18
| | | | | | Use quotes to indicate the command, and remove some duplication Signed-off-by: Ed Santiago <santiago@redhat.com>
* size-check: display binary size and growthEd Santiago2022-03-29
| | | | | | | | This won't actually be seen except by someone who takes the time to clickety-click into Cirrus - but that's better than not showing it at all. Signed-off-by: Ed Santiago <santiago@redhat.com>
* Run codespell to cleanup typosDaniel J Walsh2022-03-25
| | | | | | [NO NEW TESTS NEEDED] Signed-off-by: Daniel J Walsh <dwalsh@redhat.com>
* Merge pull request #13602 from edsantiago/size_check_part2OpenShift Merge Robot2022-03-24
|\ | | | | Binary growth check, part 2 of 2
| * Binary growth check, part 2 of 2Ed Santiago2022-03-22
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Add a CI check to prevent unwanted bloat in binary images, by building a baseline (pre-PR) binary then comparing file sizes post-PR. Part 1 (#13518) added a new script that runs multiple 'make's, comparing image sizes against an original, and failing loudly if growth is too big. An override mechanism is defined. This is part 2 of 2: adding the CI rule. We couldn't do that in part 1, because the rule would call a script that didn't exist in the pre-PR commit. Signed-off-by: Ed Santiago <santiago@redhat.com>
* | man pages: sort flags, and keep them that wayEd Santiago2022-03-23
|/ | | | | | | | | | | | | | Command flags (OPTIONS) in man pages have to date been in haphazard order. Sometimes that order is sensible, e.g., most-important options first, but more often they're just in arbitrary places. This makes life hard for users. Here, I update the man-page-check Makefile script so it checks and enforces alphabetical order in OPTIONS sections. Then -- the hard part -- update all existing man pages to conform to this requirement. Signed-off-by: Ed Santiago <santiago@redhat.com>
* Binary growth check, part 1 of 2Ed Santiago2022-03-22
| | | | | | | | | | | | | | | | Add a CI check to prevent unwanted bloat in binary images, by building a baseline (pre-PR) binary then comparing file sizes post-PR. We piggyback onto the existing 'Build Each Commit' CI check because it gives us an easy way to run 'make' against the parent commit. This is part 1 of 2: adding the script, not the Makefile rule. We can't add the Makefile rule now because the script it would invoke does not exist in the parent commit. Signed-off-by: Ed Santiago <santiago@redhat.com>
* CI: fix golangci-lint installationPascal Bourdier2022-03-10
| | | | | | | | | | avoid this warn: ``` golangci/golangci-lint info installed ./bin/golangci-lint golangci/golangci-lint err this script is deprecated, please do not use it anymore. check https://github.com/goreleaser/godownloader/issues/207 ``` Signed-off-by: Pascal Bourdier <pascal.bourdier@gmail.com>
* hack/bats: fix broken usage messageEd Santiago2022-02-02
| | | | | | I am so, so sorry. Signed-off-by: Ed Santiago <santiago@redhat.com>
* Cirrus: Fix get_ci_vm.sh initial setupChris Evich2022-01-27
| | | | | | | | | | | | | | | | | Due to some recent changes in the Makefile, the setup part of the script is now breaking with the error: ``` install: cannot stat 'bin/rootlessport': No such file or directory make: *** [Makefile:767: install.bin] Error 1 ``` The root-cause seems to be the `install` targets not properly specifying their build dependencies. This may lead to other problems WRT automation, but for now I'm just patching this tool to workaround the issue. Signed-off-by: Chris Evich <cevich@redhat.com>
* Merge pull request #12908 from Luap99/network-conf-dirOpenShift Merge Robot2022-01-18
|\ | | | | rename --cni-config-dir to --network-config-dir
| * rename --cni-config-dir to --network-config-dirPaul Holzinger2022-01-18
| | | | | | | | | | | | | | | | Since this option will also be used for netavark we should rename it to something more generic. It is important that --cni-config-dir still works otherwise we could break existing container cleanup commands. Signed-off-by: Paul Holzinger <pholzing@redhat.com>
* | Merge pull request #12797 from edsantiago/test_image_scp_sudoOpenShift Merge Robot2022-01-18
|\ \ | |/ |/| Tests for podman image scp (the sudo form)
| * [WIP] Tests for podman image scp (the sudo form)Ed Santiago2022-01-17
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Start inching our way back to having tests for the sudo form of podman image scp. Basically, copy an image to another user and then back, using a pseudorandom name. Confirm that the image makes it to the remote end, and that when we copy it back, the original image digest is preserved. When scp'ing as root, we identify the destination rootless user account via the $PODMAN_ROOTLESS_USER envariable. Setting this and creating the account is left as an exercise for the CI framework (be it github, or Fedora/CentOS/RHEL gating, or other). Also: amend hack/bats to set and relay $PODMAN_ROOTLESS_USER, so developers can test locally. Also: remove what I'm 99% sure is a debugging printf. Signed-off-by: Ed Santiago <santiago@redhat.com>
* | bump go module to version 4Valentin Rothberg2022-01-18
|/ | | | | | | | | | | | | Automated for .go files via gomove [1]: `gomove github.com/containers/podman/v3 github.com/containers/podman/v4` Remaining files via vgrep [2]: `vgrep github.com/containers/podman/v3` [1] https://github.com/KSubedi/gomove [2] https://github.com/vrothberg/vgrep Signed-off-by: Valentin Rothberg <rothberg@redhat.com>
* build: fix test for subid 4Giuseppe Scrivano2021-12-20
| | | | | | | | | | | libsubid changes its ABI in version 4. Account for the different name in the configure script. Closes: https://github.com/containers/podman/issues/12654 [NO NEW TESTS NEEDED] it is a change in the build script Signed-off-by: Giuseppe Scrivano <gscrivan@redhat.com>
* fix duplicated logs commandPaul Holzinger2021-11-18
| | | | | | | | | | Podman logs was defined twice, once for container logs and once for pod logs. This causes problems with the shell completion. Also podman --help showed this command twice. [NO NEW TESTS NEEDED] Signed-off-by: Paul Holzinger <pholzing@redhat.com>
* hack/bats: deal with new bin helpersEd Santiago2021-11-16
| | | | | | | | | | | | | | | | | | | | | Some time in the last month, podman started to depend on a bunch of external helper binaries: rootlessport, pause, catatonit. System tests fail without these. Update the hack/bats script to pass $CONTAINERS_HELPER_BINARIES_DIR (set to ./bin); podman will then use locally-built helpers. (This requires https://github.com/containers/common/pull/823 , which as of this PR is not yet vendored into podman. There is no harm in merging this while we wait.) Also: if bats helper is invoked as root, run only once; i.e., skip the "rootless" step. Also (piggybacked): the name of the podman pause image has changed, from pause to podman-pause. Adjust that in our teardown so we don't leave droppings. Signed-off-by: Ed Santiago <santiago@redhat.com>
* cirrus: force-install catatonitValentin Rothberg2021-11-15
| | | | | | A temporary workaround until the CI images are updated. Signed-off-by: Valentin Rothberg <rothberg@redhat.com>
* [CI:DOCS] Add CI check for SEE ALSO in man pagesEd Santiago2021-11-10
| | | | | | | | | | | | | | | | | | | | | | | | | Add new CI check to confirm that links and references in SEE ALSO sections are properly formatted and that links are valid (at least in theory: we do no actual URL fetching to test for 404). The check is piggybacked into existing xref-helpmsgs-manpages script. It could conceivably be more elegant to write a separate tool for this purpose, but I don't wish to duplicate the logic for finding and reading markdown files. Script identified various problems, which I fix in this PR: . missing '**' (asterisks) around some references, or '**' in the wrong place. . links pointing to github.com/.../tree/ instead of /blob/ (github redirects those automatically, but I like consistency) . a few copy-paste errors, e.g. subgid linking to subuid. Signed-off-by: Ed Santiago <santiago@redhat.com>
* Bump Catatonit up to v0.1.7Chris Evich2021-11-08
| | | | | | Ref: https://github.com/containers/podman/pull/12218 Signed-off-by: Chris Evich <cevich@redhat.com>
* System tests: tighten 'is' operatorEd Santiago2021-09-30
| | | | | | | | | | | | | | | | | | | | | | | | | | | | Fix day-one sloppiness: when I first wrote this framework it compared strings using 'expr', not '=', to be more forgiving of extra cruft in output. This was a bad decision. It means that warnings or additional text are ignored: is "all is ok, NOT!" "all is ok" <-- this would pass Solution: tighten up the 'is' check. Use '=' (direct compare) first. If it fails, look for wild cards ('*') or character classes ('[') in the expect string. If so, and only then, use 'expr'. And, thanks to a clever suggestion from Luap99, include '(using expr)' in the error message when we do so; this could make it easier for a developer to understand a string mismatch. This change exposes a lot of instances in which we weren't doing proper comparisons. Fix those. Thankfully, there weren't as many as I'd feared. Also, and completely unrelated, add '-T' flag to bats helper, for showing timing results. (I will open this as a separate PR if requested. I too find it offensive to jumble together unrelated commits.) Signed-off-by: Ed Santiago <santiago@redhat.com>
* standardize logrus messages to upper caseDaniel J Walsh2021-09-22
| | | | | | | | Remove ERROR: Error stutter from logrus messages also. [ NO TESTS NEEDED] This is just code cleanup. Signed-off-by: Daniel J Walsh <dwalsh@redhat.com>
* Fix Error, empty output for info: 'VERSION'Chris Evich2021-09-21
| | | | | | | | | | | | | | | | | | | | | When building releases, the definitive canonical version of podman (or podman-remote) is needed. Previously this was accomplished by scraping `version/version.go`. However, due to tooling differences across platforms, this has proven problematic, unreliable, and hard to maintain. Fix this by building and caching a small golang binary who's only purpose is to print the version number to stdout. This not only provides a quick and reliable way to determine the current version, it also acts as a check on the version API vs tooling that relies on it. Lastly, remove several `RELEASE_*` Makefile definitions which aren't actually used anywhere. These were originally added a very long time ago to serve as part of a long since retired release process. The remaining items, were updated to make use of the new `.podmanversion` binary on an as-required basis (i.e. not every time `make` is run). Signed-off-by: Chris Evich <cevich@redhat.com>
* Fix up build the docs siteDaniel J Walsh2021-09-16
| | | | | | [NO TESTS NEEDED] Signed-off-by: Daniel J Walsh <dwalsh@redhat.com>
* Remove changelog.txt from the repositoryjesperpedersen2021-09-07
| | | | | | | | | | | The changelog.txt file hasn't been kept in sync with release tags, especially on main, so remove it. The release notes will be featured in RELEASE_NOTES.md. Signed-off-by: jesperpedersen <jesper.pedersen@redhat.com> [NO TESTS NEEDED]
* Add support for libsubidDaniel J Walsh2021-08-27
| | | | | | | | | This will enable remote access to /etc/subuid and /etc/subgid information from ldap services, if shadow-utils ships with a libsubid. [NO TESTS NEEDED] Since we have no way to test this. Signed-off-by: Daniel J Walsh <dwalsh@redhat.com>
* Fix swagger issueJhon Honce2021-08-25
| | | | | | Add special case for op PlayKubeDownLibpod Heuristic for guessing swagger operation id too limited for PlayKubeDownLibpod Signed-off-by: Jhon Honce <jhonce@redhat.com>
* podman-registry: minor usability updatesEd Santiago2021-08-02
| | | | | | | 1) use cached quay.io image 2) use 'podman unshare' when rm -rf'ing, to avoid EPERM Signed-off-by: Ed Santiago <santiago@redhat.com>
* Cirrus: Fixes due to master->main renameChris Evich2021-06-30
| | | | Signed-off-by: Chris Evich <cevich@redhat.com>
* Add script for identifying commits in release branchesMatthew Heon2021-05-17
| | | | | | | | | | | | | | | | | | | | | | | | | | | One of the worst parts of a Podman release is writing the release notes. It requires manually going through all merged commits since the last release, figuring out what was actually done, and writing a small blurb about what was fixed. The worst part of this is the difficulty in finding the commits that were actually included in previous releases - our extensive backports to prior releases mean that there are usually dozens of commits that were included in a prior release, but do not have a matching SHA (as the original author did not do the backport, and often the commit required massaging to cherry-pick in). This script automates the job of finding commits in one release branch that are not in another, with filtering to remove most cherry-picked commits. It makes my life a lot easier during releases, so I figured I'd include it in hack/ so anyone else stuck with the enjoyable task of writing release notes can have a slightly easier life. The script is written in absolutely terrible Ruby and its performance is absolutely terrible, but you only need to run it once per major release and a 30-second wait to generate the list of commits to include isn't bad. Signed-off-by: Matthew Heon <mheon@redhat.com>