
De ce să treceți la Posit Connect Cloud?
shinyapps.io a oferit un serviciu fidel comunității Shiny de mult timp. Îți faci aplicația Shiny, dai clic pe „Deploy” în RStudio, se întâmplă ceva magie, apoi lucrarea dvs. apare online pentru a fi accesată de alții. Nu trebuia să vă gândiți prea mult la pachetele R, să construiți un container Docker sau să configurați o instanță cloud compute pentru a acorda acces la aplicația dvs. Poate că simplitatea procesului de implementare și disponibilitatea unui nivel gratuit l-au făcut atât de popular.
Posit Connect Cloud preia ceea ce a făcut ca shinyapps.io să fie atât de popular și adaugă mai multe funcții și confort. Nu mai sunteți restricționat doar să găzduiți aplicații Shiny—Posit Connect Cloud poate accepta și notebook-uri Streamlit, Bokeh, Jupyter, iar toate planurile permit găzduire nelimitată pentru documentele redate Quarto și R Markdown. Obțineți, de asemenea, mai multe funcționalități: abilitatea de a seta variabile secrete, de a regenera conținut într-un program, limite maxime de calcul mai mari și certificate SSL atunci când utilizați domenii personalizate.
De asemenea, rămâne un nivel gratuit de Posit Connect Cloud. Și în timp ce Posit Connect Cloud acceptă mai multe tipuri de conținut, în afară de aplicațiile Shiny, veți descoperi că beneficiul se reflectă în prețurile mai mari la nivelurile plătite față de cele mai apropiate echivalente shinyapps.io. Poate că cei mai mari câștigători sunt utilizatorii care aveau nevoie în principal de un domeniu personalizat: acesta a necesitat cel mai mare nivel „Profesional” de 349 USD/lună pe shinyapps.io, dar este acum disponibil (cu certificat SSL) la prețul de 59 USD/lună. Nivelul „Îmbunătățit” și mai sus pe Posit Connect Cloud.
Implementarea conținutului în Posit Connect Cloud
Metodele de implementare existente utilizate pentru shinyapps.io încă funcționează cu Posit Connect Cloud, dar există și câteva opțiuni noi:
- Doriți ca implementarea să aibă loc numai după ce verificările anterioare ale conductei au avut succes.
- Aveți cod sensibil în altă parte în contul dvs. GitHub și nu vă simțiți confortabil sau nu aveți voie să acordați acces la depozitele dvs. GitHub unui instrument terță parte.
- Sunteți la nivelul gratuit al Posit Connect și aveți cod într-un depozit GitHub privat.
- Doriți să includeți resurse suplimentare care nu sunt stocate în depozitul GitHub, cum ar fi un set de date de dimensiuni moderate, doar pentru citire, care se actualizează rar. Aici este posibil să doriți să utilizați fluxul de lucru GitHub Actions pentru a aduna resurse externe și pentru a crea un pachet de aplicații complet autonom de cod sursă și date statice. Acest lucru poate reduce costurile de export de date pentru aplicațiile ocupate.
Implementare în Posit Connect Cloud folosind GitHub Actions
Prin urmare, este posibil să doriți să automatizați implementarea, dar să nu puteți utiliza metodele standard de implementare susținute de Git. Să discutăm cum să o facem să funcționeze.
Obțineți un Content ID
Primul lucru pe care veți dori să-l faceți este să efectuați o implementare inițială a aplicației, astfel încât să avem un ID de conținut. Cel mai simplu mod de a face acest lucru este utilizarea metodei de implementare cu un singur clic din RStudio sau prin extensia Posit Publisher în Positron sau VS Code. Conectați-vă la contul Posit Connect Cloud și găsiți conținutul din lista dvs. În meniul Setări, accesați URL și uitați-vă la „Adresa URL implicită”. Ar trebui să conțină a UUID-secțiune asemănătoare după https:// iar înainte de .share.connect.posit.cloud părți — vrem să notăm acest lucru pentru mai târziu.


