Como usar variáveis/segredos no GitHub Actions

Neste artigo iremos explorar como na prática podemos guardar dados sensíveis como chaves, senhas ou connection strings para serem utilizadas em seu fluxo de CI/CD no GitHub. Veremos como configurar e utilizar variáveis e segredos no GitHub Actions de maneira prática, garantindo que seus pipelines sejam eficientes e seguros.

Secrets e variáveis

Primeiro, vamos começar pela definição dos 2 principais pontos. Secrets são, por definição literal, segredos ou informações que poucas pessoas podem e devem ter acesso, enquanto variáveis são informações que podem variar dependendo do contexto em que você se encontra.

No exemplo acima, a conexão com o banco de dados da aplicação representa um dado sensível, que não pode ser compartilhado com qualquer cargo dentro do projeto, por esse motivo sua conection string ou senha só é de conhecimento do Arquiteto e Gerente envolvidos. Do outro lado, variáveis podem ser elementos ou informações necessárias no momento do build da aplicação e que podem variar até por ambiente, por exemplo:

  • Uma aplicação em ambiente de produção poderá ter alguns países ou features desabilitadas, mas no ambiente de homologação não.

E por um motivo bem óbvio, essas informações não são secretas: por não expor nenhuma fragilidade do sistema a ponto de impactar o negócio.

Como utilizar secrets e variáveis

De forma geral, secrets e variáveis são organizadas em dois grandes escopos. Temos secrets e variáveis que podem ser criadas dentro de uma organização, o que torna elas acessíveis para quaisquer repositórios/pipelines e secrets e variáveis que podem ser criadas para o escopo único e isolado do projeto/repositório.Para configurar um secret ou uma variável a nível de organização, basta acessar as configurações de sua organização e em segurança->actions.Uma vez configurado, os dados estarão disponíveis para qualquer repositório dentro da organização.Para configurar no contexto de um projeto específico, devemos acessar as configurações do repositório e seguir o mesmo caminho, segurança->actions.

Feitas as devidas configurações, agora precisamos utilizar os valores salvos durante a pipeline. No código abaixo vemos exemplos dos dois casos. Para incluir o valor de um secret no código da pipeline, usamos a sintaxe ${{ secrets.NOME_DO_SECRET }} e para variáveis usamos ${{ env.NOME_DA_VARIAVEL }}.

				
					name: Example Workflow
on: [push]
jobs:
  build:
    runs-on: ubuntu-latest
    steps:
    - name: Check out code
      uses: actions/checkout@v2
              with:
                token: ${{ secrets.ACTIONS_TOKEN }}

    - name: Print variables
      run: echo "Application Name: $APP_NAME"
      run: echo "Environment: ${{ env.MY_VARIABLE }}"
				
			

Boas práticas e dicas

  • Para finalizar este tópico, deixaremos aqui algumas boas práticas de mercado para vocês gerenciarem seus projetos:
  • Utilize um padrão de escrita como camel, kebab pascal ou snake case. Opte por um e siga como padrão.
  • Crie nomes com contextos, seja através de sufixos ou prefixos, como ambiente, projeto, região geográfica: prod-br-database-password.
    Crie nomes que sejam fáceis de entender. Normalmente, senhas e variáveis dificilmente são documentadas, então evite nomes genéricos como passConfig ou senhaBanco.

E por último, sempre faça uso das variáveis já pré definidas pelo GitHub, essas variáveis podem auxiliar no processo para coletar alguma informação específica do projeto ou da pipeline durante sua execução sem muitos esforços.

Acelere a sua carreira conosco!

A Mentoria DevOps é um programa de mentoria de 12 meses com encontros semanais ao vivo, com um grupo seleto e restrito, onde estaremos do seu lado para mantê-lo relevante e atualizado no mercado de tecnologia, aprendendo e implementando as melhores práticas e ferramentas de DevOps.

Clique aqui para entrar na prioridade pela melhor oferta de lançamento

Gerenciar variáveis e segredos de maneira eficaz no GitHub Actions é essencial para garantir a segurança e a funcionalidade das suas pipelines. Usando as práticas abordadas neste artigo você pode criar pipelines mais seguras e robustas, protegendo informações sensíveis e permitindo uma fácil configuração e reutilização de workflows. Lembre-se sempre de revisar suas configurações e manter seus segredos seguros e atualizados.