-
Notifications
You must be signed in to change notification settings - Fork 142
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
refactor!: api for mounts and volumes #596
Merged
Merged
Conversation
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Closes #582 This is breaking change. The API was unclear, because `volumes` used to mean `bind-mounts`, which is wrong. Introduce `Mount` structure with the following mount types: - bind - volume - tmpfs Also exposes access-mode configuration for mounts: `rw` (read-write) and `ro` (read-only) *Note*: named volumes not getting removed once container is removed, it's intentional for now. Because named volumes can be used to persist a state. We can review this point later. ## Migration guide - If your `Image` implements `volumes` method: - rename method to `mounts` - wrap all existed "volumes" into `Mount::bind_mount(host_path, container_path)` - If your code uses `RunnableImage::with_volume` - replace the call with `RunnableImage::with_mount` - If your code uses `GenericImage::with_volume` - replace the call with `GenericImage::with_mount`
Merged
DDtKey
pushed a commit
that referenced
this pull request
Apr 27, 2024
## 🤖 New release * `testcontainers`: 0.15.0 -> 0.16.0 (⚠️ API breaking changes) ###⚠️ `testcontainers` breaking changes ``` --- failure constructible_struct_adds_private_field: struct no longer constructible due to new private field --- Description: A struct constructible with a struct literal has a new non-public field. It can no longer be constructed using a struct literal outside of its crate. ref: https://doc.rust-lang.org/reference/expressions/struct-expr.html impl: https://github.com/obi1kenobi/cargo-semver-checks/tree/v0.31.0/src/lints/constructible_struct_adds_private_field.ron Failed in: field ExecCommand.cmd_ready_condition in /tmp/.tmp8FBROu/testcontainers-rs/testcontainers/src/core/image/exec_command.rs:6 field ExecCommand.container_ready_conditions in /tmp/.tmp8FBROu/testcontainers-rs/testcontainers/src/core/image/exec_command.rs:7 --- failure enum_missing: pub enum removed or renamed --- Description: A publicly-visible enum cannot be imported by its prior path. A `pub use` may have been removed, or the enum itself may have been renamed or removed entirely. ref: https://doc.rust-lang.org/cargo/reference/semver.html#item-remove impl: https://github.com/obi1kenobi/cargo-semver-checks/tree/v0.31.0/src/lints/enum_missing.ron Failed in: enum testcontainers::core::env::Command, previously in file /tmp/.tmpkl2iBT/testcontainers/src/core/env.rs:36 --- failure function_missing: pub fn removed or renamed --- Description: A publicly-visible function cannot be imported by its prior path. A `pub use` may have been removed, or the function itself may have been renamed or removed entirely. ref: https://doc.rust-lang.org/cargo/reference/semver.html#item-remove impl: https://github.com/obi1kenobi/cargo-semver-checks/tree/v0.31.0/src/lints/function_missing.ron Failed in: function testcontainers::core::env::command, previously in file /tmp/.tmpkl2iBT/testcontainers/src/core/env.rs:4 --- failure inherent_method_missing: pub method removed or renamed --- Description: A publicly-visible method or associated fn is no longer available under its prior name. It may have been renamed or removed entirely. ref: https://doc.rust-lang.org/cargo/reference/semver.html#item-remove impl: https://github.com/obi1kenobi/cargo-semver-checks/tree/v0.31.0/src/lints/inherent_method_missing.ron Failed in: ContainerAsync::get_host_port, previously in file /tmp/.tmpkl2iBT/testcontainers/src/core/container_async.rs:68 ContainerAsync::get_host_port, previously in file /tmp/.tmpkl2iBT/testcontainers/src/core/container_async.rs:68 Container::get_host_port, previously in file /tmp/.tmpkl2iBT/testcontainers/src/core/container.rs:124 Container::get_host_port, previously in file /tmp/.tmpkl2iBT/testcontainers/src/core/container.rs:124 ContainerState::host_port, previously in file /tmp/.tmpkl2iBT/testcontainers/src/core/image.rs:120 GenericImage::with_volume, previously in file /tmp/.tmpkl2iBT/testcontainers/src/images/generic.rs:45 RunnableImage::inner, previously in file /tmp/.tmpkl2iBT/testcontainers/src/core/image.rs:163 RunnableImage::volumes, previously in file /tmp/.tmpkl2iBT/testcontainers/src/core/image.rs:183 RunnableImage::with_volume, previously in file /tmp/.tmpkl2iBT/testcontainers/src/core/image.rs:255 RunnableImage::inner, previously in file /tmp/.tmpkl2iBT/testcontainers/src/core/image.rs:163 RunnableImage::volumes, previously in file /tmp/.tmpkl2iBT/testcontainers/src/core/image.rs:183 RunnableImage::with_volume, previously in file /tmp/.tmpkl2iBT/testcontainers/src/core/image.rs:255 --- failure module_missing: pub module removed or renamed --- Description: A publicly-visible module cannot be imported by its prior path. A `pub use` may have been removed, or the module may have been renamed, removed, or made non-public. ref: https://doc.rust-lang.org/cargo/reference/semver.html#item-remove impl: https://github.com/obi1kenobi/cargo-semver-checks/tree/v0.31.0/src/lints/module_missing.ron Failed in: mod testcontainers::core::env, previously in file /tmp/.tmpkl2iBT/testcontainers/src/core/env.rs:1 mod testcontainers::clients, previously in file /tmp/.tmpkl2iBT/testcontainers/src/clients.rs:1 --- failure struct_missing: pub struct removed or renamed --- Description: A publicly-visible struct cannot be imported by its prior path. A `pub use` may have been removed, or the struct itself may have been renamed or removed entirely. ref: https://doc.rust-lang.org/cargo/reference/semver.html#item-remove impl: https://github.com/obi1kenobi/cargo-semver-checks/tree/v0.31.0/src/lints/struct_missing.ron Failed in: struct testcontainers::core::env::Os, previously in file /tmp/.tmpkl2iBT/testcontainers/src/core/env.rs:26 struct testcontainers::clients::Http, previously in file /tmp/.tmpkl2iBT/testcontainers/src/clients/http.rs:23 struct testcontainers::core::Port, previously in file /tmp/.tmpkl2iBT/testcontainers/src/core/image.rs:312 struct testcontainers::clients::Cli, previously in file /tmp/.tmpkl2iBT/testcontainers/src/clients/cli.rs:22 --- failure struct_pub_field_missing: pub struct's pub field removed or renamed --- Description: A publicly-visible struct has at least one public field that is no longer available under its prior name. It may have been renamed or removed entirely. ref: https://doc.rust-lang.org/cargo/reference/semver.html#item-remove impl: https://github.com/obi1kenobi/cargo-semver-checks/tree/v0.31.0/src/lints/struct_pub_field_missing.ron Failed in: field cmd of struct ExecCommand, previously in file /tmp/.tmpkl2iBT/testcontainers/src/core/image.rs:101 field ready_conditions of struct ExecCommand, previously in file /tmp/.tmpkl2iBT/testcontainers/src/core/image.rs:103 --- failure struct_pub_field_now_doc_hidden: pub struct field is now #[doc(hidden)] --- Description: A pub field of a pub struct is now marked #[doc(hidden)] and is no longer part of the public API. ref: https://doc.rust-lang.org/rustdoc/write-documentation/the-doc-attribute.html#hidden impl: https://github.com/obi1kenobi/cargo-semver-checks/tree/v0.31.0/src/lints/struct_pub_field_now_doc_hidden.ron Failed in: field ExecCommand.cmd in file /tmp/.tmp8FBROu/testcontainers-rs/testcontainers/src/core/image/exec_command.rs:4 --- failure trait_method_missing: pub trait method removed or renamed --- Description: A trait method is no longer callable, and may have been renamed or removed entirely. ref: https://doc.rust-lang.org/cargo/reference/semver.html#major-any-change-to-trait-item-signatures impl: https://github.com/obi1kenobi/cargo-semver-checks/tree/v0.31.0/src/lints/trait_method_missing.ron Failed in: method volumes of trait Image, previously in file /tmp/.tmpkl2iBT/testcontainers/src/core/image.rs:70 method volumes of trait Image, previously in file /tmp/.tmpkl2iBT/testcontainers/src/core/image.rs:70 --- failure trait_missing: pub trait removed or renamed --- Description: A publicly-visible trait cannot be imported by its prior path. A `pub use` may have been removed, or the trait itself may have been renamed or removed entirely. ref: https://doc.rust-lang.org/cargo/reference/semver.html#item-remove impl: https://github.com/obi1kenobi/cargo-semver-checks/tree/v0.31.0/src/lints/trait_missing.ron Failed in: trait testcontainers::core::env::GetEnvValue, previously in file /tmp/.tmpkl2iBT/testcontainers/src/core/env.rs:20 ``` <details><summary><i><b>Changelog</b></i></summary><p> <blockquote> ## [0.16.0] - 2024-04-27 ### Details #### Bug Fixes - Use the binds option instead of volumes for mounts ([#581](#581)) #### Documentation - Mention a way to preserve running containers ([#586](#586)) #### Features - Support for docker cli flag `--add-host` ([#547](#547)) - Allow to override args in a `RunnableImage` ([#558](#558)) - Add `name` parameter to `RunnableImage` ([#549](#549)) - [❗] Container-centric API with refactored underlying layer ([#575](#575)) - Add ability to pull-image explicitly ([#579](#579)) #### Miscellaneous Tasks - Remove `spectral` from `dev-dependencies` ([#526](#526)) - Update reqwest requirement from 0.11.14 to 0.12.3 ([#569](#569)) - Update bollard and bollard-stubs ([#574](#574)) - Reuse workspace level configs ([#568](#568)) #### Refactor - [❗] Api for mounts and volumes ([#596](#596)) #### Styling - Derive `Default` to fix clippy lint ([#525](#525)) - Actualize formatting configs ([#567](#567)) - Enable `StdExternalCrate` grouping </blockquote> </p></details> --- This PR was generated with [release-plz](https://github.com/MarcoIeni/release-plz/). Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Closes #582
This is breaking change.
The API was unclear, because
volumes
used to meanbind-mounts
, which is wrong.Introduce
Mount
structure with the following mount types:Also exposes access-mode configuration for mounts:
rw
(read-write) andro
(read-only)Note: named volumes not getting removed once container is removed, it's intentional for now. Because named volumes can be used to persist a state. We can review this point later.
Migration guide
Image
implementsvolumes
method:mounts
Mount::bind_mount(host_path, container_path)
RunnableImage::with_volume
RunnableImage::with_mount
GenericImage::with_volume
GenericImage::with_mount