Import, Render and Publish #128
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
on: | |
schedule: | |
# time is in UTC i.e. GMT London | |
# * is a special character in YAML so you have to quote this string | |
- cron: '30 13 * * *' | |
push: | |
branches: | |
- main | |
workflow_dispatch: | |
name: Import, Render and Publish | |
# you need these permissions to publish to GitHub pages | |
permissions: | |
contents: write | |
pages: write | |
jobs: | |
import-render-publish: | |
runs-on: ubuntu-latest | |
steps: | |
- name: Check out repository | |
uses: actions/checkout@v4 | |
- name: Set up Python 3.11 and install requirements | |
uses: actions/setup-python@v5 | |
with: | |
python-version: '3.11' | |
cache: 'pip' # caching pip dependencies | |
- run: pip install -r requirements.txt | |
- name: Import Unjournal data | |
run: | | |
python3 code/import-unjournal-data.py | |
env: | |
CODA_API_KEY: ${{ secrets.CODA_API_KEY }} | |
- name: Upload Unjournal data as artifact | |
uses: actions/upload-artifact@v4 | |
with: | |
name: unjournal-data | |
path: data | |
- name: Update Unjournal data in repository | |
# There is a race condition here: if someone else, or another | |
# copy of this workflow, commits and pushes data between initial | |
# checkout and this push, then the push will fail. If this happens, | |
# just rerun the workflow manually. | |
# | |
# `diff-index` with the `--exit-code` option returns 0 if there's no | |
# difference between the working copy and the HEAD branch. | |
run: | | |
git config --global user.email "[email protected]" | |
git config --global user.name "Github Actions" | |
git add data/*.csv | |
git diff-index --exit-code HEAD data/*.csv || git commit -m "Github actions: auto-update data" | |
git push | |
- name: Set up Quarto | |
uses: quarto-dev/quarto-actions/setup@v2 | |
# uncomment below and fill to pin a version | |
# version: SPECIFIC-QUARTO-VERSION-HERE | |
- name: Setup R | |
uses: r-lib/actions/setup-r@v2 | |
with: | |
r-version: 'renv' | |
- name: Install system dependencies | |
run: | | |
sudo apt-get install jags libcurl4-openssl-dev \ | |
libharfbuzz-dev libfribidi-dev libsodium-dev libfontconfig1-dev \ | |
libfreetype6-dev libpng-dev libtiff5-dev libjpeg-dev | |
- name: Setup dependencies with renv | |
uses: r-lib/actions/setup-renv@v2 | |
with: | |
cache-version: 2 # increment this to invalidate the renv cache | |
env: | |
GITHUB_PAT: ${{ secrets.RENV_GITHUB_PAT }} | |
- name: Publish dashboard to shinyapps.io | |
env: | |
RSCONNECT_USER: ${{ secrets.RSCONNECT_USER }} | |
RSCONNECT_TOKEN: ${{ secrets.RSCONNECT_TOKEN }} | |
RSCONNECT_SECRET: ${{ secrets.RSCONNECT_SECRET }} | |
AIRTABLE_API_KEY: ${{ secrets.AIRTABLE_API_KEY }} | |
run: | | |
rsconnect::setAccountInfo(name = Sys.getenv("RSCONNECT_USER"), | |
token = Sys.getenv("RSCONNECT_TOKEN"), | |
secret = Sys.getenv("RSCONNECT_SECRET")) | |
quarto::quarto_publish_app(input = "shinyapp/dashboard", | |
account = "unjournal", | |
server = "shinyapps.io", | |
forceUpdate = TRUE) | |
shell: Rscript {0} | |
# - name: Publish DataExplorer to shinyapps.io | |
# env: | |
# RSCONNECT_USER: ${{ secrets.RSCONNECT_USER }} | |
# RSCONNECT_TOKEN: ${{ secrets.RSCONNECT_TOKEN }} | |
# RSCONNECT_SECRET: ${{ secrets.RSCONNECT_SECRET }} | |
# run: | | |
# source("code/create-data-for-DataExplorer.R") | |
# rsconnect::setAccountInfo(name = Sys.getenv("RSCONNECT_USER"), | |
# token = Sys.getenv("RSCONNECT_TOKEN"), | |
# secret = Sys.getenv("RSCONNECT_SECRET")) | |
# rsconnect::deployApp(appDir = "shinyapp/DataExplorer", | |
# appName = "DataExplorer", | |
# account = "unjournal", | |
# server = "shinyapps.io", | |
# forceUpdate = TRUE) | |
# shell: Rscript {0} | |