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

Análise de impacto fiscal sobre o dolár com Python

Usamos uma cesta de 12 moedas para construir um cenário contrafactual da taxa de câmbio após o último anúncio de pacote fiscal, com base em modelagem Bayesiana. No período, o dolár depreciou quase 5% e passou os R$ 6,15, enquanto que na ausência da intervenção a moeda deveria estar cotada em R$ 5,78.

Resultado IBC-br - Outubro/2024

A Análise Macro apresenta os resultados da IBC-br de Outubro de 2024, com gráficos elaborados em Python para coleta, tratamento e visualização de dados. Todo o conteúdo, disponível exclusivamente no Clube AM, foi desenvolvido com base nos métodos ensinados nos cursos da Análise Macro, permitindo aos assinantes acesso aos códigos e replicação das análises.

Resultado PMC - Outubro/2024

A Análise Macro apresenta os resultados da PMC de Outubro de 2024, com gráficos elaborados em Python para coleta, tratamento e visualização de dados. Todo o conteúdo, disponível exclusivamente no Clube AM, foi desenvolvido com base nos métodos ensinados nos cursos da Análise Macro, permitindo aos assinantes acesso aos códigos e replicação das análises.

Boletim AM

Receba diretamente em seu e-mail gratuitamente nossas promoções especiais e conteúdos exclusivos sobre Análise de Dados!

Boletim AM

Receba diretamente em seu e-mail gratuitamente nossas promoções especiais e conteúdos exclusivos sobre Análise de Dados!

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.