Armazenando senhas - GitHub Actions

Oi pessoal! Recebi uma dúvida no privado que pode ser interessante para outras pessoas, então vou colar a resposta por aqui também.

A dúvida foi:

Estou tentando utilziar o github action para rodar uma função que pega dados de uma api que utliza credenciais (usuario e senha). Guardei estas credenciais no .Renviron usando o usethis. Quando eu faço o POST no site, resgato as credenciais usando Sys.getenv().

Mas, isso não funciona no github action que minhas credenciais vem vazias e dá erro no action.

O caminho é esse que eu fiz mesmo? Tem alguma forma de resolver?

A minha resposta foi:

Oi, tudo bem?
O arquivo .Renviron está versionado no git também? O .Renviron pode ser vinculado ao seu usuário, ou também ao projeto. Se for pelo projeto, ele salvaria o arquivo na pasta do projeto e seria versionado no Git. Poréeeem… se seu repositório for público, não deixe o .Renviron no seu repositório, é perigoso pois pessoas poderão ver suas senhas.

Quando estamos usando GHA, podemos adicionar senhas na sessão SECRETS do GitHub. Assim ninguém (Exceto você, quando cria um SECRETS), verá a senha/credenciais.

Isso fica nas configurações do repositório, e o link usa esse padrão:
https://github.com/SEU-USUARIO/SEU-REPOSITORIO/settings/secrets/actions

Exemplo de um repositório privado meu:

Também é preciso adaptar o código do action para buscar essa variável no Secrets. Ex de código desse mesmo repo privado (só um trecho):

      - name: Execute Script
        env:
          GITHUB_PAT: ${{ secrets.GITHUB_PAT }}
          SHINYAPPS_TOKEN: ${{ secrets.SHINYAPPS_TOKEN }}
          SHINYAPPS_SECRET: ${{ secrets.SHINYAPPS_SECRET }}
          AUTH0_KEY: ${{ secrets.AUTH0_KEY }}
          AUTH0_SECRET: ${{ secrets.AUTH0_SECRET }}
          GDRIVE_PASSWORD: ${{ secrets.GDRIVE_PASSWORD }}
          GOOGLE_AUTHENTICATION_CREDENTIALS: ${{ secrets.GOOGLE_AUTHENTICATION_CREDENTIALS }}

        run: |
          Rscript "inst/atualizar-dados.R"
          Rscript "inst/atualizar-app.R"

Com isso eu consigo acessar essas variáveis com senha/creds, no meu script usando por exemplo Sys.getenv('SHINYAPPS_TOKEN')

Você consegue adaptar ao seu caso usando esses exemplos?

Abraços

2 curtidas