Sobre as variáveis de ambiente
GitHub define as variáveis-padrão do ambiente disponíveis para cada etapa da execução de um fluxo de trabalho. As variáveis de ambiente diferenciam entre maiúsculas e minúsculas. Os comandos executados em ações ou etapas podem criar, ler e modificar as variáveis do ambiente.
Para definir as variáveis do ambiente personalizadas, você deverá especificar as variáveis no arquivo do fluxo de trabalho. Você pode definir as variáveis de ambiente para uma etapa, trabalho ou para todo um fluxo de trabalho, usando as palavras-chave jobs.<job_id>.steps[*].env
, jobs.<job_id>.env
, and env
. Para obter mais informações, consulte "Sintaxe de fluxo de trabalho para o GitHub".
jobs:
weekday_job:
runs-on: ubuntu-latest
env:
DAY_OF_WEEK: Mon
steps:
- name: "Hello world when it's Monday"
if: env.DAY_OF_WEEK == 'Mon'
run: echo "Hello $FIRST_NAME $middle_name $Last_Name, today is Monday!"
env:
FIRST_NAME: Mona
middle_name: The
Last_Name: Octocat
Para usar o valor de uma variável de ambiente em um arquivo do fluxo de trabalho, você deve usar o contexto env
. Se você deseja usar o valor de uma variável de ambiente dentro de um executor, você poderá usar o método normal do sistema operacional do executor para ler variáveis de ambiente.
Se você usar a chave executar
do arquivo de fluxo de trabalho para ler variáveis de ambiente de dentro do sistema operacional do executor (como mostrado no exemplo acima), a variável será substituída no sistema operacional do executor depois que a tarefa for enviada para o executor. Para outras partes de um arquivo de fluxo de trabalho, você deve usar o contexto env
para ler variáveis de ambiente. Isso ocorre porque as chaves do fluxo de trabalho (como se
) exigem que a variável seja substituída durante o processamento do fluxo de trabalho antes de ser enviada para o executor.
Você também pode usar o arquivo de ambiente GITHUB_ENV
para definir uma variável de ambiente que as seguintes etapas em um fluxo de trabalho podem usar. O arquivo de ambiente pode ser usado diretamente por uma ação ou como um comando de shell em um arquivo de fluxo de trabalho usando a palavra-chave executar
. Para obter mais informações, consulte "Comandos do fluxo de trabalho para GitHub Actions".
Variáveis padrão de ambiente
É altamente recomendável que as ações usem as variáveis do ambiente para acessar o sistema do arquivo em vez de usar os caminhos do arquivo com codificação rígida. GitHub define as variáveis de ambiente para ações a serem usadas em todos os ambientes executores.
Variável de ambiente | Descrição |
---|---|
CI | Definido sempre como verdadeiro . |
GITHUB_WORKFLOW | Nome do fluxo de trabalho. |
GITHUB_RUN_ID | Um número exclusivo para cada execução em um repositório. Este número não muda se você executar novamente o fluxo de trabalho. |
GITHUB_RUN_NUMBER | Um número exclusivo para cada execução de um fluxo de trabalho específico em um repositório. Este número começa em 1 para a primeira execução do fluxo de trabalho, e incrementa a cada nova execução. Este número não muda se você executar novamente o fluxo de trabalho. |
GITHUB_ACTION | Identificador único (id ) da ação. |
GITHUB_ACTIONS | Definido sempre como verdadeiro quando GitHub Actions estiver executando o fluxo de trabalho. Você pode usar esta variável para diferenciar quando os testes estão sendo executados localmente ou por GitHub Actions. |
GITHUB_ACTOR | Nome da pessoa ou aplicativo que iniciou o fluxo de trabalho. Por exemplo, octocat . |
GITHUB_REPOSITORY | Nome do repositório e o proprietário. Por exemplo, octocat/Hello-World . |
GITHUB_EVENT_NAME | Nome do evento de webhook que acionou o workflow. |
GITHUB_EVENT_PATH | Caminho do arquivo com a carga completa do evento webhook. Por exemplo, /github/workflow/event.json . |
GITHUB_WORKSPACE | Caminho do diretório do espaço de trabalho do GitHub. O diretório de área de trabalho é uma cópia do repositório se o fluxo de trabalho usar a ação actions/checkout. Se você não usar a ação actions/checkout , o diretório estará vazio. Por exemplo, /home/runner/work/my-repo-name/my-repo-name . |
GITHUB_SHA | Commit SHA que acionou o fluxo de trabalho. Por exemplo, ffac537e6cbbf934b08745a378932722df287a53 . |
GITHUB_REF | Branch ou ref tag que acionou o fluxo de trabalho. Por exemplo, refs/heads/feature-branch-1 . Se não houver branch ou tag disponível para o tipo de evento, a variável não existirá. |
GITHUB_HEAD_REF | Definir somente para eventos de pull request. O nome do branch principal. |
GITHUB_BASE_REF | Definir somente para eventos de pull request. O nome do branch de base. |
GITHUB_SERVER_URL | Retorna a URL do servidor GitHub. Por exemplo: https://github.com . |
GITHUB_API_URL | Retorna a URL da API. Por exemplo: https://api.github.com . |
GITHUB_GRAPHQL_URL | Retorna a URL API do GraphQL. Por exemplo: https://api.github.com/graphql . |
Observação: Se você precisar usar o URL de um fluxo de trabalho em um trabalho, você poderá combinar estas variáveis de ambiente: $GITHUB_SERVER_URL/$GITHUB_REPOSITORY/actions/runs/$GITHUB_RUN_ID
Determinar quando usar variáveis de ambiente padrão ou contextos
GitHub Actions includes a collection of variables called contexts and a similar collection of variables called default environment variables. These variables are intended for use at different points in the workflow:
- Default environment variables: These variables exist only on the runner that is executing your job. Para obter mais informações, consulte "Variáveis de ambiente padrão".
- Contexts: You can use most contexts at any point in your workflow, including when default environment variables would be unavailable. For example, you can use contexts with expressions to perform initial processing before the job is routed to a runner for execution; this allows you to use a context with the conditional
if
keyword to determine whether a step should run. Once the job is running, you can also retrieve context variables from the runner that is executing the job, such asrunner.os
. Para obter mais informações, consulte "Contextos".
The following example demonstrates how these different types of environment variables can be used together in a job:
name: CI
on: push
jobs:
prod-check:
if: github.ref == 'refs/heads/main'
runs-on: ubuntu-latest
steps:
- run: echo "Deploying to production server on branch $GITHUB_REF"
In this example, the if
statement checks the github.ref
context to determine the current branch name; if the name is refs/heads/main
, then the subsequent steps are executed. The if
check is processed by GitHub Actions, and the job is only sent to the runner if the result is true
. Once the job is sent to the runner, the step is executed and refers to the $GITHUB_REF
environment variable from the runner.
Convenções de nomenclatura para variáveis de ambiente
ObservaçãoGitHub reserva o prefixo da variável de ambiente GITHUB_
para uso interno por GitHub. Definir uma variável de ambiente ou segredo com o prefixo GITHUB_
resultará em erro.
Qualquer variável de ambiente nova que você definir e apontar para um local no sistema de arquivos deve ter um sufixo _PATH
. As variáveis padrão HOME
e GITHUB_WORKSPACE
são exceções a essa convenção porque as palavras "inicial" e "espaço de trabalho" já indicam o local.