Skip to content

Releases: shuttle-hq/shuttle

cargo-shuttle v0.25.1

28 Aug 16:13
9dd4bbf
Compare
Choose a tag to compare

cargo-shuttle: v0.25.1 update

Bug fixes

  • Fixed a bug where cargo-shuttle failed to install on Windows, due to a missing feature flag.

All commits

Full Changelog: v0.25.0...v0.25.1

v0.25.0

28 Aug 13:05
dbb468d
Compare
Choose a tag to compare

Shuttle: v0.25.0 update

We're excited to release shuttle v0.25.0! 🚀

  • Bumped our Rust version to 1.72.0. MSRV for compiling cargo-shuttle is still 1.70.0.
  • New resource: shuttle-metadata can be used to fetch your current service name at runtime. In the future, we aim to extend this resource with more information about your service, like the public URL. Thanks @sd2k for the initiative!
  • Developing Shuttle locally is now easier! We moved the relevant instructions to DEVELOPING.md, and improved the Docker build caching, resulting in up to 5x faster make images.
  • shuttle-aws-rds now has feature flags for using rustls. (Enables corresponding feature in sqlx)
  • cargo shuttle project start now warns you if the idle minutes flag is not 0.

Contributions

New Contributors

Upgrading

To upgrade your shuttle CLI, run: cargo install cargo-shuttle, or if you’re using cargo-binstall, cargo binstall cargo-shuttle.

It is also recommended to upgrade your project’s shuttle-* dependencies in Cargo.toml:

shuttle-runtime = "0.25.0"
# etc

If you’d like to upgrade your project container, run the restart project command. This will not delete any databases, and you will keep your project name:

cargo shuttle project restart

Finally, redeploy your shuttle service:

cargo shuttle deploy

All commits

  • fix: unused sqlx dep by @oddgrd in #1157
  • [Improvement]: Add list, remove, clear, and size operations to shuttle-persist by @sentinel1909 in #1066
  • chore: Update labels by @jonaro00 in #1161
  • chore: improve development docs & scripts by @jonaro00 in #1156
  • gateway: fix custom domains request/renew APIs by @iulianbarbu in #1158
  • feat: add service-info resource to obtain Shuttle service info by @sd2k in #1129
  • refactor: reduce noise in honeycomb by @chesedo in #1142
  • chore(resources): rename service-info to metadata by @orhun in #1165
  • Add suggestion to 'project not ready' error message by @beyarkay in #1169
  • refactor: Containerfile+Makefile improvement: build crates together, then distribute the binaries by @jonaro00 in #1164
  • ci: refactor and improve speed and caching. add rustls flags to aws-rds by @jonaro00 in #1167
  • feat: add idle timeout warning after a deploy by @christos-h in #1116
  • chore: simplify contributor list, make it easy to update by @jonaro00 in #1170
  • chore: Rust 1.72.0 by @jonaro00 in #1176
  • chore: v0.25.0 by @oddgrd in #1175

Full Changelog: v0.24.0...v0.25.0

