Aqui mostro a troca de variáveis de ambiente GITHUB_OUTPUT no GIT HUB Actions
Os outputs no GitHub Actions são utilizadas para exportar variáveis entre seus jobs. São utilizadas quando queremos compartilhar resultados de uma action com outras etapas do nosso fluxo.
O GitHub publicou em seu blog um post para efetuarmos uma alteração nos fluxos criados, que utilizam o “set-output OU save-state” . As exportações assim como o exemplo abaixo serão substituídas a partir de 31 de Maio de 2023. Será utilizada a variável GITHUB_OUTPUT para a exportação das variáveis para serem compartilhadas.
- name: Save state
run: echo "::save-state name={name}::{value}"
- name: Set output
run: echo "::set-output name={name}::{value}"
A partir da data 31/03/23, as regras acima não mais funcionarão. Neste post mostro como alteramos estas variáveis para compartilhamento das variáveis.
Abaixo temos um exemplo de uma Action completa com os exemplos da exportação para a GITHUB_OUTPUT, veja as linhas destacadas.
Arquivo action.yaml
name: 'Hello World'
description: 'Greet someone'
inputs:
who-to-greet: # id of input
description: 'Name of Variable'
required: true
default: 'World'
singer:
required: true
default: "Bob Marley"
outputs:
random-number:
description: "Random number"
value: ${{ steps.random-number-generator.outputs.random-number }}
my-name:
description: "Meu nome"
value: ${{ steps.my-name-generator.outputs.my-name}}
runs:
using: "composite"
steps:
- run: echo Hello ${{ inputs.who-to-greet }}.
shell: bash
- id: random-number-generator
run: echo "random-number=$(echo $RANDOM)" >> $GITHUB_OUTPUT
shell: bash
- id: name-of-singer
run: echo "The name of singer is" ${{ inputs.singer }}
shell: bash
- run: echo "${{ github.action_path }}" >> $GITHUB_PATH
shell: bash
- run: goodbye.sh
shell: bash
- id: my-name-generator
run: echo "my-name=Trinta" >> $GITHUB_OUTPUT
shell: bash
- id: test-variable
run: echo "TESTE"
shell: bash
Na linha 24 e 34 acima, temos o modo correto em que a devemos exportar (trocar) as variáveis de output. Na linha 24 exportamos uma variável chamada random-number e como conteúdo, a resolução do $(echo $RANDOM), que nada mais fará que mandar um número aleatório para a variável e enviará para a variável GITHUB_OUTPUT, para que outros jobs possam consumi-la.
Para utilizar as variáveis em um job do tipo composite, é obrigatória a identificação com as flags “-id: <nome>”, conforme o exemplo acima.
Abaixo, temos o Workflow que consumirá as variáveis acima.
Arquivo ci.yaml
on: [push]
jobs:
hello_world_job:
runs-on: self-hosted
name: A job to say hello
steps:
- uses: actions/checkout@v3
- id: foo
uses: trintadevops/learnactions@main
with:
who-to-greet: 'Trinta'
- run: echo random-number ${{ steps.foo.outputs.random-number }}
shell: bash
- run: echo "What's your name?" ${{ steps.foo.outputs.my-name}}
shell: bash
As linhas 12 e 14 consomem as variáveis exportadas na action acima, utilizando a sequência steps.foo.outputs.random-number.
Vamos fatiar o O steps.foo.outputs.random-number para explicar.
O “steps.foo”, refere-se ao id: foo da linha 8, que utiliza a action do repositório trintadevops/learnactions@main.
O restante outputs.random-number refere-se a variável random-number que foi exportada no arquivo da action composite, o arquivo action.yaml acima.

Deixe um comentário