Write (or speak) about any of Pants community's favorite topics!
Interested in blogging about Pants? Any member of the community is encouraged to pitch topics for the Pants Blog. You can DM pitches to me (@cczona) over at pantsbuild.slack.com. Likewise, we encourage writing for your company blog, personal blog, or other organizations' blogs where appropriate for your topic.
Pants 2.15: Easier multi-platform workflows, Docker build support, automatic code cleanup, and more!
The 2.15 series represents the biggest change to Pants since version 2.0, and we're excited to share how it can let you complete more workflows, more easily, in more places. Including cross-platform builds, containerized builds with Docker, and easier configuration for local builds…
The pants launcher binary - a much simpler way to install and run Pants
TL;DR Ensuring that an appropriate Python interpreter is available for running Pants has always been a stumbling block. Now Pants embeds its own interpreter and you don't have to worry about it! With the new pants launcher binary, developing, publishing and using Pants gets a whole lot easier. Why
Tweag case study: From adopting Pants, to generalizing our CI to multiple Python versions
At Tweag we have a lot of experience with Bazel, as we maintain the Haskell rules. However, I had feedback that Bazel's Python support was not ideal. In contrast, Python is Pants' strong point. My client's fear of boilerplate also made Bazel unappealing. Whereas, Pants reduces boilerplate…
How we get quick feedback on new features via "experimental" backends
Pants balances release velocity and end-user stability via judicious use of deprecation cycles. Experimental backends are a way to get quick feedback on new functionality, before "graduating" it to the formal deprecation policy. Experimental features are still well-supported, and not to be feared!
Case Study: Introducing Pants to Oxbotica
A year in, builds take only a few minutes (~150K LOC, ~1500 tests), PRs have become smaller as devs no longer try to squeeze as much as code as possible into a single change, code reviews get completed much faster (and are more likely to provide useful feedback), development velocity has increased…
Celebrating two years of Pants 2
Pants 2's design incorporated many lessons learned from the first version of Pants, and many of its contemporary build systems. On Pants 2's 2nd anniversary, we return to some of the earliest decisions we made when rewriting Pants and look back at how they've helped us evolve at a remarkable pace…
Dependency inference: Pants's special sauce
Unlike earlier build systems, Pants v2 automatically infers your code's internal and external dependencies. And it does this at the file level, so that you get optimal invalidation, caching, and concurrency performance without having to manually create and maintain mountains of BUILD file metadata.
Pants 2.14: Less boilerplate, more Rust, better support for Go monorepos, interactive debugging support, and more!
Highlights include: less boilerplate via hierarchical defaults for target field values, better Golang monorepo support, with multiple `go.mod`s, do more of your workflows in Pants with the experimental `deploy` goal (with initial support for Helm), and much more…
Skipping GitHub Actions jobs while keeping branch protection rules that require them
How we worked around some quirks and limitations of GitHub Actions to skip CI jobs that aren't necessary in certain scenarios, without breaking branch protection rules that normally require those CI jobs to succeed.
Visualize your dependencies with Graph My Repo
To make it easier to understand the value and power of dependency inference, Toolchain (the lead sponsor of Pants) has built a new site: Graph My Repo. As its name suggests, Graph My Repo shows you an interactive graph of a public GitHub repo of your choice…
Meet our newest Maintainer: A. Alonso Dominguez
I was born in the early 80's in a small fishing town in the Spanish Atlantic Coast, far away from the big urban sprawls and common traits of miles-long beaches, year-round summertime and chill out vibes normally identified with life in Spain. This is the autonomous region named Galicia…
Pants 2.13: Easier at the command line, easier parallel execution in CI, Kotlin support, and better Python and JVM support!
We're pleased to announce Pants 2.13.0. Highlights include better command line arguments for file sets, improved JVM support, easier access to parallel execution in CI, and lower barriers to adoption for Python projects that currently use existing distribution and build tools.
Astranis Case Study: Wrangling Python In a Monorepo
"Code development at Astranis has been migrating towards a monorepo structure. Astranis has grown rapidly since this migration started and, along with it, so has the volume of Python hosted in our monorepo. We went looking for new tooling to bring us into the future."
Monorepository linting via Pants's project introspection
Pantsbuild provides a common interface to run all code quality tools in parallel. This post explores how Pants augments excellent linters such as bandit, flake8, shellcheck, etc. by offering its own linting mechanisms, too, including regex matches, dependency analysis, and metadata checks.
Optimizing Python + Docker deploys using Pants
Pants can build a PEX file, an executable zip file containing your Python code and all transitive dependencies. Deploying your application is as simple as copying the file. This post elaborates on how to get best performance out of the powerful combination of Pants+PEX+Docker.
Better CI/CD caching with Pants
Pants is designed to utilize fine-grained caching to speed up builds. Users are often interested in how this interacts with CI providers' own caching features, which are necessary since CI jobs typically run in fresh containers, with no direct access to previous state. In particular, we get questions about how
Pants 2.12: Improved performance for common cases, IDE support for Java and Scala
We're pleased to announce Pants 2.12.0 [https://www.pantsbuild.org/v2.12/docs], the latest release of Pants: the scalable and ergonomic build system. To update, set pants_version = "2.12.0" in your pants.toml. See upgrade tips [https://www.pantsbuild.org/docs/upgrade-tips] for more information.
How we streamlined Apple M1 Support with self-hosted Github Actions runners
We ended up setting up a self-hosted GitHub Actions runner, on a hosted Mac M1. Getting the machine itself up and running was easy, thanks to MacStadium's simple, effective UX. But setting up the GHA runner on it was a little trickier, for a couple of reasons...
Multiple lockfiles in Python repos
Rather than forcing global or per-project lockfiles, Pants uses a hybrid approach...This allows a repo to operate with the minimum number of lockfiles required to support their conflicting library versions, without necessarily going to the costly extreme of per-project lockfiles.