aboutsummaryrefslogtreecommitdiff
path: root/hack
Commit message (Collapse)AuthorAge
* CI: only make install.tools when neededEd Santiago2022-09-27
| | | | | | | | | | | | | | | | | | | Reintroduce .install.foo targets into Makefile, and invoke only the bare-minimum ones needed for each individual CI step in setup_environment.sh. Also add a retry to the golangci-lint curl, in hopes of dealing with network flakes. And remove the -f (fail) because it produces unhelpful logs. Reason: saw about 25% CI flakes yesterday due to the golangci-lint fetch, something about a timeout, and this was especially frustrating because none of the steps actually needed lint. Quick reminder: avoid network fetches unless absolutely necessary. Fixes: #15892 Signed-off-by: Ed Santiago <santiago@redhat.com>
* man page xref: verify page titleEd Santiago2022-09-26
| | | | | | | | Issue #15923 should have never happened: the problem should've been autodetected. Make it so henceforth (and fix another existing discrepancy) Signed-off-by: Ed Santiago <santiago@redhat.com>
* Fix libsubid detectionSam Morris2022-09-23
| | | | | | Library arguments must be positioned after sources when invoking GCC. Signed-off-by: Sam Morris <sam@robots.org.uk>
* Merge pull request #15829 from edsantiago/shlintOpenShift Merge Robot2022-09-16
|\ | | | | Cleanup: fix problems reported by shell lint
| * Cleanup: fix problems reported by shell lintEd Santiago2022-09-15
| | | | | | | | | | | | | | | | Followup to #15616, which is not usable as it is (way, way, way too much noise) but actually found a few real nits that should be fixed. Signed-off-by: Ed Santiago <santiago@redhat.com>
* | Merge pull request #15722 from edsantiago/treadmill_improvementsOpenShift Merge Robot2022-09-16
|\ \ | |/ |/| [CI:DOCS] Buildah treadmill script: various fixes
| * Buildah treadmill script: various fixesEd Santiago2022-09-12
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | ...gathered up from the last few months of almost-daily runs. The principal difference is, ditching the git-am approach in favor of git-cherry-pick. It's so much nicer! I keep forgetting how clumsy git-am is. With the new approach, saved checkpoints are kept as git branches, not in an easy-to-lose text file. And, conflict resolution is MUCH EASIER. (Conflict resolution is necessary when, e.g., the treadmill PR includes fixes for some new vendoring that buildah has done but not podman, then podman vendors in that same module but fixes broken tests in a different way than I did). Also a lot of smaller fixes for bugs reported by @Luap99. Thank you for testing and for letting me know of problems! Cursory review is OK: this will not break anything in the repo, and I've been testing/finetuning these changes heavily over the past month or two. Signed-off-by: Ed Santiago <santiago@redhat.com>
* | Fix stuttersDaniel J Walsh2022-09-10
|/ | | | | | | | | | | | | | Podman adds an Error: to every error message. So starting an error message with "error" ends up being reported to the user as Error: error ... This patch removes the stutter. Also ioutil.ReadFile errors report the Path, so wrapping the err message with the path causes a stutter. Signed-off-by: Daniel J Walsh <dwalsh@redhat.com>
* Man pages: refactor common options: --volumeEd Santiago2022-09-09
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This one is a nightmare, because --volume has been edited in four different files throughout the years (five if you count podman-build, which I am not including in this PR). Those edits have not always been done in sync. The list of options was reordered 2022-06-28 by Giuseppe in #14734, but only in podman-create and -run (not in podman-pod-*). No explanation of why, but I'll assume he knew what he was doing, and have accepted that for the reference copy. There was also a big edit in #8519. The "Propagation property...bind mounted" sentence first appeared in pod-clone, in #14299 by cdoern, with no obvious source of where it came from. I choose to include it in the reference copy. The "**copy**" option seems to work in pod-create, so I'm including it in the reference copy. Someone please yell loudly if this is not the case. The "disables SELinux separation for containers used in the build", no idea, changed that to just "for the container/pod" The "advanced users / overlay / upperdir / workdir" paragraph makes zero sense to me, but hey, I assume it applies to all the commands, so I put it in the reference copy. Finally, there's still a mishmash of backticks, asterisks, underscores, and even quotation marks. Someone is gonna have to perform major cleanup on this one day, but at least it'll be in only one place. Signed-off-by: Ed Santiago <santiago@redhat.com>
* Man pages: refactor common options: cert-dirEd Santiago2022-08-22
| | | | | | | ...and, tweak markdown-process-review so it can detect and remove identical files, making review easier. Signed-off-by: Ed Santiago <santiago@redhat.com>
* Man pages: refactor common options: archEd Santiago2022-08-15
| | | | | | | | | | | | | | | | | | Smaller, more reviewable chunks. This is just one option, --arch. Future PRs may, if the reviewing is easy, include multiple options. This one includes fixes to the preprocessor script, though: * big oops, I was not handling '<<something pod|something>>' where 'pod' appears other than the beginning of the string. * I was also not handling 'container<<| or pod>>', where one side was empty. * Behavior change: <<subcommand>>, on podman-pod-foo, becomes just 'foo' (not 'pod foo'). This will be useful in a future PR where we refactor --pod-id-file. Signed-off-by: Ed Santiago <santiago@redhat.com>
* Man pages: refactor common optionsEd Santiago2022-08-09
| | | | | | Continued. Harder-to-review ones this time. Signed-off-by: Ed Santiago <santiago@redhat.com>
* Refactor common man page options, phase 2Ed Santiago2022-08-09
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Followup to #15174. These are the options that are easy(ish) to review: those that have only drifted slightly, and need only minor tweaks to bring back to sanity. For the most part, I went with the text in podman-run because that was cleaned up in #5192 way back in 2020. These diffs primarily consist of using '**' (star star) instead of backticks, plus other formatting and punctuation changes. This PR also adds a README in the options dir, and a new convention: <<container text...|pod text...>> which tries to do the right thing based on whether the man page name includes "-pod-" or not. Since that's kind of hairy code, I've also added a test suite for it. Finally, since this is impossible to review by normal means, I'm temporarily committing hack/markdown-preprocess-review, a script that will diff option-by-option. I will remove it once we finish this cleanup, but be advised that there are still 130+ options left to examine, and some of those are going to be really hard to reunite. Review script usage: simply run it (you need to have 'diffuse' installed). It isn't exactly obvious, but it shouldn't take more than a minute to figure out. The rightmost column (zzz-chosen.md) is the "winner", the actual content that will be used henceforth. You really want an ultrawide screen here. Signed-off-by: Ed Santiago <santiago@redhat.com>
* markdown-preprocess: force extra newline on commentsEd Santiago2022-08-04
| | | | | | | | | | | | | | | | | go-md2man happily ignores our comment lines in most cases, but sphinx (used in readthedocs) cannot deal with comments if they immediately follow any other content line: blah blah [//]: # (my comment) ...the whole comment line is actually rendered in its output. Only solution seems to be to add extra newlines before each comment. Makes diff and PR review harder, but otherwise has no effect on the rendered documents. Signed-off-by: Ed Santiago <santiago@redhat.com>
* Merge pull request #15191 from Luap99/docs-2openshift-ci[bot]2022-08-04
|\ | | | | fix sphinx build to include podman-create/run page
| * hack/markdown-preprocess: allow to be executed from any dirPaul Holzinger2022-08-04
| | | | | | | | Signed-off-by: Paul Holzinger <pholzing@redhat.com>
* | Merge pull request #15145 from cevich/ec2_get_ci_vmopenshift-ci[bot]2022-08-04
|\ \ | |/ |/| [CI:DOCS] Cirrus: Support EC2 instances in hack/get_ci_vm.sh
| * Cirrus: Support EC2 instances in hack/get_ci_vm.shChris Evich2022-08-03
| | | | | | | | | | | | | | ***Depends on:*** https://github.com/containers/automation_images/pull/160 Signed-off-by: Chris Evich <cevich@redhat.com>
* | fix hack/markdown-preprocess to support older python versionsPaul Holzinger2022-08-04
| | | | | | | | | | | | | | | | | | str.removeprefix() and str.removesuffix() is python 3.9+ only but we need to support older versions for the OSX cross task. This fixes broken CI on main. Signed-off-by: Paul Holzinger <pholzing@redhat.com>
* | Refactor common options in man pagesEd Santiago2022-08-03
|/ | | | | | | | | | | | | | podman-create and -run have many options in common. To date, these are copy-pasted and haphazardly maintained. Solution: add an include mechanism, '@@option foo', such that multiple md source files can fetch from one common file. This is a Phase One commit, a very small subset of what's possible. Purpose of this commit is ease of review. If this passes review, much more (trickier stuff) will be forthcoming. Signed-off-by: Ed Santiago <santiago@redhat.com>
* switch from "kube/play" endpoint to "play/kube" endpoint.Niall Crowe2022-08-02
| | | | | | | | | When podman kube play was added the endpoint for the kube play/play kube commands was switched from the "play kube" endpoint to the new "kube play" endpoint. This caused issues with the remote client, requiring the need to use the "play kube" endpoint again in order to avoid these issues. Signed-off-by: Niall Crowe <nicrowe@redhat.com>
* Update the registry server we test against from 2.6 to 2.8Miloslav Trmač2022-07-30
| | | | | | | | | | | | | ... primarily so that it can support OCI artifacts. 2.8 already seems to exist in the repo. This requires changing WaitContainerReady to also check stderr (ultimately because docker/distribution was updated to a more recent sirupsen/logrus, which logs by default to stderr instead of stdout). Signed-off-by: Miloslav Trmač <mitr@redhat.com>
* Use existing REGISTRY_IMAGE variables in more placesMiloslav Trmač2022-07-30
| | | | | | | | | ... instead of hard-coding a copy of the value. Notably this makes hack/podman_registry actually support the documented -i option. Signed-off-by: Miloslav Trmač <mitr@redhat.com>
* Use httpasswd from the surrouding OS instead of the registry imageMiloslav Trmač2022-07-30
| | | | | | | | | | | htpasswd is no longer included in docker.io/library/distribution after 2.7.0, per https://github.com/docker/distribution-library-image/issues/107 , and we want to upgrade to a recent version. At least system tests currently execute htpasswd from the OS, so it seems that it is likely to be available. Signed-off-by: Miloslav Trmač <mitr@redhat.com>
* Remove bats installation script and make targetChris Evich2022-07-28
| | | | | | | | | | While convenient, it can be problematic to rely on a Makefile to install software. This was found to be the case across multiple environments WRT `bats`. Fix this by removing the install script and target. A future commit will ensure the correct version of `bats` is present in all CI environments where it's required. Signed-off-by: Chris Evich <cevich@redhat.com>
* enable linter for pkg/machine/e2ePaul Holzinger2022-07-21
| | | | | | | | | | | | 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-14
| | | | | | | | | | | | | | | | | | | | | | | | | | 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>
* Add "podman kube play" cmdNiall Crowe2022-07-13
| | | | | | | | | | | The "podman kube play" command is designed to be a replacement for the "podman play kube" command. It performs the same function as "play kube" while also still working with the same flags and options. The "podman play kube" command is still functional as an alias of "kube play". Closes #12475 Signed-off-by: Niall Crowe <nicrowe@redhat.com> Signed-off-by: Valentin Rothberg <vrothberg@redhat.com>
* 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>