Lançando Variáveis de Ambiente e Segredos do GitHub Actions

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

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

Preparado? Continue lendo para começar!

Pré-requisitos

Este tutorial será uma demonstração prática que requer qualquer sistema operacional com o 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 para Variáveis de Ambiente do GitHub Actions

Ao automatizar processos com o fluxo de trabalho do GitHub Actions, você pode precisar anexar 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 desejado 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 aciona o fluxo de trabalho.

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

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

jobs:
  job1:
    ## O tipo de executor que a tarefa será executada, 
    aqui é executado no ubuntu latest
    runs-on: ubuntu-latest 
    steps:
      - name: step 1
        ## Faça referência às 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 fazer referência às suas variáveis de ambiente
        run: echo "The API key is:$API_KEY"

3. Faça 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 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 referencie a 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
## Dispara o fluxo de trabalho quando houver um push ou 
## pull request no branch principal
on: [pull_request, push] 

jobs:
  job1:
    ## O tipo de executor que o trabalho será executado
    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 maneira de referenciar suas variáveis de ambiente
        run: echo "The API key is:$API_KEY"  

2. Faça o commit de suas alterações e envie trabalhos do seu código para as variáveis de ambiente do GitHub Actions como você fez na seção anterior.

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

  • trabalho1 – Você verá que referenciou perfeitamente a variável de ambiente.
  • trabalho2 – 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, assim como fez para o trabalho.

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

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

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 utilizará
    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, faça o commit das alterações e envie o código para o GitHub.

3. Por fim, vá para o seu projeto nas variáveis de ambiente do GitHub Actions e clique em trabalho1.

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

Setting environment variables for steps

Gerenciando Variáveis de Ambiente através de 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 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 passos; não há restrições.

Para armazenar sua variável de ambiente em Segredos do GitHub:

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

2. Em seguida, vá para o seu projeto no GitHub e clique na guia Configurações.

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

Storing environment variables in Secrets

3. Depois, clique no Novo segredo do repositório, e você verá um formulário para preencher os 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 em Segredos do GitHub. Neste formulário, o GitHub define de forma segura 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 o 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 chave da API diretamente.

name: env_tutorial
## Dispara 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 a tarefa irá rodar
    runs-on: ubuntu-latest 
    steps:
      - name: step 1
        ## Referencie suas variáveis de ambiente
        run: echo "The API key is:${{secrets.API_KEY}}"   

  job2:
    runs-on: ubuntu-latest
    steps:
      - name: step 1
        ## Referencie suas variáveis de ambiente
        run: echo "The API key is:${{secrets.API_KEY}}"  

6. Por fim, comite e envie o código para o GitHub, e acesse as variáveis de ambiente do seu projeto no GitHub Actions. Consulte a primeira seção.

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

Displaying API key from GitHub Actions environment variables secrets

Referenciando Variáveis de Ambiente Padrão do GitHub

Há 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 diretamente. 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.

Alguns dos caminhos que você pode obter com as variáveis de ambiente padrão são os seguintes:

  • GITHUB_JOB – Fornece o ID do trabalho 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 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
        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"

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

Referencing the Default GitHub environment variables

Conclusão

Ao longo deste tutorial, você aprendeu como gerenciar variáveis de ambiente de GitHub Actions. Agora você deve ter um conhecimento fundamental sobre como armazenar variáveis de ambiente com segurança e como usar as 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/