„Adresa URL implicită” din meniul de setări pentru conținutul dvs. conține Content ID. În acest exemplu, adresa URL implicită este https://019eb78b-0c21-3b55-3fe6-38ae4d03dee4.share.connect.posit.clouddeci Content ID este 019eb78b-0c21-3b55-3fe6-38ae4d03dee4.
Adăugați un renv.lock fişier
Creați un token Posit Connect Cloud
Contul dvs. Posit Connect Cloud face parte din contul dvs. mai mare Posit Cloud. În Posit Cloud, puteți accesa o listă cu „Acreditările”, care sunt jetoane de acces. Acestea pot fi găsite la https://login.posit.cloud/identity/credentials.
Veți avea opțiunea de a crea „Noi acreditări”.


Furnizați un nume pentru noul simbol care vă ajută să identificați locul în care va fi utilizat, apoi pentru opțiunea „Utilizați cu”, selectați „Conectați Cloud”. Faceți clic pe „OK” pentru a genera un simbol.
Vi se va prezenta un bloc de cod R care conține acreditările pe care le puteți utiliza pentru a vă conecta. Acestea trebuie păstrate secrete; Oricine are aceste detalii se poate uzurpa identitatea ta. Ar trebui să semene cu asta:
rsconnect::connectCloudClientCredentials( clientId="01234567-89a1-b2c3-d4e5-f60123456789", clientSecret="SuPeR/SeCrEt/VeRy/LoNg/CoDe", account="" )
Scrieți un flux de lucru GitHub Actions
# .github/workflows/deploy.yml
name: Deploy to Posit Connect Cloud
on:
push:
branches:
- main
- master
workflow_dispatch:
jobs:
deploy:
runs-on: ubuntu-latest
steps:
- name: Checkout repository
uses: actions/checkout@v4
- name: Setup R
uses: r-lib/actions/setup-r@v2
with:
r-version: "4.6.1"
- name: Install pak
run: |
UBUNTU_CODENAME=$(lsb_release -cs)
Rscript -e "
install.packages('pak', repos = 'https://packagemanager.posit.co/cran/__linux__/${UBUNTU_CODENAME}/latest');
"
- name: Instruct renv to use pak in .Rprofile
run: |
echo 'options(renv.config.pak.enabled = TRUE)' >> .Rprofile
- name: Restore packages from renv.lock file
uses: r-lib/actions/setup-renv@v2
- name: Install rsconnect if not present in renv.lock
run: |
Rscript -e "if (!requireNamespace('rsconnect', quietly = TRUE)) pak::pak('rstudio/rsconnect')"
- name: Authenticate with rsconnect
run: |
Rscript -e '
rsconnect::connectCloudClientCredentials(
clientId = Sys.getenv("RSCONNECT_CLIENT_ID"),
clientSecret = Sys.getenv("RSCONNECT_CLIENT_SECRET"),
accountName = Sys.getenv("RSCONNECT_USERNAME"),
name = NULL
)
'
env:
RSCONNECT_CLIENT_ID: ${{ secrets.RSCONNECT_CLIENT_ID }}
RSCONNECT_CLIENT_SECRET: ${{ secrets.RSCONNECT_CLIENT_SECRET }}
RSCONNECT_USERNAME: ${{ vars.RSCONNECT_USERNAME }}
- name: Add Posit Connect deployment config file
run: |
mkdir -p "rsconnect/${SERVER}/${RSCONNECT_USERNAME}"
cat > "rsconnect/${SERVER}/${RSCONNECT_USERNAME}/${APP_NAME}.dcf" <În afară de aceasta, este posibil să observați că există o etapă numită „Adăugați fișierul de configurare a implementării Posit Connect”. Pentru ce este nevoie? Când implementați conținut pentru prima dată folosind pachetul {rsconnect}, acesta va păstra o evidență a unor metadate despre locul în care a fost implementat într-un .dcf fişier. Dacă reinstalați conținutul, {rsconnect} va încerca să suprascrie implementarea existentă, identificând ținta prin ID-ul de conținut unic. Fără a cunoaște ID-ul de conținut, {rsconnect} trebuie să presupună că nu este sigur să suprascrieți conținutul existent și, în schimb, trebuie creat conținut nou. Crearea unui .dcf fișier și popularea acestuia cu câteva detalii despre locul în care conținutul a fost instalat anterior pentru a convinge {rsconnect} că este sigur să suprascrieți implementarea existentă.
Setați variabilele și secretele GitHub Actions


