-
Notifications
You must be signed in to change notification settings - Fork 28
Posit Publisher .posit/publish: TOML interop, redeploy, and config-driven bundling #830
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
base: main
Are you sure you want to change the base?
Changes from all commits
69ab9ea
ebc4f09
a918349
94cc1ef
120b8cb
da35758
eb4a736
857017a
db10e65
0a34551
9fec48d
d9ee8a3
cc8e0f4
8b32b46
c3e77d6
c86b22d
c6b63ee
65cc12a
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
| Original file line number | Diff line number | Diff line change |
|---|---|---|
|
|
@@ -7,14 +7,56 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 | |
|
|
||
| ## Unreleased | ||
|
|
||
| - Added support for Python 3.14. The test suite now runs on Python 3.14 in CI. | ||
| - `rsconnect deploy` subcommands now accept `--quiet`, which suppresses the | ||
| step-by-step progress lines and the streamed server build log, printing only | ||
| the deployed content URL to stdout so it can be captured with | ||
| `URL=$(rsconnect deploy ... --quiet)`. Errors still go to stderr, and on a | ||
| failed deploy the server task log is emitted to stderr so failures remain | ||
| diagnosable. `--quiet` cannot be combined with `-v/--verbose`, and for | ||
| shinyapps.io deploys it also skips opening a browser. | ||
| ### Added | ||
|
|
||
| - Python 3.14 support. The test suite now runs on Python 3.14 in CI. | ||
| - `--quiet` flag for `rsconnect deploy` commands. It suppresses the | ||
| step-by-step progress lines and the streamed build log. It prints only the | ||
| deployed content URL to stdout, so you can capture it with | ||
| `URL=$(rsconnect deploy ... --quiet)`. Errors still go to stderr. On a | ||
| failed deploy, the server task log also goes to stderr. `--quiet` cannot | ||
| combine with `-v`/`--verbose`. For shinyapps.io deploys, `--quiet` also | ||
| skips opening a browser. | ||
| - Interoperability with Posit Publisher `.posit/publish` project files. On | ||
| deploys to Posit Connect or Snowflake (SPCS), rsconnect-python writes a | ||
| Publisher configuration (`.posit/publish/<name>.toml`) and a deployment | ||
| record (`.posit/publish/deployments/<name>.toml`) next to the existing | ||
| `rsconnect-python/` metadata, and reads and preserves configurations and | ||
| records that Publisher wrote. One project can publish with either tool. | ||
| - `rsconnect redeploy [PATH]` command. It redeploys content from an existing | ||
|
Contributor
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. To my earlier question: one thing that sounds odd to me about adding a Why instead not have just |
||
| `.posit/publish` project, reading the target server and content identity | ||
| from the deployment record, so you do not need to give a framework, | ||
| entrypoint, or server. `PATH` defaults to the current directory. It also | ||
| works from a legacy `manifest.json` and `rsconnect-python/` deployment | ||
| record, and writes `.posit` files for future use. `redeploy` supports | ||
| every content type rsconnect-python can bundle except R, since | ||
| rsconnect-python has no R bundler. It carries forward only the | ||
| entrypoint, requirements, title, and content ID from a configuration; if | ||
| the configuration sets `description`, `environment`, `secrets`, or | ||
| `connect.*`, it prints a warning and deploys anyway, since applying those | ||
| settings needs a Connect API call `redeploy` does not yet make. | ||
|
Contributor
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. "yet" implies that it will, and I'm not sure it should. |
||
| - `.posit/publish` output from `rsconnect write-manifest` commands. Each | ||
| command now writes a configuration next to the generated `manifest.json`. | ||
| - Read support for Connect Cloud (`connect.posit.cloud`) `.posit` files. | ||
| rsconnect-python reads and preserves these files for interoperability, but | ||
| does not support deploying to Connect Cloud. | ||
| - File curation from a `.posit/publish` configuration's `files` list. When | ||
|
Contributor
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. These bullets sound more like documentation about how it works, not separate changelog entries. |
||
| the list names a subset of the project, deploys bundle exactly those | ||
| files, using `.gitignore` syntax (a `!` prefix excludes a path), matching | ||
| Posit Publisher. rsconnect-python never overwrites a curated list. A | ||
| configuration with no `files` list, an empty list, or `["*"]` sets no | ||
| restriction, so file selection is unchanged from before. | ||
| - `integration_requests` propagation from a `.posit/publish` configuration | ||
| into the generated `manifest.json`, matching Posit Publisher. This honors | ||
| OAuth integration requests that Publisher authored, even though | ||
| rsconnect-python cannot create them itself. | ||
| - Literal package-file listing (for example `requirements.txt`) in a | ||
| `.posit/publish` configuration that rsconnect-python writes for Python | ||
| content, alongside the default `["*"]`. Posit Publisher's redeploy checks | ||
| a configuration's `files` list for the package file by literal name | ||
| rather than by expanding `*`, so this lets Publisher redeploy content | ||
| whose configuration rsconnect-python wrote. It changes nothing about | ||
| which files actually bundle. | ||
|
|
||
| ## [1.30.0] - 2026-07-16 | ||
|
|
||
|
|
||
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
(I know this isn't from your PR but it's in the diff) but is it true that we "added" support for Python 3.14? Or did we just add CI? If the latter, then we should delete this line.