Explorar contextos e expressões no GitHub
Os contextos são uma forma de acessar informações sobre execuções de fluxo de trabalho, variáveis, ambientes dos executores, trabalhos e etapas. Cada contexto é um objeto que contém propriedades, que podem ser cadeias de caracteres ou outros objetos.
Você pode acessar contextos usando a sintaxe da expressão. Uma expressão pode ser qualquer combinação de valores literais, referências a um contexto ou funções. É possível combinar literais, referências de contexto e funções usando operadores.
Contextos
Ao criar fluxos de trabalho e ações, sempre considere se o código poderá executar entradas não confiáveis de possíveis invasores. Certos contextos devem ser tratados como entradas não confiáveis, uma vez que um invasor pode inserir seu próprio conteúdo malicioso. Para obter mais informações, visite a proteção de segurança para o GitHub Actions."
A tabela a seguir contém exemplos de contextos disponíveis no GitHub, não é uma listagem completa.
| Nome do contexto | Tipo | Descrição |
|---|---|---|
github |
object |
Informações sobre a execução do fluxo de trabalho. |
env |
object |
Contém variáveis definidas em um fluxo de trabalho, um trabalho ou uma etapa. |
vars |
object |
Contém variáveis definidas nos níveis de repositório, organização ou ambiente. |
job |
object |
Informações sobre o trabalho em execução no momento. |
Dica
Para obter uma listagem completa de contextos, visite Sobre contextos.
Determinar quando usar contextos
O GitHub Actions inclui duas coleções de variáveis chamadas variáveis e contextos padrão. Estas variáveis são destinadas a serem usadas em diferentes pontos do fluxo de trabalho:
- Variáveis de ambiente padrão: essas variáveis de ambiente existem apenas no executor que está executando seu trabalho.
- Contextos: você pode usar a maioria dos contextos em qualquer ponto do fluxo de trabalho, inclusive quando as variáveis padrão não estariam disponíveis.
No exemplo a seguir, a instrução if verifica o contexto github.ref para determinar o nome da ramificação atual. A verificação de if é processada e o trabalho só será enviado ao executor se o resultado for true. Depois que o trabalho é enviado para o executor, a etapa é executada e refere-se à variável $GITHUB_REF do executor.
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"
Contextos disponíveis no GitHub Actions
A tabela a seguir contém os contextos de nível superior disponíveis, uma breve descrição e um link para obter mais informações sobre as propriedades do objeto.
| Contexto de nível superior | Descrição | Propriedades e exemplos |
|---|---|---|
github |
Contexto de nível mais alto disponível em qualquer trabalho ou etapa de um fluxo de trabalho. | Propriedades do github contexto. |
env |
Contém variáveis definidas em um fluxo de trabalho, um trabalho ou uma etapa. Ele não contém variáveis herdadas pelo processo runner. | Propriedades do env contexto. |
vars |
Contém variáveis de configuração personalizadas definidas na organização, repositório e níveis de ambiente. | Exemplos de vars uso. |
job |
Contém informações sobre o trabalho em execução no momento. | Propriedades do job contexto. |
jobs |
Disponível apenas em fluxos de trabalho reutilizáveis e só pode ser usado para definir saídas para um fluxo de trabalho reutilizável. | Propriedades do jobs contexto. |
steps |
Contém informações sobre as etapas concluídas no trabalho atual que têm um id especificado. |
Propriedades do steps contexto. |
runner |
Contém informações sobre o executor que está executando o trabalho atual. | Propriedades do runner contexto. |
secrets |
Contém os nomes e valores de segredos que estão disponíveis para uma execução de fluxo de trabalho. | Propriedades do secrets contexto. |
strategy |
Contém informações sobre a estratégia de execução da matriz para o trabalho atual. | Propriedades do strategy contexto. |
matrix |
Contém as propriedades de matriz definidas no arquivo de fluxo de trabalho que se aplicam ao trabalho atual. | Propriedades do matrix contexto. |
needs |
Contém saídas de todos os trabalhos definidos como uma dependência direta do trabalho atual. | Propriedades do matrix contexto. |
inputs |
Contém propriedades de entrada passadas para uma ação, para um fluxo de trabalho reutilizável ou para um fluxo de trabalho disparado manualmente. | Propriedades do inputs contexto. |
Expressões
Você pode usar expressões para definir variáveis de ambiente programaticamente em arquivos de fluxo de trabalho e contextos de acesso. Uma expressão pode ser qualquer combinação de valores literais, referências a um contexto ou funções. É possível combinar literais, referências de contexto e funções usando operadores.
As expressões são normalmente usadas com a palavra-chave if condicional em um arquivo de fluxo de trabalho para determinar se uma etapa deve ser executada. Quando um if condicional for true, a etapa será executada.
Você precisa usar uma sintaxe ${{ <expression> }}específica, para dizer ao GitHub para avaliar uma expressão em vez de tratá-la como uma cadeia de caracteres. A exceção a essa regra é quando você está usando expressões em uma if cláusula, em que elas geralmente podem ser omitidas ${{ e }}.
O exemplo de código a seguir mostra a configuração de uma variável de ambiente.
env:
MY_ENV_VAR: ${{ <expression> }}
Literais
Como parte de uma expressão, você pode usar os tipos de dados boolean, null, number ou string. Em condicionais, valores falsos (false, 0, -0, "", '', null) são coeridos para false e valores verdadeiros (true e outros valores não falsos) são coeridos para true. O exemplo a seguir mostra exemplos de implementação de literais.
env:
myNull: ${{ null }}
myBoolean: ${{ false }}
myIntegerNumber: ${{ 711 }}
myFloatNumber: ${{ -9.2 }}
myHexNumber: ${{ 0xff }}
myExponentialNumber: ${{ -2.99e-2 }}
myString: Mona the Octocat
myStringInBraces: ${{ 'It''s open source!' }}
Operadores
Os operadores desempenham um papel crucial na avaliação de expressões. Uma expressão pode consistir em valores literais, referências a contextos ou funções. Os operadores permitem que você combine esses elementos para criar expressões mais complexas. Aqui estão alguns operadores-chave:
Operadores lógicos:
&&(e): Combina duas condições, ambas devem ser verdadeiras para que a expressão geral seja avaliada como true.||(ou): Combina duas condições e a expressão é avaliada como true se qualquer condição for verdadeira.!(não): nega uma condição, invertendo seu valor de verdade.
Operadores de igualdade:
==(igual): compara dois valores de igualdade.!=(não é igual): verifica se dois valores não são iguais.
Operadores de comparação:
<(menor que)>(maior que)<=(menor ou igual a)>=(maior ou igual a)
Esses operadores permitem que você crie fluxos de trabalho dinâmicos determinando quando etapas específicas devem ser executadas com base nas condições. Lembre-se de usar a sintaxe correta para expressões, como $\{\{ <expression> \}\}$, por exemplo, para garantir a avaliação adequada.
Para obter mais informações sobre operadores, visite Operadores.