Implementando Variáveis de Ambiente e Segredos no GitHub Actions

Se você é novo nas variáveis de ambiente do GitHub Actions, talvez ainda não tenha aprendido como armazená-las. Mas é possível? Sim!

Neste tutorial, você aprenderá diferentes maneiras de salvar suas variáveis de ambiente do GitHub Actions e os segredos que você pode usar quando necessário ao trabalhar com o GitHub Actions.

Pronto? Continue lendo para começar!

Pré-requisitos

Este tutorial será uma demonstração prática que requer qualquer sistema operacional com Git instalado. O sistema operacional Ubuntu é usado no tutorial. Além disso, é necessário ter um conhecimento básico das operações do Git para enviar código para um repositório de variáveis de ambiente do GitHub Actions.

Configuração de Variáveis de Ambiente do GitHub Actions

Ao automatizar processos com fluxo de trabalho do GitHub Actions, você pode precisar associar variáveis de ambiente aos seus fluxos de trabalho. Como fazer isso? Primeiro, você precisa criar e especificar variáveis de ambiente personalizadas no fluxo de trabalho com a palavra-chave env.

1. Crie um diretório chamado .github/workflows onde você armazenará seu arquivo de fluxo de trabalho.

2. Em seguida, crie um arquivo com o nome de sua preferência no diretório .github/workflows. Mas para este exemplo, o arquivo é nomeado main.yml. Copie e cole o código abaixo no arquivo main.yml.

O código abaixo define e exibe a variável de ambiente API_KEY quando o código acionar o fluxo de trabalho.

name: env_tutorial
## Dispara o fluxo de trabalho quando houver um push ou 
## pull request na branch principal
on: [pull_request, push] 

env:
  ## Define variável de ambiente
  API_KEY: XXXXXXXXXXXX    

jobs:
  job1:
    ## O tipo de executor que o trabalho será executado, 
    ## aqui ele é executado no ubuntu mais recente
    runs-on: ubuntu-latest 
    steps:
      - name: step 1
        ## Referencie suas variáveis de ambiente
        run: echo "The API key is:${{env.API_KEY}}"   

  job2:
    runs-on: ubuntu-latest
    steps:
      - name: step 1
        ## Outra maneira de referenciar suas variáveis de ambiente
        run: echo "The API key is:$API_KEY"

3. Faça o commit e envie o código para o seu repositório no GitHub.

git add .
git commit -m "update"
git push
Pushing updates to the GitHub Actions environment variables repository

4. Agora, abra seu navegador da web e acesse seu projeto no GitHub. Clique na guia Actions, em seguida, clique no seu commit atual.

Você verá algo semelhante à imagem abaixo, que mostra que o GitHub executou o fluxo de trabalho.

GitHub actions Environment variables for repository

5. Por fim, clique em job1 ou job2, e você verá que referenciou com sucesso a variável de ambiente que inicializou.

Viewing Referenced Environment Variable (job1)
Viewing Referenced Environment Variable (job2)

Definindo uma Variável de Ambiente para um Trabalho

Agora que você inicializou a variável de ambiente em todo o arquivo de fluxo de trabalho, qualquer trabalho pode referenciar a variável de ambiente. Mas talvez você queira que apenas um trabalho faça referência à variável de ambiente. Se for o caso, coloque a palavra-chave env no próprio trabalho.

1. Substitua o código em seu arquivo main.yml pelo código abaixo.

O código abaixo mostra que, quando você coloca a variável de ambiente em um trabalho específico, outros trabalhos não podem referenciar a variável de ambiente.

name: env_tutorial
## Aciona o fluxo de trabalho quando há um push ou 
## pull request no branch principal
on: [pull_request, push] 

jobs:
  job1:
    ## O tipo de runner que o trabalho irá rodar
    runs-on: ubuntu-latest 
    env:
      ## Variável de ambiente
      API_KEY: XXXXXXXXXXXX    
    steps:
      - name: step 1
        ## Referencie suas variáveis de ambiente
        run: echo "The API key is:${{env.API_KEY}}"   

  job2:
    runs-on: ubuntu-latest
    steps:
      - name: step 1
        ## Outra forma de referenciar suas variáveis de ambiente
        run: echo "The API key is:$API_KEY"  

2. Confirme suas mudanças e envie os trabalhos do seu código para as variáveis de ambiente do GitHub Actions como fez na seção anterior.

3. Por fim, navegue até seu projeto no GitHub, então clique tanto em job1 quanto em job2 para ver a comparação deles:

  • job1 – Você verá que referenciou perfeitamente a variável de ambiente.
  • job2 – A chave da API está em branco.
Viewing Referenced Environment Variable (job1)
Viewing Referenced Environment Variable (job2)

Definindo uma Variável de Ambiente para uma Etapa

Agora que você aprendeu como especificar variáveis de ambiente dentro de um trabalho, deve estar se perguntando como pode fazer o mesmo com as etapas.

Para as etapas em um trabalho, você especifica a variável de ambiente dentro da etapa como fez para o trabalho.

1. Substitua o código que você tem no arquivo main.yml com o código abaixo.

No código abaixo, você especifica a variável de ambiente na etapa 1 mas não na etapa 2, e você verá o efeito nas etapas seguintes.

name: env_tutorial
## Aciona o fluxo de trabalho quando há um push, ou 
## pull request na branch principal
on: [pull_request, push] 

jobs:
  job1:
    ## O tipo de executor em que o trabalho será executado
    runs-on: ubuntu-latest 
    steps:
      - name: step 1
        env:
          ## Variável de ambiente para a etapa 1
          API_KEY: XXXXXXXXXXXX    
        ## Referencie suas variáveis de ambiente
        run: echo "The API key is:${{env.API_KEY}}"   
      - name: step 2
        ## Referencie suas variáveis de ambiente
        run: echo "The API key is:${{env.API_KEY}}"   