Există două secrete de stabilit:
RSCONNECT_CLIENT_ID: The clientId valoarea din acreditările dvs. Posit Cloud.
RSCONNECT_CLIENT_SECRET: The clientSecret din acreditările Posit Cloud.
Urmează patru variabile:
RSCONNECT_USERNAME: numele dvs. de utilizator Posit Connect Cloud, pe care l-ați setat când ați creat un cont. Dacă ați uitat acest lucru, uitați-vă la adresa URL după ce v-ați conectat la Posit Connect Cloud; URL-ul va lua formatul https://connect.posit.cloud/.
APP_TITLE: Un titlu afișat pentru conținutul dvs. Acesta este titlul care va apărea în lista dvs. de conținut implementat atunci când vă conectați la Posit Connect Cloud.
APP_NAME: Un nume intern de aplicație. Pentru simplitate, puteți seta acest lucru la dvs APP_TITLE dar cu spații și semne de punctuație înlocuite cu cratime. De exemplu, „Aplicația mea utilă” devine „aplicația mea-utilă”.
CONNECT_CONTENT_ID: ID-ul de conținut pe care l-am obținut după implementarea inițială pe Posit Connect Cloud.
Extinderea la implementări de dezvoltare
Exemplul pe care l-am arătat mai sus este conceput pentru a fi implementat atunci când apăsați pe dvs main sau master ramură. Dar dacă doriți o implementare separată pentru aplicațiile de dezvoltare, puteți pur și simplu să extindeți această acțiune pentru a implementa atunci când modificările sunt trimise într-un dev ramură, dar rețineți că va trebui să vizați un alt Content ID, în caz contrar modificările sunt trimise la dev ramura va suprascrie implementarea dvs. din main ramură.
Dar rețineți că conturile „de bază” și „gratuit” au o limită a numărului de aplicații și o implementare de dezvoltare ar conta ca o aplicație separată pentru implementarea principală. Aplicațiile de pe ambele niveluri vor fi, de asemenea, publice.
Sfaturi privind migrarea și găzduirea
Pentru utilizatorii cu conținut deja pe shinyapps.io, Posit a oferit un instrument de migrare pentru a vă ajuta să vă mutați conținutul acum, altfel acesta va fi mutat automat la începutul anului 2027. Link-urile către conținutul dvs. de pe shinyapps.io vor redirecționa automat către noul conținut atunci când sunt finalizate prin intermediul acestui instrument.
Merită să utilizați instrumentul, deoarece vă permite să previzualizați și să testați că aplicația va funcționa pe Posit Connect Cloud. Aplicațiile mai vechi care folosesc dependențe vechi sau pachete private sunt cel mai probabil să întâmpine probleme atunci când migrează la Posit Connect Cloud.
La Jumping Rivers, întâlnim adesea pachete și aplicații care trebuie actualizate. Experții noștri R și Python vă pot oferi sfaturi și soluții pentru migrarea conținutului dvs. către noi soluții de găzduire care se potrivesc nevoilor dvs. Contactați-ne la (e-mail protejat) pentru a vedea cum putem ajuta.
Pentru actualizări și revizuiri ale acestui articol, consultați postarea inițială
