Releases: rstudio/rsconnect
rsconnect 1.3.1
- Skip tests when packages "foreign" and "MASS" are not available. (#1081)
rsconnect 1.3.0
-
deployApp(logLevel = "quiet")
suppresses Posit Connect deployment task
output. (#1051) -
deployApp(logLevel = "quiet")
andwriteManifest(quiet=TRUE)
suppress
output when using renv to analyze dependencies. (#1051) -
deployApp()
andwriteManifest()
receive the default value for the
image
argument from theRSCONNECT_IMAGE
environment variable. (#1063) -
deployTF()
can deploy a TensorFlow model to Posit Connect. Requires Posit
Connect 2024.05.0 or higher. -
Skip tests when suggested packages are not available. Skip Quarto tests when
run by CRAN. (#1074)
rsconnect 1.2.2
rsconnect 1.2.1
- Restore the
LC_TIME
locale after computing an RFC-2616 date. (#1035) - Address a problem inspecting Quarto content when the file names and paths
needed to be quoted. The resulting manifest lacked information about the
Quarto runtime, which caused difficult-to-understand deployment errors.
(#1037) - Produce an error when Quarto content cannot be inspected. (#1032)
rsconnect 1.2.0
-
Addressed a number of republishing and collaboration issues where the
content was incorrectly published to a new location rather than reusing an
existing deployment. (#981, #1007, #1013, #1019) -
showLogs()
,configureApp()
,setProperty()
, andunsetProperty()
search for the application by name when there are no matching deployment
records. (#985, #989) -
rpubsUpload()
correctly records the initial RPubs destination, allowing
republishing. (#976) -
deployApp()
and friends record multi-valuemetadata
entries as
comma-separated values. (#1017) -
accountInfo()
includesname
andusername
fields. Older versions of
rsconnect store account records with ausername
field. Recent rsconnect
versions recordname
. Bothname
andusername
should contain the same
value. (#1024)
rsconnect 1.1.1
-
Added
space
parameter to deploy directly to a space in Posit Cloud. -
Improve reporting of errors returned by shinyapps.io. (#997)
-
Remove most directory layout validation checks. (#998)
-
Do not use
getOption("available_packages_filters")
option when calling
available.packages()
. (#1002) -
Packages installed from source within an renv project are not associated
with repositories. (#1004)
rsconnect 1.1.0
-
Fixed analysis of directories that were smaller than the
rsconnect.max.bundle.files=10000
limit but larger than the
renv.config.dependencies.limit=1000
limit. (#968) -
Ignore
.env
,.venv
, andvenv
files only when they reference Python
virtual environments. (#972) -
deployApp()
andwriteManifest()
accept optionalenvManagement
,
envManagementR
, andenvManagementPy
arguments. These args specify whether
Posit Connect should install packages in the package cache.
IfenvManagement
isFALSE
then Connect will not perform any package
installation and it is the administrator's responsibility to ensure the
required R/Python packages are available in the runtime environment. This is
especially useful if off-host execution is enabled, when the execution
environment (specified by theimage
argument) already contains the required
packages. These values are ignored when
Applications.ManifestEnvironmentManagementSelection = false
.
Requires Posit Connect>=2023.07.0
. (#977) -
Fix account discovery by
showProperties()
. (#980)
rsconnect 1.0.2
-
Fixed redeployments to shinyapps.io where
appName
is provided, but no local
record of the deployment exists. (#932) -
deployApp()
andwriteManifest()
now error if your library andrenv.lock
are out-of-sync. Previously it always used what was defined in therenv.lock
but that was (a) slow and (b) could lead to different results than what you
see when running locally (#930). -
Deploying from an renv project includes the
renv.lock
in the bundle. A
manifest created for an renv project references therenv.lock
in the
manifest.json
. (#926) -
Use the environment variable
RSCONNECT_PACKRAT
to analyze dependencies
using packrat, as was done prior to rsconnect-1.0.0. Use of the
rsconnect.packrat
option is discouraged, as it is not effective when using
push-button deployment in the RStudio IDE. (#935) -
The
renv.lock
is ignored when theRSCONNECT_PACKRAT
environment variable
or thersconnect.packrat
option is set. (#936) -
The content type is inferred by analyzing the set of top-level files. (#942)
-
deployApp()
andwriteManifest()
accept an optionalappMode
argument.
Provide this argument if your project includes auxiliary files which mislead
the existingappMode
inference. For example, if an HTML project includes
a downloadable Shinyapp.R
, that content will be assumed to be a Shiny
application even if that application is not meant to be run. (#948) -
appDependencies()
accepts anappFileManifest
argument as an alternate
way of providing the target set of files.
rsconnect 1.0.1
rsconnect 1.0.0
New features
-
deployApp()
anddeployDoc()
now support deploying static content to Posit
Cloud. Static RMarkdown and Quarto content can be rendered server-side. -
deployApp()
andwriteManifest()
now respect renv lock files, if present.
If you don't want to use these lockfiles, and instead return the previous
behaviour of snapshotting on every deploy, add yourrenv.lock
to
.rscignore
(#671). Learn more?appDependencies()
.Additionally,
deployApp()
andwriteManifest()
now use renv to capture app
dependencies, rather than packrat. If this causes a previously working deploy
to fail, please file an issue then setoptions(rsconnect.packrat = TRUE)
to
revert to the previous behaviour. -
deployApp()
'squarto
argument now takes valuesTRUE
,FALSE
or
NA
. The previous value (a path to a quarto binary) is now ignored,
and instead we automatically figure out the package fromQUARTO_PATH
and
PATH
env vars (#658).deploySite()
now supports quarto websites (#813). -
deployApp()
gains a newenvVars
argument which takes a vector of the
names of environment variables that should be securely copied to the server.
The names (not values) of these environment variables are also saved in the
deployment record and will be updated each time you re-deploy the app (#667).
This currently only works with Connect, but we hope to add support to
Posit cloud and shinyapps.io in the future. -
rsconnect gains two new functions for understanding and updating the
environment variables that your apps currently use.listServerEnvVars()
will return a data frame of applications, with aenvVars
list-column
giving the names of the environment variables used by each application.
updateServerEnvVars()
will update all applications that use a specific
environment variable with the current value of that environment variable
(#667).
Lifecycle changes
-
Non-libcurl
rsconnect.http
options have been deprecated. This allows us to
focus our efforts on a single backend, rather than spreading development
efforts across five. The old backends will remain available for at least 2
years, but if you are using them because libcurl doesn't work for you, please
report the problem ASAP so we can fix it. -
addConnectServer()
has been deprecated because it does the same
thing asaddServer()
now thataddServer()
also validates URLs. -
deployTFModel()
is defunct. Posit Connect no longer supports hosting of
TensorFlow Model APIs. A TensorFlow model can be deployed as a Plumber
API, Shiny
application, or other
supported content type. -
discoverServer()
has been deprecated; it never worked. -
deployApp("foo.Rmd")
has been deprecated. It was never documented, and
it does the same job asdeployDoc()
(#698).
Minor improvements and bug fixes
-
New
rsconnect.http.headers
andrsconnect.http.cookies
allow you to
set extra arbitrary additional headers/cookies on each request (#405).
Their use is documented in the newvignette("custom-http")
. -
Uploading large files to RPubs works once more (#450).
-
When recording details about deployments to Posit Cloud, appId now represents
the content id (as seen in URLs of the format
https://posit.cloud/content/{id}
) instead of the application id. -
Deployment records no longer contain the time the app was deployed (
when
)
or when it's metadata was last synced (lastSyncTime
) as these variables
are not very useful, and they lead to uninteresting diffs if you have
committed the deployment records to git (#770). Aversion
field has been
added to deployment DCF files to facilitate future file format changes, if
needed. Its value for this release is1
., -
accounts()
returns a zero-row data frame if no accounts are registered. -
accountInfo()
andremoveAccount()
no longer requireaccount
be
supplied (#666). -
accountInfo()
andservers()
redact sensitive information (secrets,
private keys, and certificates) to make it hard to accidentally reveal
such information in logs (#675). -
addServer()
includes the port in the default server name, if present. -
appDependencies()
includes implicit dependencies, and returns an additional
column giving the Repository (#670). Its documentation contains more
information about how dependency discovery works, and how you can control
it, if needed. -
applications()
now returns the application title, if available (#484),
and processes multiple pages of results from a Connect server (#860). -
connectApiUser()
now clearly requires anapiKey
(#741). -
deployApp()
output has been thoroughly reviewed and tweaked. As well as
general polish it now gives you more information about what it has discovered
about the deployment, like the app name, account & server, and which files
are included in the bundle (#669). -
deployApp()
is more aggressive about saving deployment data, which should
make it less likely that you need to repeat yourself after a failed
deployment. In particular, it now saves both before and after uploading the
contents (#677) and it saves when you're updating content originally created
by someone else (#270). -
deployApp()
now gives an actionable error if you attempt to set
visibility of an app deployed to posit.cloud (#838). -
deployApp()
now uses a stricter policy for determining whether or not
a locally installed package can be successfully installed on the deployment
server. This means that you're more likely to get a clean failure prior to
deployment (#659). -
deployApp()
will now detect if you're attempting to publish to an app
that has been deleted and will prompt you to create a new app (#226). -
deployApp()
includes some new conveniences for large uploads including
reporting the size of the bundle you're uploading and showing a progress bar
in interactive sessions (#754). -
deployApp()
now follows redirects, which should make it more robust to your
server moving to a new url (#674). -
deployApp()
uses simpler logic for determining whether it should create a
new app or update an existing app. NowappName
,account
, andserver
are
used to find existing deployments. If none are found, it will create a new
deployment; if one is found, it'll be updated; if more than one are found, it
will prompt you to disambiguate (#666). -
deployApp()
improves account resolution fromaccount
andserver
arguments by giving specific recommendations on the values that you might use
in the case of ambiguity or lack of matches (#666). Additionally, you'll now
receive a clear error if you accidentally provide something other than a
string orNULL
to these arguments. -
deployApp()
now generates an interactive prompt to selectaccount
/server
(if no previous deployments) orappName
/account
/server
(if multiple
previous deployments) (#691). -
deployApp()
now advertises which startup scripts are run at the normal
logLevel
, and it evaluates each script in its own environment (#542). -
deployApp()
now derivesappName
fromappDir
andappPrimaryDoc
,
never using the title (#538). It now only simplifies the path if you are
publishing to shinyapps.io, since its restrictions on application names are
much tighter than those of Posit Connect. -
deployApp()
will now warn ifappFiles
orappManifestFiles
contain
files that don't exist, rather than silently ignoring them (#706). -
deployApp()
excludes temporary backup files (names starting or ending
with~
) when automatically determining files to bundle (#111) as well as
directories that are likely to be python virtual environments (#632).
Additionally, ignore rules are always now applied to all directories;
previously some (like.Rproj.user
and"manifest.json"
) were only
applied to the root directory. It correctly handles.rscignore
files
(i.e. as documented) (#568). -
deployApp(appSourceDoc)
has been deprecated; it did the same job as
recordDir
. -
deployDoc()
includes a.Rprofile
in the bundle, if one is found in the
same directory as the document. -
lint()
should have fewer false positives for path problems:
the relative path linter has been removed (#244) and the case-sensitive
linter now only checks strings containing a/
(#611). -
New
listDeploymentFiles()
, which supsersedeslistBundleFiles()
.
It now errors when if the bundle is either too large or contains too many
files, rather than silently truncating as before (#684). -
serverInfo()
andremoveServer()
no longer require aserver
when
called interactively. -
showMetrics()
once again returns a correctly named data frame (#528). -
Removed Rmd generation code (
writeRmdIndex()
) which had not worked, or
been necessary, for quite some time (#106, #109). -
Locale detection has been improved on windows (#233).
-
The
rsconnect.pre.deploy
andrsconnect.post.deploy
hooks are now always
called with the content directory, not sometimes the path to a specific file
(#696). -
Functions that should only interact with shinyapps.io enforce the server
type. UpdatedaddAuthorizedUser()
,removeAuthorizedUser()
,
showUsers()
,showInvited()
,resendInvitation()
,configureApp()
,
setProperty()
,unsetProperty()
,purgeApp()
,restartApp()
,
terminateApp()
,showUsage()
, andshowMetrics()
(#863, #864). -
When needed packages are not installed, and you're in an interactive
environment, rsconnect will now prompt you to install them (#665). -
The confirmation prompt presented upon lint failures indicates "no" as its
default. (#652)