Skip to content

Import, Render and Publish #158

Import, Render and Publish

Import, Render and Publish #158

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}