Initial commit #1
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
# Basic example of a GitHub Actions workflow that builds a Shiny app and deploys | |
# it to GitHub Pages. | |
# | |
# The agreed upon contract is: | |
# | |
# - Inspect the root directory for package dependencies | |
# - Install R and the found packages | |
# - Export the Shiny app directory to `./site` | |
# - On push events, deploy the exported app to GitHub Pages | |
# | |
# If this contract is not met or could be easily improved for others, | |
# please open a new Issue https://github.com/posit-dev/r-shinylive/ | |
# | |
# The _magic_ of this workflow is in the `shinylive::export()` function, which | |
# creates a static version of the Shiny app into the folder `./site`. | |
# The exported app folder is then uploaded and deployed to GitHub Pages. | |
# | |
# When deploying to GitHub Pages, be sure to have the appropriate write | |
# permissions for your token (`pages` and `id-token`). | |
name: Deploy app | |
on: | |
push: | |
branches: [main] | |
workflow_call: | |
inputs: | |
cache-version: | |
type: string | |
default: "1" | |
required: false | |
jobs: | |
build: | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/checkout@v4 | |
- uses: rstudio/shiny-workflows/setup-r-package@v1 | |
with: | |
packages: | | |
renv | |
shinylive | |
sessioninfo | |
cache-version: ${{ github.event.inputs.cache-version }} | |
- name: Find package dependencies | |
shell: Rscript {0} | |
id: packages | |
run: | | |
# Find package dependencies using {renv} and install with {pak} | |
pak::pak( | |
unique(renv::dependencies(".")$Package) | |
) | |
- name: Build site | |
shell: Rscript {0} | |
run: | | |
shinylive::export(".", "site") | |
- name: Upload site artifact | |
if: github.ref == 'refs/heads/main' | |
uses: actions/upload-pages-artifact@v3 | |
with: | |
path: "site" | |
deploy: | |
if: github.ref == 'refs/heads/main' | |
needs: build | |
# Grant GITHUB_TOKEN the permissions required to make a Pages deployment | |
permissions: | |
pages: write # to deploy to Pages | |
id-token: write # to verify the deployment originates from an appropriate source | |
# Deploy to the github-pages environment | |
environment: | |
name: github-pages | |
url: ${{ steps.deployment.outputs.page_url }} | |
# Specify runner + deployment step | |
runs-on: ubuntu-latest | |
steps: | |
- name: Deploy to GitHub Pages | |
id: deployment | |
uses: actions/deploy-pages@v4 |