2. Agora, comita as mudanças e faça push do código para o GitHub.

3. Por fim, navegue até seu projeto nas variáveis de ambiente do GitHub Actions, e clique em job1.

Mesmo que você faça referência às duas chaves API no mesmo trabalho (job1) em ambas as etapas, etapa 2 não pôde acessar a chave API (em branco), como mostrado abaixo. Por quê? Porque você não especificou a variável de ambiente dentro da etapa 2 no seu código.

Setting environment variables for steps

Gerenciando Variáveis de Ambiente via Variáveis de Ambiente e Segredos do GitHub Actions

Em vez de codificar diretamente, você pode querer armazenar sua variável de ambiente de forma segura, e os segredos do GitHub podem fazer exatamente isso. As variáveis de ambiente do GitHub Actions criptografam os valores que você coloca em segredos, para que não sejam visíveis nem legíveis a olho nu.

O segredo criado com este método é acessível a todo o fluxo de trabalho, trabalhos e etapas; não há restrições.

Para armazenar sua variável de ambiente no GitHub Secrets:

1. Primeiro, envie seu código para o GitHub como você fez nas seções anteriores.

2. Em seguida, navegue até seu projeto no GitHub e clique na guia Configurações.

Clique em Segredos na guia abaixo para começar a adicionar um segredo.

Storing environment variables in Secrets

3. Depois, clique em Novo segredo do repositório, e você verá um formulário para preencher detalhes sobre o segredo que está adicionando.

Creating new repository secret

4. Preencha o formulário adequadamente (Nome e Valor) e clique no botão Adicionar segredo para enviar. Agora, o API_KEY está salvo nos segredos do GitHub. Dessa forma, o GitHub define com segurança variáveis de ambiente como segredos que você pode referenciar ao trabalhar com o GitHub Actions.

Filling name and value of the new secret

5. Edite seu arquivo main.yml e substitua a palavra-chave env por secrets.

Abaixo, você pode ver que você referencia a chave da API neste formato ${{secrets.API_KEY}} em vez de codificar a própria chave da API.

name: env_tutorial
## Aciona o fluxo de trabalho quando há um push ou 
## pull request no branch principal
on: [pull_request, push] 

jobs:
  job1:
    ## O tipo de executor que o trabalho irá rodar
    runs-on: ubuntu-latest 
    steps:
      - name: step 1
        ## Faça referência às suas variáveis de ambiente
        run: echo "The API key is:${{secrets.API_KEY}}"   

  job2:
    runs-on: ubuntu-latest
    steps:
      - name: step 1
        ## Faça referência às suas variáveis de ambiente
        run: echo "The API key is:${{secrets.API_KEY}}"  

6. Por fim, faça commit e push do código para o GitHub, e vá para o ambiente de variáveis de projeto no GitHub Actions. Faça referência à primeira seção.

Você verá algo semelhante à imagem abaixo, mas não poderá ver o API_key real, pois o GitHub criptografa os valores que você coloca em secrets.

Displaying API key from GitHub Actions environment variables secrets

Fazendo Referência às Variáveis de Ambiente Padrão do GitHub

Existem algumas variáveis de ambiente padrão fornecidas pelo GitHub, que você pode usar para acessar sistemas de arquivos no repositório em vez de codificar caminhos. As variáveis de ambiente padrão do GitHub permitem que você seja mais dinâmico ao referenciar variáveis de ambiente fornecidas pelo GitHub.

  • GITHUB_JOB – Fornece o job_id do job atual.
  • GITHUB_ACTION – Fornece o id da ação atual
  • GITHUB_ACTION_PATH – Fornece o caminho onde sua ação está localizada.
  • GITHUB_ACTOR – fornece o nome da pessoa ou aplicativo que iniciou o fluxo de trabalho, como seu nome de usuário do GitHub.
  • GITHUB_RUN_ID – fornece o número único do comando run.

Substitua o que você tem em seu arquivo main.yml com o código abaixo. O código abaixo exibe a variável de ambiente padrão declarada no código.

name: env_tutorial
## Ativa o fluxo de trabalho quando há um push ou 
## pull request no ramo principal
on: [pull_request, push] 

jobs:
  job1:
    ## O tipo de executor que o job será executado
    runs-on: ubuntu-latest 
    steps:
      - name: step 1
        run: |
          echo "The job_id is: $GITHUB_JOB"   # referencie as variáveis de ambiente padrão
          echo "The id of this action is: $GITHUB_ACTION"   # referencie as variáveis de ambiente padrão
          echo "The run id is: $GITHUB_RUN_ID" 
          echo "The GitHub Actor's username is: $GITHUB_ACTOR"
      - name: step 2
        run: |
          echo "The run id is: $GITHUB_RUN_ID"

Confira e envie as alterações de código para o GitHub, verifique suas ações no seu projeto de variáveis de ambiente das Ações do GitHub e você verá algo semelhante à imagem abaixo.

Referencing the Default GitHub environment variables

Conclusão

Ao longo deste tutorial, você aprendeu como gerenciar as variáveis de ambiente das Ações do GitHub. Agora você deve ter um conhecimento fundamental sobre como armazenar variáveis de ambiente de forma segura e como usar as padrão fornecidas pelo GitHub.

Agora, como você planeja incorporar esse novo conhecimento ao trabalhar com GitHub Actions? Talvez salvando as chaves de API necessárias para implantação?

Source:
https://adamtheautomator.com/github-actions-environment-variables/