Dashboard de Inflação: como automatizar com o Github Actions

Na última semana, ensinamos como é possível realizar o deploy de um dashboard do nível de atividade econômica brasileira, construído através do Shiny, em uma webpage através do Shiny apps. Através deste método, é necessário que haja um trabalho manual para realizar a atualizações  de dados do dashboard, e de forma que possamos melhorar este processo, ensinaremos neste post como automatizar a atualizações de dados de um painel, utilizando como exemplo o Dashboard de Inflação construído através do nosso Curso de Análise de Conjuntura com o R.

O processo de automatização de scripts no Github envolve alguns passos e conhecimentos necessários, sendo alguns tópicos de certa forma avançados, exigindo algum tempo de estudo. Porém, aqui iremos simplificar o processo para que todos consigam utilizá-lo. O processo aqui envolve utilizar um Dashboard criado no R utilizando o Flexdashboard e Shiny, sendo portanto um dashboard dinâmico. Essa informação é importante, devido ao fato de que caso haja a utilização de outro tipo de dashboard é necessário que ocorra ajustes nos procedimentos.

Dashboard de Inflação

Aqui na Análise Macro ensinamos a criar dashboard para análise de conjuntura brasileira de forma totalmente reprodutível e automática. Você pode checar o resultado através deste link https://analisemacro.shinyapps.io/dashboard_inflacao/.

Dito isto, podemos prosseguir com os passos necessários para a automatização do dashboard.

Pré-requisitos

  • Ter instalado o R e RStudio
  • Ter instalado o Git
  • Criar uma conta no GitHub
  • Criar uma conta no Shiny App
  • Ter em mãos o dashboard construído através do Curso de Análise de Conjuntura

Após todos estes procedimentos, podemos então seguir no envio dos arquivos do dashboard para o Github, de forma que seja criado um repositório no site e que possa realizar o deploy no Shiny App através do Github, e que ele possa realizar a automatização com o Github Actions.

1° passo

Abra o projeto do dashboard (dashboard_inflation.Rproj) em conjunto com o arquivo .Rmd. Primeiro precisamos gerenciar as dependências do dashboard (isto é, o pacotes utilizados no script), de forma que o Github reconheça quais devem ser baixados pelo Github Actions.

Com os arquivos do dashboard aberto, utilize o seguinte código no console.


renv::init()

renv::snapshot()

2° passo

Configurado as dependências, podemos então exportar os arquivos para o repositório do Github. Para criar o repositório, devemos seguir os seguintes passos:

  1. Estar logado no GitHub
  2. Clicar no botão New
  3. Definir um nome do repositório
  4. Clicar em Create repository

Ao criar o repositório, aparecerá alguns comandos em Git, que podemos utilizar para integrar o projeto do nosso dashboard com o repositório. Copiamos o código que aparece na sugestão "…or create a new repository on the command line" e colamos no Terminal do Rstudio. No nosso exemplo utilizamos o seguinte código:


echo "# dashboard_inflacao" >> README.md

git init

git add README.md

git commit -m "first commit"

git branch -M main

git remote add origin https://github.com/analisemacro/dashboard_inflacao.git
git push -u origin main

git add .

git commit -m "add dashboard"

git push

3° passo

Com efeito, integramos nossos arquivos remotos com o Github, o seguinte passo será rodar o dashboard no Github em conjunto com o Shiny Apps, de forma que ele seja atualizado automaticamente com o Github Actions. Mais importante, será configurar o Github em conjunto com o Shiny App. Para isso, devemos coletar os secrets (chaves) do Shiny Apps.
  1. acesse shinyapps.io
  2. entre em sua conta (caso não tenha, crie uma)
  3. clique na imagem do perfil e vá em tokens
  4. na página, utilize o token que deseja para realizar o deploy do dashboard, caso não tenha um token, clique em new token
  5. com o secrets em mãos, deveremos colocá-los no Github. No repositório, acesse Settings > secrets > actions > New repository secret. Em cada novo secret, utilize os nomes utilizados na imagem, e que correspondem para os nomes dos secrets relacionados aos tokens do Shiny App.

Temos o suficiente agora para conseguir utilizar o Github Actions.

4° passo