chore: v0.24.0 (#1153)

16 Aug 14:25
5fe4f5c
Compare
Choose a tag to compare

Shuttle: v0.24.0 update

We're excited to release shuttle v0.24.0! 🚀

Bug fixes

  • Fixed a bug where the shuttle-secrets did not update on project deployment: #1150
  • Fixed a bug where the shuttle-static-folder did not update on project deployment: #1151
  • Fixed a bug where the API response for project information is missing the creation timestamp information, which should be visible in the shuttle-console : #1141

Contributions

  • @AlphaKeks added support to inject a custom tracing layer to Shuttle services. This was showcased in the shuttle-examples/tracing: #1027
  • @Luna2141 fixed the redirect from the old login page to the console login page when a user login is done through cargo-shuttle: #1069

Considerations

  • The bug fix shipped for shuttle-secrets takes effect after upgrading your project dependency on shuttle-runtime to 0.24.0.
  • The bug fix for shuttle-static-folder takes effect if you upgrade yourshuttle-static-folder dependency to 0.24.0.

Upgrading

To upgrade your shuttle CLI, run: cargo install cargo-shuttle, or if you’re using [cargo-binstall](https://github.com/cargo-bins/cargo-binstall), cargo binstall cargo-shuttle.

If you’d like to upgrade your project container, run the restart project command. This will not delete any databases, and you will keep your project name:

cargo shuttle project restart

Finally, redeploy your shuttle service:

cargo shuttle deploy

v0.23.0

07 Aug 11:43
609411c
Compare
Choose a tag to compare

Shuttle: v0.23.0 update

We're excited to release shuttle v0.23.0! 🚀

Bug fixes

  • Fixed a bug where the shuttle-next runtime binary was not being installed in the project container image, leading to failing deploys of shuttle-next projects.
  • Fixed a bug where MongoDB shared database data was not persisted between project restarts.

Contributions

Upgrading

To upgrade your shuttle CLI, run: cargo install cargo-shuttle, or if you’re using [cargo-binstall](https://github.com/cargo-bins/cargo-binstall), cargo binstall cargo-shuttle.

If you’d like to upgrade your project container, run the restart project command. This will not delete any databases, and you will keep your project name:

cargo shuttle project restart

Finally, redeploy your shuttle service:

cargo shuttle deploy

Commits for this release

New Contributors

Full Changelog: v0.22.0...v0.23.0

v0.22.0

02 Aug 09:57
0a78f36
Compare
Choose a tag to compare

shuttle: v0.22.0 update

We're excited to release shuttle v0.22.0! 🚀

Updated sqlx version in Shuttle databases

We have upgraded the version of sqlx in shuttle_shared_db and shuttle_aws_rds to 0.7.1. This means if you upgrade your version of these resources, you will have to also upgrade the version of sqlx in your application.

Improved the shuttle deploy GitHub action

The https://github.com/shuttle-hq/deploy-action has been greatly improved, with the installation step reduced from minutes to ~4 seconds in shuttle-hq/deploy-action#11, and with some new input options being added that can also reduce deploy times.

Bug fixes

  • Fixed a bug where the deployer was not receiving logs from the runtime.
  • Shuttle service functions (the function annotated with [shuttle_runtime::main]) can now be named main.
  • Fixed a bug where windows was not always shutting down runtimes correctly for local runs that were interrupted by e.g. CTRL + C (thanks @Shubham8287!).

Contributions

Upgrading

To upgrade your shuttle CLI, run: cargo install cargo-shuttle, or if you’re using cargo-binstall, cargo binstall cargo-shuttle.

If you’d like to upgrade your project container, run the restart project command. This will not delete any databases, and you will keep your project name:

cargo shuttle project restart

Finally, redeploy your shuttle service:

cargo shuttle deploy

Commits for this release

New Contributors

Full Changelog: v0.21.0...v0.22.0

v0.21.0

10 Jul 08:59
c334a1c
Compare
Choose a tag to compare

shuttle: v0.21.0 update

We're excited to release shuttle v0.21.0! 🚀

Bug fixes

  • Fixed a bug where deploying a project with an RDS database was reporting deployment failure in the CLI when the deployment was waiting for the RDS instance to be ready in #1068
  • Fixed a bug where trailing slashes were normalized away from the paths of requests to the gateway proxy in #1074

Contributions

  • @ShouvikGhosh2048 added a check for source-code archive size in the client to warn users from trying to deploy a project that is larger than the 50MB size limit in #1070
  • @beyarkay eased the getting started experience by including --allow-dirty in the suggestion for how to deploy following cargo shuttle init in #1076
  • @RobWalt updated the path to the examples submodule to match the updated repo name in #1049

Upgrading

After this update if your restart your project (restarting will automatically update your container) you will also need to upgrade your shuttle dependencies to 0.21.0 before you can deploy again.

To upgrade your shuttle CLI, run: cargo install cargo-shuttle, or if you’re using [cargo-binstall](https://github.com/cargo-bins/cargo-binstall), cargo binstall cargo-shuttle.

If you’d like to upgrade your project container, run the restart project command. This will not delete any databases, and you will keep your project name:

cargo shuttle project restart

Finally, redeploy your shuttle service:

cargo shuttle deploy

Commits for this release

New Contributors

Full Changelog: v0.20.0...v0.21.0

v0.20.0

28 Jun 11:40
bf0365a
Compare
Choose a tag to compare

shuttle: v0.20.0 update

We're excited to release shuttle v0.20.0! 🚀

Turso integration

Turso is a new sqlite-based edge database and we’re excited to announce a Shuttle resource integration for it. This is the first iteration of this integration, so it comes with some caveats. The first one is that it is not yet possible for us to provision a Turso database for you, so you need to refer to their docs and do that yourself for now. It should also be noted that you can host a Turso database anywhere, but currently your Shuttle service can only be hosted in London.

Thanks to @Kazy from the Shuttle batch for this integration!

Deployment archive size limits

We have added a 50MB size limit to deployments, meaning the archive of your source code (which includes static folder) can not be larger than 50MB or deploy will fail with a 413 error. This measure is intended to defend against large request body DoS attacks, so if you have a normal project and encounter the 413 error please let us know and we will consider increasing the limit.

Git metadata for deployments

The cargo shuttle deployment --list command will now include git metadata like the commit message of the current commit at the time of deploy, as well as branch name etc. Thanks to @Fuzzicles for a great first contribution to Shuttle!

Bug fixes

  • Fixed a bug where many users were hitting the request body limit in deploy due to .git repositories being included in archive in #1036
  • Fixed a bug where users with a global target directory got a “file not found” error - #1039
  • Fixed a bug where windows users got a “file not found” error - #1039
  • Fixed a bug where timezones were incorrectly displayed in logs output - #1032

The eighth and final week of Shuttle Batch 2023

The Shuttle batch has reached its conclusion. We had a lot of great contributions in this last week, and we also have several larger pull requests from the batch in the pipeline. We’d like to express our appreciation to all the participants of this event, thank you all for being a part of this!

  • @jonaro00 fixed two bugs in #1039, one affecting users with a global target directory, and one affecting windows users.
  • @jonaro00 excluded the .git repository of projects from the deployment archive to avoid sending these large files that aren’t used, and that caused users with normal projects to encounter the 413 error in deployer in #1036
  • @jonaro00 made some improvements to the shuttle runtime in #1012
  • @jonaro00 cleaned up the shuttle-service dependencies and did some general clean up of code in #1013
  • @jonaro00 cleaned up our CI config and dockerfile in #989
  • @Kazy fixed some sporadically failing tests in the deployer in #980
  • @jonaro00 fixed some issues with windows local runs in #1054

Other contributions

Upgrading

To upgrade your shuttle CLI, run: cargo install cargo-shuttle, or if you’re using [cargo-binstall](https://github.com/cargo-bins/cargo-binstall), cargo binstall cargo-shuttle.

If you’d like to upgrade your project container, run the restart project command. This will not delete any databases, and you will keep your project name:

cargo shuttle project restart

Finally, redeploy your shuttle service:

cargo shuttle deploy

Commits for this release

  • fix: remove vendored-openssl from CI and broken axum test by @oddgrd in #1021
  • fix: cargo-generate needs openssl by @oddgrd in #1023
  • fix: increase body size limit for deploy by @oddgrd in #1031
  • fix: Don't deploy .git folder to save space by @jonaro00 in #1036
  • chore: cargo-shuttle v0.19.1 by @oddgrd in #1037
  • Fix(common): format logs in correct local timezone by @timonv in #1032
  • fix: Target directory from config, Windows .exe suffix by @jonaro00 in #1039
  • feat: add new deployment metadata to table by @Fuzzicles in #987
  • build(shell.nix): add openssl package to the build dependencies by @timonv in #1040
  • fix(runtime): Remove 2s startup sleep by @jonaro00 in #1012
  • chore: move codegen::main from service to runtime by @jonaro00 in #1013
  • fix: dockerfile and ci improvements by @jonaro00 in #989
  • fix: windows local run + log clarifications by @jonaro00 in #1054
  • Attempt at fixing sporadic failures of shuttle-deployer by @Kazy in #980
  • gateway: status check includes info about auth & provisioner by @iulianbarbu in #1056
  • feat(resources): add support for turso client w/o provisioning by @Kazy in #996
  • Chore/v0.20.0 by @oddgrd in #1057

Full Changelog: v0.19.0...v0.20.0

v0.19.0

20 Jun 12:13
183a81e
Compare
Choose a tag to compare

shuttle: v0.19.0 update

We're excited to release shuttle v0.19.0! 🚀

Upgraded to Rust 1.70

Our deployers (the containers in which your service will be built and ran) have a pinned version of Rust. This has now been upgraded to 1.70, thanks @iamwacko from the Shuttle batch!

Init from any template

Our cargo shuttle init command has been refactored to now clone templates from github repositories. To get a hello world example from our repository, you can simply run:
cargo shuttle init -t axum.

You can also initialize a project from any template by passing in the url of any repository and the sub-folder you want to clone. Below is an example of how you would init an axum project from our websocket example.

cargo shuttle init --from https://github.com/shuttle-hq/shuttle-examples.git --subfolder axum/websocket

Thanks to @paulotten and @jonaro00 from the Shuttle batch for this great new functionality!

The sixth and seventh weeks of Shuttle Batch 2023

The Shuttle batch is nearing the end, but their contributions are still forming the majority of this release. We also have several large batch contributions implementing new features like DynamoDB, Turso and Sqlite in the pipeline.

  • @iamwacko updated our pinned version of Rust to 1.70 and fixed some new clippy lints in #967
  • @iamwacko removed the cargo dependency of the builder #922
  • @jonaro00 fixed a bug where the cargo shuttle logs --latest was returning the oldest deployment’s logs due to the order being flipped in the recent pagination PR in #982
  • @hseeberger and @jonaro00 added some relevant git data to the metadata of deployments, in #943. This will be very useful in our upcoming console!
  • @iamwacko refactored the Shuttle codebase to use rustls rather than native-tls with openssl in #879
  • @paulotten refactored our init code to rather clone examples from our repository using the cargo-generate crate under the hood in #888
  • @jonaro00 implemented IntoIter for our secretstore in #1006

Other contributions

Upgrading

To upgrade your shuttle CLI, run: cargo install cargo-shuttle, or if you’re using [cargo-binstall](https://github.com/cargo-bins/cargo-binstall), cargo binstall cargo-shuttle.

If you’d like to upgrade your project container, run the restart project command. This will not delete any databases, and you will keep your project name:

cargo shuttle project restart

Finally, redeploy your shuttle service:

cargo shuttle deploy

Commits in this release

New Contributors

  • @lecoqjacob made their first contribution in #993

Full Changelog: v0.18.0...v0.19.0

v0.18.0

05 Jun 10:44
f2a3c4d
Compare
Choose a tag to compare

shuttle: v0.18.0 update

We're excited to release shuttle v0.18.0! 🚀

Removal of protoc requirement

With the last of our upstream crates upgraded to no longer need protoc available at compile-time, installingprotoc will no longer be required to install or use Shuttle! 🥳

Pagination of list commands

Two of our list commands can now be paginated, namely project list and deployment list. These commands will now by default fetch the 10 latest deployments, a --page 2 flag can then be passed to fetch the next 10 deployments, and so on. The limit of how many to fetch per page can also be configured with the --limit flag.

Thanks to @AlphaKeks and @Kazy from the Shuttle batch for this feature! PR: #862

Sanitizing paths in our proxy layer

@chesedo developed and published a new crate, [tower-sanitize-path](https://crates.io/crates/tower-sanitize-path), for sanitizing paths with tower, and implemented it in our proxy layer to protect users against path traversals in #946

The fourth and fifth weeks of Shuttle Batch 2023

The Shuttle batch continues with a lot of great contributions! We’ve also seen tremendous progress on larger tickets, so keep your eyes peeled for some larger new features in the next releases! Here are the batch contributions for the last two weeks:

Other contributions

  • @orhun updated our lockfile in #942
  • @beyarkay improved the panic message in the event where the shuttle-runtime port is already taken in #950
  • @imor fixed an issue where cargo-shuttle commands that were passed --name could not be ran outside a cargo project in #929
  • @imor added a tracing::debug! call to cargo-shuttle to output which files are archived for deployment in #931

Upgrading

To upgrade your shuttle CLI, run: cargo install cargo-shuttle, or if you’re using [cargo-binstall](https://github.com/cargo-bins/cargo-binstall), cargo binstall cargo-shuttle.

If you’d like to upgrade your project container, run the restart project command. This will not delete any databases, and you will keep your project name:

cargo shuttle project restart

Finally, redeploy your shuttle service:

cargo shuttle deploy

Commits for this release

  • feat(shuttle-axum) Make AxumService generic to be able to use state by @morlinbrot in #924
  • docs: Update links and commands by @jonaro00 in #948
  • misc: Update GitHub templates by @jonaro00 in #945
  • Update Cargo.lock by @orhun in #942
  • Add helpful error if port cannot be used by @beyarkay in #950
  • fix: --name was ignored when not running from cargo folder by @imor in #929
  • chore: bump otel crates and remove protoc dep by @oddgrd in #956
  • fix: log files packed in archive by @imor in #931
  • refactor: sanitize all path on the user's proxy by @chesedo in #946
  • feat(gateway, cargo-shuttle): implement pagination for project list by @AlphaKeks in #862
  • fix: crossterm/comfytable conflict by @oddgrd in #959
  • feat: pre-installed build environment in deployer by @jonaro00 in #960
  • refactor: un-tangle crossterm/comfytable by @oddgrd in #961
  • fix: Ignore span logs below WARN by @jonaro00 in #958
  • fix: remove cargo-sort from CONTRIBUTING.md by @paulotten in #966
  • fix/release(prod): unstable AWS creds clashed with prod by @iulianbarbu in #970
  • chore: v0.18.0 by @oddgrd in #972

New Contributors

Full Changelog: v0.17.0...v0.18.0

v0.17.0

23 May 07:46
5b9885c
Compare
Choose a tag to compare

shuttle: v0.17.0 update

We're excited to release shuttle v0.17.0! 🚀

Second and third week of Shuttle Batch 2023

We are extremely excited to see how the batch participants progress on the small and medium-sized projects. We had all round contributions and enjoyed seeing the participants taking the lead and clarifying their projects with the maintainer team, seeking the biggest impact. We are very happy to see the help they offer to each other, the encouraging words, and the team spirit that makes them push through. Thanks to everyone and we’re looking forward to seeing more of this!

As for the contributions, here is the list:

  • @iamwacko added an optional flag to allow not running our local development environment in detached mode in #878
  • @XaviFP fixed a broken link in our codegen errors in #885
  • @utterstep added a feature-flag to shuttle-shared-db to allow users to use rustls rather than native-tls if they want to in #870
  • @SyedFasiuddin upgraded our codegen to syn 2.0 in #880
  • @paulotten upgraded our aws sdk crates in #897
  • @piewhat removed the cargo dependency from deployer, and also refactored the test run on deploys to show the output of failed tests in #907
  • @jonaro00 and @hseeberge1r implemented a new feature that allows users to reset their api-keys, which is useful if you leaked your key, in #857
  • @SyedFasiuddin contributed to adding next logical suggestions for various cargo-shuttle commands: #915.

Other contributions

  • @arturaz improved the performance of our JwtAuthentication layer by manually implementing Future for it in #868
  • @kierendavies removed the clap dependency from shuttle-runtime, replacing it with a declarative macro, ensuring we don’t leak the clap dependency to users projects in #822
  • @figsoda added hyper-reverse-proxy as a workspace dependency ****used by both the deployer and gateway in #921
  • @merlinbrot added an awesome request-scheduler example showcasing how to do cron-like schedules for accessing a URL in shuttle-hq/shuttle-examples#47
  • @joshua-mo-143 added a SaaS full-stack application powered by Next.js and Shuttle: shuttle-hq/shuttle-examples#50.

cargo-shuttle is now packaged for Arch Linux

@orhun has packaged cargo-shuttle for Arch Linux, and he has graciously volunteered to keep the package updated. He added installation instructions to our readme in #902 Thanks!

You can now install cargo-shuttle on Arch Linux with pacman:

pacman -S cargo-shuttle

Shuttle Salvo integration version bump

shuttle-salvo has been upgraded to v0.41, this means that to use version 0.17.0 of shuttle-salvo you’ll also need to update your project to use the new version.

Upgrading

To upgrade your shuttle CLI, run: cargo install cargo-shuttle, or if you’re using [cargo-binstall](https://github.com/cargo-bins/cargo-binstall), cargo binstall cargo-shuttle.

If you’d like to upgrade your project container, run the restart project command. This will not delete any databases, and you will keep your project name:

cargo shuttle project restart

Finally, redeploy your shuttle service:

cargo shuttle deploy