Variáveis de ambiente e segredos

CI/CD para Machine Learning

Ravi Bhadauria

Machine Learning Engineer

Contextos

  • Acesse informações sobre variáveis e dados predefinidos
    • execuções de workflow
    • variáveis
    • ambientes do runner
    • jobs e steps
  • Acesse contextos usando a sintaxe de expressão ${{ context.XXX }}
  • Contextos usados neste curso
    • github: informações sobre a execução do workflow
    • env: variáveis definidas no workflow
    • secrets: nomes e valores disponíveis ao workflow
    • job: informações sobre o job atual
    • runner: informações sobre a máquina
1 https://docs.github.com/en/actions/learn-github-actions/contexts
CI/CD para Machine Learning

Variáveis

  • Armazene informações não sensíveis em texto simples
    • flags do compilador, nomes de usuário, caminhos de arquivo
  • Declaradas como valor da chave env
  • Escopo global/local é controlado pelo nível onde são definidas
  • Acessadas do contexto env como ${{ env.ENV_VAR }}
name: Greeting on variable day
# Global env
env:
  Greeting: Hello

jobs: greeting_job: runs-on: ubuntu-latest # Local env: scoped to greeting_job env: First_Name: Ravi
steps: - run: | echo "${{ env.Greeting }} \ ${{ env.First_Name }}."
CI/CD para Machine Learning

Segredos

  • Armazene informações sensíveis de forma criptografada
    • senhas, chaves de API
  • Acesse valores via contexto secrets
    • ${{ secrets.SuperSecret }}
  • Podem ser usados como input ou variável de ambiente
steps:
  - name: Hello world action
    env: # defina o secret como uma env var
      super_secret: ${{ secrets.SuperSecret }}

with: # ou como input super_secret: ${{ secrets.SuperSecret }}
  • Imprimindo um secret

    steps:
    - name: Print secret
      run: |
        echo "my secret is \
        ${{ secrets.SuperSecret }}"
    
  • Saída

Imagem do log do workflow mostrando que *** é impresso no lugar do valor real do secret

CI/CD para Machine Learning

Definindo secrets

Imagem mostrando a aba Settings na página inicial do repositório

  • Vá em Security > Secrets and Variables > Actions

Imagem mostrando como selecionar a aba de secrets

CI/CD para Machine Learning

Definindo secrets

Imagem mostrando como definir o nome e o valor do secret

CI/CD para Machine Learning

Secret GITHUB_TOKEN

  • Secret embutido fornecido pelo GitHub Actions
  • Usado para executar ações do workflow
    • Clonar o repositório e buscar o código
    • Abrir e fechar issues e pull requests
    • Comentar em issues e pull requests
  • Disponível automaticamente em todo workflow do GitHub Actions
    • Acesso via ${{ secrets.GITHUB_TOKEN }}
  • Permissões podem ser ajustadas no nível certo
CI/CD para Machine Learning

Exemplo: comentando em um pull request

  • Conceda permissão para escrever comentários em PR
permissions: 
  pull-requests: write
  • Use GITHUB_TOKEN para autorizar
permissions: 
  pull-requests: write 
steps:
  - name: Comment PR
    uses: thollander/actions-comment-pull-request@v2
    with:
      GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
      message: |
        Hello world ! :wave:

Trecho da página de pull request mostrando comentário automático do bot github-actions

1 https://gist.github.com/rbhadauria29/6d7fc51944b4fb48425c3c307fec77c6
CI/CD para Machine Learning

Vamos praticar!

CI/CD para Machine Learning

Preparing Video For Download...