Neste passo, iremos criar um workflow que possa realizar o deploy no Shiny app e atualizá-lo a cada dia automaticamente.
Para criar um workflow , deve acessar a página ''Actions'' e criar um novo workflow, através de new workflow >  set up a workflow yourself . É possível alterar o nome do arquivo para qualquer um, aqui utilizaremos "update.yml"
Na parte "Edit file", exclua o código padrão e copie o seguinte código para realizar a configuração do deploy do dashboard e manter a atualização diária.
on:
push:
branches:
- main
- master
schedule:
- cron: "0 0 * * *"

name: Dashboard update

jobs:
Dashboard-update:
runs-on: windows-latest
env:
GITHUB_PAT: ${{ secrets.GITHUB_TOKEN }}
RSCONNECT_USER: ${{ secrets.RSCONNECT_USER }}
RSCONNECT_TOKEN: ${{ secrets.RSCONNECT_TOKEN }}
RSCONNECT_SECRET: ${{ secrets.RSCONNECT_SECRET }}
steps:
- uses: actions/checkout@v2
- uses: r-lib/actions/setup-r@v1
with:
r-version: '4.1.2' # The R version to download

- name: Cache packages
uses: actions/cache@v2
with:
path: ~\AppData\Local\renv
key: ${{ runner.os }}-renv-${{ hashFiles('**/renv.lock') }}
restore-keys: |
${{ runner.os }}-renv-
- name: Restore packages
run: |
if (!requireNamespace("renv", quietly = TRUE)) install.packages("renv")
renv::restore()
shell: Rscript {0}

- name: Install workflow dependencies
run: |
install.packages(c("rcmdcheck", "sessioninfo", "devtools"))
shell: Rscript {0}

- name: Install pandoc
run: |
choco install pandoc

- name: Authorize and deploy app
run: |
rsconnect::setAccountInfo(name='${{ secrets.RSCONNECT_USER }}', token='${{ secrets.RSCONNECT_TOKEN }}', secret='${{ secrets.RSCONNECT_SECRET }}')
rsconnect::deployApp(account = 'analisemacro', forceUpdate = TRUE)
shell: Rscript {0}

- name: Commit results
run: |
git config --local user.name "GitHub Actions"
git config --local user.email "actions@github.com"
git add .
git commit -m "Update data and deploy shiny app" || echo "No changes to commit"
git push origin || echo "No changes to commit"

Importante dizer que é necessário que o código deva conter uma indentação específica, para obter um exemplo de como pode realizar através do códigos, veja aqui.

Esta parte é um pouco complexa de se entender, portanto, não iremos nos aprofundar no papel de cada código.

Com isso, finalizamos todos os passos de construção do nosso workflow. Agora, será feito o deploy do nosso dashboard na página do Shiny App, bem como será feito esse procedimento todos os dias automaticamente.

Compartilhe esse artigo

Facebook
Twitter
LinkedIn
WhatsApp
Telegram
Email
Print

Comente o que achou desse artigo

Outros artigos relacionados

Coletando dados para monitoramento climático com Python

As condições climatológicas influenciam desde a safra de grãos até a decisão de um vendedor ambulante levar seu carrinho para a praia ou não. Por sua importância e impactos na economia do país, neste exercício mostramos como coletar e elaborar análises de dados sobre o clima usando o Python.

Coletando dados de secas e queimadas no Brasil com Python

Neste artigo exploramos fontes públicas de dados sobre secas e queimadas no Brasil. Mostramos como acessar, coletar e preparar os dados para elaboração de análises. Usamos a linguagem Python para desenvolver uma rotina automatizada.

Como analisar demonstrações contábeis usando IA

Neste post, vamos explorar como utilizar o modelo de linguagem Gemini do Google para analisar demonstrações contábeis anuais da Eletrobras e extrair informações relevantes para tomada de decisão. Através de um código Python, vamos importar os dados direto da CVM, conectar com o Gemini e gerar resumos sobre as contas das demonstrações e perspectivas futuras sobre as finanças da empresa.

como podemos ajudar?

Preencha os seus dados abaixo e fale conosco no WhatsApp

Boletim AM

Preencha o formulário abaixo para receber nossos boletins semanais diretamente em seu e-mail.