Folosind GitHub Actions pentru implementarea în Posit Connect Cloud

URMĂREȘTE-NE
16,065FaniÎmi place
1,142CititoriConectați-vă

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:

  1. Doriți ca implementarea să aibă loc numai după ce verificările anterioare ale conductei au avut succes.
  2. 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.
  3. Sunteți la nivelul gratuit al Posit Connect și aveți cod într-un depozit GitHub privat.
  4. 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.

Secțiunea URL a meniului de setări Posit Connect Cloud, afișând „Adresa URL implicită” pentru o bucată de conținut.Secțiunea URL a meniului de setări Posit Connect Cloud, afișând „Adresa URL implicită” pentru o bucată de conținut.

„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”.

Fereastra de dialog „Acreditări client noi” din Posit Cloud, afișând un câmp „Nume” și o opțiune „Folosește cu” setată la „Conectează Cloud”.Fereastra de dialog „Acreditări client noi” din Posit Cloud, afișând un câmp „Nume” și o opțiune „Folosește cu” setată la „Conectează Cloud”.

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

Meniul lateral pentru setările depozitului GitHub, cu „Secrete și variabile” extins și „Acțiuni” selectate.Meniul lateral al setărilor depozitului GitHub, cu „Secrete și variabile” extins și „Acțiuni” selectat.

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ă

Dominic Botezariu
Dominic Botezariuhttps://www.noobz.ro/
Creator de site și redactor-șef.

Cele mai noi știri

Pe același subiect

LĂSAȚI UN MESAJ

Vă rugăm să introduceți comentariul dvs.!
Introduceți aici numele dvs.