This is the documentation for my Pants backend, which I use for my own projects - especially managing my own cloud, but also building open-source software.
Please see the documentation for more information!
My plugins for the Pants build system
License: MIT License
This is the documentation for my Pants backend, which I use for my own projects - especially managing my own cloud, but also building open-source software.
Please see the documentation for more information!
With the new podman support, this might actually make sense as a workflow.
Would've prevented the regression in #56 where GHA changed their GID.
Describe the bug
Stacktrace:
Traceback (most recent call last):
File "<cache-dir>/bindings/venvs/2.16.0/lib/python3.9/site-packages/pants/engine/internals/selectors.py", line 623, in native_engine_generator_send
res = rule.send(arg) if err is None else rule.throw(throw or err)
File "<cache-dir>/bindings/venvs/2.16.0/lib/python3.9/site-packages/pants/core/goals/repl.py", line 127, in run_repl
request = await Get(ReplRequest, ReplImplementation, repl_impl)
File "<cache-dir>/bindings/venvs/2.16.0/lib/python3.9/site-packages/pants/engine/internals/selectors.py", line 118, in __await__
result = yield self
File "<cache-dir>/bindings/venvs/2.16.0/lib/python3.9/site-packages/pants/engine/internals/selectors.py", line 623, in native_engine_generator_send
res = rule.send(arg) if err is None else rule.throw(throw or err)
File "<pants-cache-dir>/named_caches/pex_root/venvs/s/32db4f38/venv/lib/python3.9/site-packages/pants_backend_oci/goals/run.py", line 213, in run_oci_command_repl
process = await Get(Process, RunImageBundleProcessRequest(request.targets[0], interactive=True))
File "<cache-dir>/bindings/venvs/2.16.0/lib/python3.9/site-packages/pants/engine/internals/selectors.py", line 118, in __await__
result = yield self
File "<cache-dir>/bindings/venvs/2.16.0/lib/python3.9/site-packages/pants/engine/internals/selectors.py", line 623, in native_engine_generator_send
res = rule.send(arg) if err is None else rule.throw(throw or err)
File "<pants-cache-dir>/named_caches/pex_root/venvs/s/32db4f38/venv/lib/python3.9/site-packages/pants_backend_oci/goals/run.py", line 93, in prepare_run_image_bundle
tool, image, rundir, shims = await MultiGet(
File "<cache-dir>/bindings/venvs/2.16.0/lib/python3.9/site-packages/pants/engine/internals/selectors.py", line 479, in MultiGet
return await _MultiGet((__arg0, __arg1, __arg2, __arg3))
File "<cache-dir>/bindings/venvs/2.16.0/lib/python3.9/site-packages/pants/engine/internals/selectors.py", line 165, in __await__
result = yield self.gets
File "<cache-dir>/bindings/venvs/2.16.0/lib/python3.9/site-packages/pants/engine/internals/selectors.py", line 623, in native_engine_generator_send
res = rule.send(arg) if err is None else rule.throw(throw or err)
File "<pants-cache-dir>/named_caches/pex_root/venvs/s/32db4f38/venv/lib/python3.9/site-packages/pants_backend_oci/language_target/python.py", line 119, in build_python_image
base_image, umoci, *layers = await MultiGet(
File "<cache-dir>/bindings/venvs/2.16.0/lib/python3.9/site-packages/pants/engine/internals/selectors.py", line 464, in MultiGet
return await _MultiGet((__arg0, __arg1, __arg2, __arg3, __arg4))
File "<cache-dir>/bindings/venvs/2.16.0/lib/python3.9/site-packages/pants/engine/internals/selectors.py", line 165, in __await__
result = yield self.gets
File "<cache-dir>/bindings/venvs/2.16.0/lib/python3.9/site-packages/pants/engine/internals/selectors.py", line 623, in native_engine_generator_send
res = rule.send(arg) if err is None else rule.throw(throw or err)
File "<pants-cache-dir>/named_caches/pex_root/venvs/s/32db4f38/venv/lib/python3.9/site-packages/pants_backend_oci/util_rules/layer.py", line 145, in build_image_layer
raw_layer_digest, layer_name = real_layers[0]
IndexError: list index out of range
To Reproduce
Include a resources-target in a Python image.
Describe the bug
When running the publish goal on oci_image_build
it will try to publish images even if the repository
argument is not set.
To Reproduce
oci_image_build(
name="image",
layers=[":layer"],
base=["//:python-distroless-arm"],
# repository=repository,
# tag=image_tags,
entrypoint="python3",
args=[f"{dirctory_no_slash}/local.pex"],
env=[
f"PEX_PATH=/{dirctory_no_slash}/local.pex",
],
)
pants publish ::
Expected behavior
Ignore target when repository not set
Setup (please complete the following information):
2.19.0
]In Pants v2.15 the following warnings appear:
17:40:13.76 [WARN] DEPRECATED: using `SubsystemRule(MdBookTool)` is scheduled to be removed in version 2.17.0dev0.
Use `*MdBookTool.rules()` instead.
17:40:13.80 [WARN] DEPRECATED: `pants.engine.environment.Environment` is scheduled to be removed in version 2.17.0.dev0.
Use `pants.engine.env_vars.EnvironmentVars`.
17:40:13.80 [WARN] DEPRECATED: `pants.engine.environment.EnvironmentRequest` is scheduled to be removed in version 2.17.0.dev0.
Use `pants.engine.env_vars.EnvironmentVarsRequest`.
17:40:13.82 [WARN] DEPRECATED: using `SubsystemRule(SkopeoTool)` is scheduled to be removed in version 2.17.0dev0.
Use `*SkopeoTool.rules()` instead.
17:40:13.82 [WARN] DEPRECATED: using `SubsystemRule(RuncTool)` is scheduled to be removed in version 2.17.0dev0.
Use `*RuncTool.rules()` instead.
17:40:13.82 [WARN] DEPRECATED: using `SubsystemRule(UmociTool)` is scheduled to be removed in version 2.17.0dev0.
Use `*UmociTool.rules()` instead.
17:40:13.86 [INFO] Initializing scheduler...
17:40:13.86 [WARN] DEPRECATED: Setting `Goal.environment_behavior=EnvironmentBehavior.UNMIGRATED` for `Goal` `decrypt` is scheduled to be removed in version 2.17.0.dev0.
See https://www.pantsbuild.org/v2.15/docs/plugin-upgrade-guide
This is an ongoing design to allow OCI containers to produce outputs that aren't full containers. There's three use-cases for this:
COPY --from
to make Pex workflows faster.The below is the current overall target design, with some omissions and estimates. Red nodes are commands. Green nodes are effects.
One clinch point I keep hitting is that not everything that can be moved from container-to-container is safe as a package. Thus, we need somewhere along the chain where we can split "packageable" and "non-packageable".
graph TD
oci_image_pull --> PullImageBundle
oci_image_build --- D[ ]:::empty
ImageLayer ---|0..N| D[ ]:::empty --> BuiltImageBundle
BuiltImageBundle --x ImageBundle
PullImageBundle --x ImageBundle
PEX[pex_binary, etc] --> BuiltArtifact
ImageBundle --> base
BuiltArtifact --> PackageLayer --> ImageLayer
base --- E[ ]:::empty --> oci_artifact_build --> OciArtifactLayer --> ImageLayer
command[/command/] --- E[ ]:::empty
base[/base/] --> oci_image_build
export>pants package]:::command --- F[ ]:::empty --> files:::effect;
OciArtifactLayer --- F
publish>pants publish]:::command --- G[ ]:::empty --> push:::effect;
ImageBundle --- G
classDef empty margin:0px,padding:0px,width:0px,height:0px,border:0px;
classDef command fill:#f96;
classDef effect fill:#9f6;
Describe the bug
Adding files
to OCI building doesn't use output_path
, which it likely should.
As with #69.
This makes it a lot nicer, and it apparently fixed some missing data in the publish.
A declarative, efficient, and flexible JavaScript library for building user interfaces.
๐ Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. ๐๐๐
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google โค๏ธ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.