Implementar variáveis e scripts em um fluxo de trabalho

Concluído

Agora que você conhece os componentes de um arquivo de fluxo de trabalho, vamos explorar como personalizar esses fluxos de trabalho para vários cenários. Nesta unidade, nos concentraremos em como usar variáveis e scripts para otimizar o fluxo de trabalho. As variáveis fornecem uma maneira de armazenar e reutilizar informações de configuração sem sentido. Você pode armazenar quaisquer dados de configuração, como sinalizadores de compilador, nomes de usuário ou nomes de servidor como variáveis. As variáveis são interpoladas no computador executor que executa seu fluxo de trabalho. Os comandos que são executados em ações ou etapas do fluxo de trabalho podem criar, ler e modificar variáveis.

Você pode definir suas próprias variáveis personalizadas ou usar as variáveis de ambiente padrão definidas automaticamente pelo GitHub. Você pode criar uma variável personalizada de duas maneiras.

  • Para definir uma variável de ambiente para uso em um só fluxo de trabalho, você pode usar a chave env do arquivo do fluxo de trabalho.
  • Ao definir uma variável de configuração para vários fluxos de trabalho, é possível fazê-lo no nível da organização, do repositório ou do ambiente.

Definir variáveis de ambiente para um único fluxo de trabalho

Para definir uma variável de ambiente personalizada para uso em um único fluxo de trabalho, é possível usar a chave env no arquivo do fluxo de trabalho. O escopo de uma variável personalizada definida por esse método é limitado ao elemento em que ele é definido. Você pode definir variáveis cujos escopos são definidos como:

  • O fluxo de trabalho inteiro, usando env no nível superior do arquivo de fluxo de trabalho.
  • O conteúdo de um trabalho dentro de um fluxo de trabalho usando jobs.<job_id>.env.
  • Uma etapa específica dentro de um trabalho, usando jobs.<job_id>.steps[*].env.

Observação

Ambos jobs.<job_id>.env e jobs.<job_id>.steps[*].env estão implementando contextos que são abordados posteriormente neste módulo.

O exemplo de fluxo de trabalho a seguir implementa duas variáveis, DAY_OF_WEEK e Greeting, para produzir uma saudação quando é executado.

name: Greeting on variable day

on:
  workflow_dispatch

env:
  DAY_OF_WEEK: Monday

jobs:
  greeting_job:
    runs-on: ubuntu-latest
    env:
      Greeting: Hello
    steps:
      - name: "Say Hello"
        run: echo "$Greeting, today is $DAY_OF_WEEK!"

Convenções de nomenclatura para variáveis de ambiente

Ao definir uma variável de ambiente, você não pode usar nenhum dos nomes de variável de ambiente padrão. Se você tentar substituir o valor de uma dessas variáveis padrão, a atribuição será ignorada.

Dica

Para obter uma lista completa de variáveis de ambiente padrão, visite variáveis de ambiente padrão.

Criar variáveis de configuração para um repositório

Para criar segredos ou variáveis no GitHub para um repositório de conta pessoal, você deve ser o proprietário do repositório. Para criar segredos ou variáveis no GitHub para um repositório da organização, você deve ter acesso admin. Por fim, para criar segredos ou variáveis para um repositório de conta pessoal ou um repositório de organização por meio da API REST, você deve ter acesso de colaborador.

Precedência da variável de configuração

Se houver uma variável com o mesmo nome em vários níveis, a variável no nível mais baixo terá precedência. Por exemplo, se uma variável no nível da organização tiver o mesmo nome que uma no nível do repositório, a segunda terá precedência. Da mesma forma, se uma organização, um repositório e um ambiente tiverem uma variável com mesmo nome, àquela no nível do ambiente terá precedência.

Adicionar scripts ao fluxo de trabalho

Você pode usar um fluxo de trabalho do GitHub Actions para executar scripts e comandos de shell, que são executados no executor atribuído. O exemplo a seguir demonstra como usar a run palavra-chave para executar o comando npm install -g bats no executor.

jobs:
  example-job:
    runs-on: ubuntu-latest
    steps:
      - run: npm install -g bats

Para executar um script armazenado no seu repositório, primeiro confira o repositório no executor. O exemplo a seguir: verifica o repositório; define o diretório de trabalho – o local dos scripts no repositório; e executa o my-script.sh script.

jobs:
  example-job:
    runs-on: ubuntu-latest
    defaults:
      run:
        working-directory: ./scripts
    steps:
      - name: Check out the repository to the runner
        uses: actions/checkout@v4  
      - name: Run a script
        run: ./my-script.sh

Todos os scripts que você deseja que um trabalho de fluxo de trabalho execute devem ser executáveis. Você pode passar o script como um argumento para o interpretador que executa o script - por exemplo, run: bash script.sh - ou tornando o próprio arquivo executável.