Releases: shuttle-hq/shuttle
v0.28.0
Shuttle: v0.28.0 update
We're excited to release shuttle v0.28.0! 🚀
New project container image
When restarting your project, your project container will now run a Debian 12 image (previously Debian 10). We don’t expect this upgrade to cause problems for users, but let us know if you experience any deployment issues after this bump, and we will do our best to fix it quickly.
Installer script
Linux and Mac users can now install and update cargo-shuttle
using this handy script. We also aim to make this compatible for Windows users in the future.
curl -sSfL https://www.shuttle.rs/install | bash
Removed cargo-generate
dependency 💎
We now use a homegrown method for cloning templates with the cargo shuttle init
command. This means cargo-shuttle
is now more oxidized (free from openssl dependencies), and will compile a bit faster. Thanks @d4ckard for the contribution, and congrats on claiming the $100 bounty on this issue! 🥳
More version warnings and project name checks
A common source of errors is mismatching versions between the CLI, the Shuttle runtime, and the Shuttle deployer. We added more warnings to cargo-shuttle
when it detects any mismatching versions. You can read more about Shuttle versions in the docs.
Furthermore, when running the init
command interactively, the chosen project name will be checked against the API, and re-prompt you if it is already taken. Using the --name
argument does not perform this check.
Please let us know about difficulties you encounter when using Shuttle. We are always trying to smooth out rough edges that users commonly face.
Other updates
- Better handling of project state drift.
- Project are compressed slightly more before deploying, so that you can squeeze in a couple more bytes in large projects.
- Updated handling of config files after cloning a template.
- The spinner when stopping or starting a project updates with a larger interval to not spam the API.
- [Experimental] Deployer image now has the linkers
lld
at/usr/bin/ld.lld
andmold
at/usr/bin/mold
.
Contributions
- Local run will ask you about using a different port if the chosen port is already occupied. Thanks @BadgerBloke!
- Removed
cargo-generate
dependency. @d4ckard - Fix the Shuttle stack starting locally on Mac M1. @AlexCzar
Upgrading
Refer to the upgrading docs for how to upgrade your projects.
Commits in this release
- fix(deployer): handle gracefully builder connection failure by @iulianbarbu in #1264
- ci: reduce shortest path in publish flow by @jonaro00 in #1265
- feat(ci): separation of tests that need docker by @jonaro00 in #1249
- feat(builder): improve the nix build capturing of stdout/stderr by @orhun in #1268
- bug: projects' states drifting by @chesedo in #1262
- feat(orchestrator): initialize shuttle-orchestrator as a library by @orhun in #1271
- feat(cargo-shuttle): better compression & handling of config files after init by @jonaro00 in #1257
- chore(docker): set up a local shared postgres for development by @orhun in #1272
- fix(docker-compose.dev): adjust auth dev dependency by @iulianbarbu in #1274
- feat: version checks between cli, gateway, deployer, runtime by @jonaro00 in #1275
- fix(cargo-shuttle): prompt for new port if port is taken by @BadgerBloke in #1270
- fix(cargo-shuttle): spam less requests when waiting for project ready by @jonaro00 in #1287
- refactor(cargo-shuttle): remove
cargo-generate
dependency by @d4ckard in #1281 - fix: gateway container startup on apple m1 by @AlexCzar in #1284
- ci: separate ci and unstable jobs, better caching by @jonaro00 in #1273
- feat(cargo-shuttle): check project name available by @jonaro00 in #1279
- feat: use smaller+newer images, script for patches, unique binary names by @jonaro00 in #1247
- feat: add lld and mold linkers by @jonaro00 in #1286
- fix(deployer): added runtime error handling by @iulianbarbu in #1231
- feat(installer): add installer script by @orhun in #1280
- docs: add installer script option by @jonaro00 in #1290
- fix: cleanup for 0.28.0 by @jonaro00 in #1278
- fix(gateway): install curl for health checks by @oddgrd in #1291
- chore: v0.28.0 by @oddgrd in #1293
New Contributors
- @BadgerBloke made their first contribution in #1270
- @AlexCzar made their first contribution in #1284
Full Changelog: v0.27.0...v0.28.0
v0.27.0
Shuttle: v0.27.0 update
We're excited to release shuttle v0.27.0! 🚀
shuttle-static-folder deprecated
It is now much easier to include and serve files in your deployment. The main change is that binaries are now executed with the working directory set to your project’s workspace root, the same way that cargo runs it locally. This means that all relative paths in your code will work correctly, and that shuttle-static-folder
is no longer needed. Check out how the Axum static folder example is simplified:
// Before 0.27.0
#[shuttle_runtime::main]
async fn axum(
#[shuttle_static_folder::StaticFolder(folder = "assets")] static_folder: PathBuf,
) -> shuttle_axum::ShuttleAxum {
let router = Router::new()
.nest_service("/assets", ServeDir::new(static_folder));
// ...
}
// After 0.27.0
// shuttle-static-folder can be removed from Cargo.toml
#[shuttle_runtime::main]
async fn axum() -> shuttle_axum::ShuttleAxum {
let router = Router::new()
.nest_service("/assets", ServeDir::new(PathBuf::from("assets")));
// ...
}
Including files in deployments
When you deploy, all source files that are not ignored by .gitignore
or .ignore
are uploaded to Shuttle. If you have ignored files that you want to upload as well, you would previously have had to add a !
-rule to .ignore
. This approach had a few caveats and was a bit convoluted.
Now, you can tell Shuttle which files to include in Shuttle.toml
in the project/workspace root:
### Shuttle.toml
# Declare ignored files that should be included in deployment:
assets = [
"file.txt", # include file.txt
"frontend/dist/*", # include all files and subdirs in frontend/dist/
"static/*", # include all files and subdirs in static/
]
Deploying build artifacts & build environment variables
The changes above make it easier to add arbitrary binaries/libraries/files that your app needs during compile or run time. They also allow for easier customization of the build process. By including the file .cargo/config.toml
in your deploy, you can set cargo or rustc options to use during compile time. For example, using the env field lets you set env vars during compile time.
shuttle-persist now persists data between project restarts
This refactor also makes it easier for adding other file-based persistent storage, such as SQLite. Let us know on Discord if you are interested in this type of feature.
More metadata in shuttle-metadata
The new struct returned now contains the fields env
, project_name
, service_name
, storage_path
.
Other updates
- The image used for local runs with the
shuttle-shared-db
resource now uses PostgreSQL version 14, this matches the version used in deployment. - More
cargo shuttle
commands now give better suggestions for what to do if a command fails. - With this release, we are testing out a new builder service behind the scenes. We will try to build every deployment with the new builder in parallel with the normal deployment to see how well it builds projects. This builder will eventually allow more build customization, and faster builds.
Contributions
- @beyarkay added a helpful error message when Docker is not running during a local run that needs it.
- @lecoqjacob updated the postgres version for local runs with
shuttle-shared-db
. - @DitherWither added CI for clippy and fmt to
shuttle-examples
.
Upgrading
Refer to the upgrading docs for how to upgrade your projects.
Commits for this release
- feat(cargo-shuttle): add suggestions in case of cmd failures by @iulianbarbu in #1245
- feat: builder service by @chesedo in #1244
- feat: execute projects from within workspace, deprecate shuttle-static-folder, make persist persistent, more metadata by @jonaro00 in #1050
- feat(deployer): connect deployer to builder service by @oddgrd in #1248
- fix(cargo-shuttle): secrets project requires a Secrets.toml by @iulianbarbu in #1250
- feat(builder): update tracing logs by @jonaro00 in #1252
- Add helpful error message on docker container error by @beyarkay in #951
- fix: default network subnet overlap by @oddgrd in #1254
- fix: metadata re-export by @jonaro00 in #1255
- chore: bump local pgsql from 11 to 14 by @lecoqjacob in #1073
- bug: project entering a state loop by @chesedo in #1260
- feat(deployer): send deployment archive to the builder by @iulianbarbu in #1253
- chore: v0.27.0 by @oddgrd in #1261
Full Changelog: v0.26.0...v0.27.0
v0.26.0
Shuttle: v0.26.0 update
We're excited to release shuttle v0.26.0! 🚀
New Logger Service
cargo shuttle project restart
) will make all logs from prior deployments inaccessible! See the details below for how to save your old logs if you need them.
This release features a big refactor of how we handle logs. The result? Fancier and more detailed logs from our side, and much more freedom in how you handle your logging.
- Everything that your app prints to stdout now shows up in the logs. This means that you can do some logging quickly with just
println!()
. - The default
tracing
subscriber that we initialize behind the scenes is now a default feature ofshuttle-runtime
, and can be disabled by disabling default features. - The filter in the default subscriber is
RUST_LOG="info,shuttle=trace"
. You can override these levels on a local run by setting theRUST_LOG
variable. The other alternative, which is required for modifying the log levels in a Shuttle deployment, is by dropping the default tracing layer and implementing your own, with a specific level filter of your choosing. shuttle-next
projects have a default tracing subscriber too, but this can not be opted out for the moment.- Disabling the default subscriber allows you to set up your own tracing subscriber, for example:
// In your Cargo.toml
shuttle-runtime = { version = "0.26.0", default-features = false }
tracing = "0.1.37"
tracing-subscriber = "0.3.17"
// In your Shuttle main function.
tracing_subscriber::fmt()
.with_env_filter(
EnvFilter::builder()
.with_default_directive(LevelFilter::INFO.into())
.from_env_lossy(),
)
.init();
tracing::info!("tracing is initialized");
Other updates
cargo shuttle init
: Interactive mode now warns you if the directory of choice is not empty & improved handling of the path argument. #1198- Simplified the
shuttle-persist
API by removing an explicit lifetime in the error enum. #1195
Contributions
- @d4ckard Improved the error message you get when running
cargo shuttle project start
on an already running project. #1192 #1194 - @sentinel1909 Updated
shuttle-persist
documentation. #1184 shuttle-hq/shuttle-docs#180 - @sentinel1909 Added
shuttle-metadata
documentation. shuttle-hq/shuttle-docs#181 - @auipga Corrected the databases tutorial. shuttle-hq/shuttle-docs#175
- @melkir Cleaned up our Makefile. #1196
Considerations
- If you do a
cargo shuttle project restart
or acargo shuttle project stop
followed by astart
, you will not be able to access logs from before the restart. If you want to retain your old logs, you can do acargo shuttle logs
before restarting and then persist the output to a local file. - If you upgrade the
cargo-shuttle
CLI you will have to upgrade your deployer by doing acargo shuttle project restart
, since it will expect to receive the updated output fromcargo shuttle logs
. If you upgraded the CLI but you’re not ready to restart your project, you can downgrade the CLI again. - If you restart your project with a
cargo shuttle project restart
your project container will be upgraded. You will then have to upgrade yourcargo-shuttle
CLI, since it will receive logs in a new format from the updated project container.
Upgrading
Refer to the upgrading docs for how to upgrade your projects.
Commits for this release
- feat: merge logger service from feat/shuttle-runtime-scaling by @oddgrd in #1139
- deployer: update logs APIs to fetch the logs from shuttle-logger by @iulianbarbu in #1143
- logger: store span names by @iulianbarbu in #1166
- logger: adjust logger to receive logs blobs by @iulianbarbu in #1172
- feat(deployer): send runtime logs to the logger service by @orhun in #1173
- refactor: remove tracing from runtime by @chesedo in #1185
- refactor: remove println from shuttle-logger by @chesedo in #1186
- feat(runtime): write next runtime logs to stdout by @orhun in #1187
- refactor(runtime): replace trace with println by @orhun in #1190
- feat: logs batching by @chesedo in #1188
- Create the local setup for replacing shuttle-logger sqlite with postgres by @iulianbarbu in #1145
- feat(gateway): special error if own project is already running by @d4ckard in #1192
- chore: update readme with new persist methods by @sentinel1909 in #1184
- fix(persist): don't use lifetime in error by @jonaro00 in #1195
- feat(gateway): inform project owner about running state by @d4ckard in #1194
- chore(gateway): stop setting
RUST_LOG
in deployers by @orhun in #1197 - feat(deployer): StateChangeLayer, DeploymentLogLayer, new log item structure by @jonaro00 in #1171
- bug: service name being unknown by @chesedo in #1202
- feat(cargo-shuttle): prompt for init path when not given, warn if init dir not empty by @jonaro00 in #1198
- chore(changelog): add git-cliff configuration by @orhun in #1200
- feat: remove publish steps from the Makefile by @melkir in #1196
- feat(runtime): set up a tracing-subscriber as a default feature by @orhun in #1203
- test(deployer): fixed deployer tests and removed unnecessary runtime logger_uri arg by @iulianbarbu in #1204
- chore(services): disable default features for shuttle-runtime by @orhun in #1205
- refactor(proto): fix the use of deprecated chrono datetime by @orhun in #1207
- fix: missing readmes in deployers local source by @oddgrd in #1206
- Revert "feat(shuttle-axum) Make AxumService generic to be able to use axum::State with it (#924)" by @jonaro00 in #1199
- refactor(runtime,codegen): avoid double timestamps problem by @iulianbarbu in #1210
- feat(deployer): handle errors from corrupted resource data by @oddgrd in #1208
- feat(codegen): restore default log level, improve error messages by @jonaro00 in #1211
- fix(logger): resolve CI failures caused by recent changes by @iulianbarbu in #1212
- feat(containerfile): improve deployer build caching by @jonaro00 in #1214
- fix: span names, log levels and messages by @jonaro00 in #1213
- Enable auto-sharding in shuttle-poise by @jdh8 in #1217
- refactor: match local logs with deployer logs by @chesedo in #1216
- fix(otel): restore honeycomb and dd exporters by @oddgrd in #1218
- feat(shuttle-next): enable tracing by default by @iulianbarbu in #1219
- refactor: switch to LOGGER_POSTGRES_URI by @chesedo in #1220
- refactor: improve stream logs by @chesedo in #1221
- refactor: add index to deployment id by @chesedo in #1224
- batch in 1 sec intervals by @jonaro00 in #1222
- fix: logger branch cleanups by @oddgrd in #1226
- ci: logger postgres uri by @oddgrd in #1228
- fix: truncate log item strings by @jonaro00 in #1227
- feat(common): change request_span macro to info level by @oddgrd in #1230
- feat(logger): refactor to loop, add traces by @oddgrd in #1232
- feat(logger): logger queue size trace by @oddgrd in #1235
- ci: uncomment deployment branch filters by @oddgrd in #1238
- feat: dedicated logger service by @chesedo in #1225
- chore: v0.26.0 by @oddgrd in #1239
- fix(makefile): remove duplicate command by @oddgrd in #1241
- fix(Containerfile): copied shuttle-logger service in the final image by @iulianbarbu in #1242
- feat: outdated log parse warning by @jonaro00 in https://github.com/shuttle-hq/shutt...
cargo-shuttle v0.25.1
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
- fix: cargo-shuttle missing feature by @oddgrd in #1178
- ci: fix invalid resource-class for deploy job by @oddgrd in #1180
- chore: cargo-shuttle v0.25.1 by @oddgrd in #1182
Full Changelog: v0.25.0...v0.25.1
v0.25.0
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 usingrustls
. (Enables corresponding feature in sqlx)cargo shuttle project start
now warns you if the idle minutes flag is not 0.
Contributions
- @sentinel1909 added
list
,remove
,clear
, andsize
operations toshuttle-persist
in #1066. - @sd2k added a new resource that allows you to get the name of your Shuttle service in #1129.
- @ledoyen added secrets input to the Shuttle deploy GitHub action in shuttle-hq/deploy-action#14
- @beyarkay improved the error message for when a project is not ready to receive commands in #1169.
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)
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 onshuttle-runtime
to0.24.0
. - The bug fix for
shuttle-static-folder
takes effect if you upgrade yourshuttle-static-folder
dependency to0.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
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
- @d4ckard added a check for if the cargo-shuttle CLI and the shuttle-runtime versions are out of sync in #1088
- @skaunov updated an example in our docs in shuttle-hq/shuttle-docs#159
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: add volume to mongo container by @oddgrd in #1126
- feat: gateway to start last deploy from idle project by @chesedo in #1121
- fix: install shuttle-next runtime in deployers by @oddgrd in #1127
- misc: add warning for api url arg by @jonaro00 in #1128
- ci: separate jobs for faster ci verdict by @jonaro00 in #1130
- docs: update readme, separate contributing and development docs by @jonaro00 in #1124
- feat(runtime): add alpha runtime version check by @d4ckard in #1088
- deployer: sync resource-recorder with persistence by @iulianbarbu in #1101
- chore: v0.23.0 by @oddgrd in #1133
New Contributors
Full Changelog: v0.22.0...v0.23.0
v0.22.0
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 namedmain
. - 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
- @robjtede made their first contribution to Shuttle by correcting Actix Web typos in our docs in #1093 and shuttle-hq/shuttle-docs#148
- @saikatdas0790 fixed an error and made one of our examples more concise in shuttle-hq/shuttle-docs#157 and shuttle-hq/shuttle-docs#156
- @Shubham8287 made their first contribution to Shuttle by adding proper handling of signals to windows local runs in #1077, claiming a bounty for their efforts!
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
- feat: resource recorder by @chesedo in #1084
- feat: add a project_id to gateway by @chesedo in #1091
- Added the missing support for creating custom resources by @iulianbarbu in #1082
- resource-recorder: update the docker compose file by @iulianbarbu in #1092
- feat: honeycomb for local runs by @chesedo in #1100
- gateway: add LD_LIBRARY_PATH in docker-compose by @iulianbarbu in #1105
- deployer: fixed runtime logs receiving by @iulianbarbu in #1108
- circleci: set HONEYCOMB env variable by @iulianbarbu in #1109
- feat: add deployer tier to auth by @chesedo in #1111
- feat: expand gateways args to receive the key for the machine user by @chesedo in #1114
- feat: add a route to deployer to start a past deployment by @chesedo in #1115
- fix: Update information in README by @jonaro00 in #1087
- chore: fix Actix Web typos by @robjtede in #1093
- chore: bump sqlx in resources by @oddgrd in #1117
- Chore/bump sqlx by @oddgrd in #1118
- fix(codegen): allow
main
function name, prevent clippy warning by @jonaro00 in #1098 - feat: Handling regular signals sent to cargo-shuttle on Windows by @Shubham8287 in #1077
- Chore/v0.22.0 by @oddgrd in #1119
New Contributors
- @robjtede made their first contribution in #1093
- @Shubham8287 made their first contribution in #1077
Full Changelog: v0.21.0...v0.22.0
v0.21.0
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 followingcargo 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
- fix: bash bug in containerfile by @oddgrd in #1060
- ci: add turso to publish job by @oddgrd in #1059
- fix: remove md that is incompatible with docs by @oddgrd in #1063
- chore: make git submodule path absolute to make life easier for forks by @RobWalt in #1049
- ci: incorrect path to turso resource by @oddgrd in #1062
- Explain 413 error when a user tries to create a project larger than the limit by @ShouvikGhosh2048 in #1070
- fix: rds deploy crash by @oddgrd in #1068
- chore: bump tower-sanitize-path by @oddgrd in #1074
- fix: broken gateway pagination and status check tests by @oddgrd in #1075
- Add --allow-dirty to command hint at end of init by @beyarkay in #1076
- chore: v0.21.0 by @oddgrd in #1078
New Contributors
- @RobWalt made their first contribution in #1049
- @ShouvikGhosh2048 made their first contribution in #1070
Full Changelog: v0.20.0...v0.21.0
v0.20.0
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
- @timonv made their first contribution to Shuttle by fixing a bug with the timezones in the Shuttle logs output in #1032, and they also added a missing piece to our .nix file in #1040
- @Fuzzicles made their first contribution to Shuttle by bringing deployment git metadata to the client in #987
- @robertohuertasm updated our docs with some work-arounds for common issues when working with static folders or workspaces in shuttle-hq/shuttle-docs#135
- @sentinel1909 made some improvements to the shuttle-persist docs in shuttle-hq/shuttle-docs#136
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