# [PATCH] CI: migrate away from deprecated "set-output" syntax

9 messages from 2022-12-06 to 2022-12-08. Participants: Ævar Arnfjörð Bjarmason, Victoria Dye, Taylor Blau, Junio C Hamano.
Thread: https://gitlist.dev/t/58910

## Ævar Arnfjörð Bjarmason, 2022-12-06 20:00

Subject: [PATCH] CI: migrate away from deprecated "set-output" syntax
Message-ID: <patch-1.1-deb65805345-20221206T195811Z-avarab@gmail.com>
URL: https://gitlist.dev/e/patch-1.1-deb65805345-20221206T195811Z-avarab%40gmail.com

```
As noted in [1] and the warnings the CI itself is spewing echoing
outputs to stdout is deprecated, and they should be written to
"$GITHUB_OUTPUT" instead.

1. https://github.blog/changelog/2022-10-11-github-actions-deprecating-save-state-and-set-output-commands/

Signed-off-by: Ævar Arnfjörð Bjarmason <avarab@gmail.com>
---

Along with my just-sent
https://lore.kernel.org/git/patch-1.1-4c1dcc89e7a-20221206T195552Z-avarab@gmail.com/
and Junio's https://lore.kernel.org/git/xmqq1qpd9bys.fsf@gitster.g/
this should make our CI warning free.

 .github/workflows/main.yml | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml
index 9afacfa0b33..d1e16009b11 100644
--- a/.github/workflows/main.yml
+++ b/.github/workflows/main.yml
@@ -34,7 +34,7 @@ jobs:
           then
             enabled=no
           fi
-          echo "::set-output name=enabled::$enabled"
+          echo "enabled=$enabled" >>$GITHUB_OUTPUT
       - name: skip if the commit or tree was already tested
         id: skip-if-redundant
         uses: actions/github-script@v6
-- 
2.39.0.rc2.1017.g5f0c708352f


```

## Victoria Dye, 2022-12-06 20:50

Subject: Re: [PATCH] CI: migrate away from deprecated "set-output" syntax
Message-ID: <3859f3a7-ade8-4778-be15-b393694435e3@github.com>
URL: https://gitlist.dev/e/3859f3a7-ade8-4778-be15-b393694435e3%40github.com
In-Reply-To: <patch-1.1-deb65805345-20221206T195811Z-avarab@gmail.com>

```
Ævar Arnfjörð Bjarmason wrote:
> As noted in [1] and the warnings the CI itself is spewing echoing
> outputs to stdout is deprecated, and they should be written to
> "$GITHUB_OUTPUT" instead.
> 
> 1. https://github.blog/changelog/2022-10-11-github-actions-deprecating-save-state-and-set-output-commands/

Interesting, I didn't realize this changed! The new syntax is certainly much
nicer to read.

> 
> Signed-off-by: Ævar Arnfjörð Bjarmason <avarab@gmail.com>
> ---
> 
> Along with my just-sent
> https://lore.kernel.org/git/patch-1.1-4c1dcc89e7a-20221206T195552Z-avarab@gmail.com/
> and Junio's https://lore.kernel.org/git/xmqq1qpd9bys.fsf@gitster.g/
> this should make our CI warning free.
> 
>  .github/workflows/main.yml | 2 +-
>  1 file changed, 1 insertion(+), 1 deletion(-)

Should this also be updated for 'l10n.yml'? There are two usages of
'::set-output' there as well.

> 
> diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml
> index 9afacfa0b33..d1e16009b11 100644
> --- a/.github/workflows/main.yml
> +++ b/.github/workflows/main.yml
> @@ -34,7 +34,7 @@ jobs:
>            then
>              enabled=no
>            fi
> -          echo "::set-output name=enabled::$enabled"
> +          echo "enabled=$enabled" >>$GITHUB_OUTPUT

Looks good!

>        - name: skip if the commit or tree was already tested
>          id: skip-if-redundant
>          uses: actions/github-script@v6


```

## Ævar Arnfjörð Bjarmason, 2022-12-06 21:08

Subject: Re: [PATCH] CI: migrate away from deprecated "set-output" syntax
Message-ID: <221206.86fsdsb5os.gmgdl@evledraar.gmail.com>
URL: https://gitlist.dev/e/221206.86fsdsb5os.gmgdl%40evledraar.gmail.com
In-Reply-To: <3859f3a7-ade8-4778-be15-b393694435e3@github.com>

```

On Tue, Dec 06 2022, Victoria Dye wrote:

> Ævar Arnfjörð Bjarmason wrote:
> [...]
>> 
>> Signed-off-by: Ævar Arnfjörð Bjarmason <avarab@gmail.com>
>> ---
>> 
>> Along with my just-sent
>> https://lore.kernel.org/git/patch-1.1-4c1dcc89e7a-20221206T195552Z-avarab@gmail.com/
>> and Junio's https://lore.kernel.org/git/xmqq1qpd9bys.fsf@gitster.g/
>> this should make our CI warning free.
>> 
>>  .github/workflows/main.yml | 2 +-
>>  1 file changed, 1 insertion(+), 1 deletion(-)
>
> Should this also be updated for 'l10n.yml'? There are two usages of
> '::set-output' there as well.

Yes, I just missed that one. I'll fix that, but will wait a bit to see
if there's any other comments first. Thanks!

```

## Taylor Blau, 2022-12-07 00:56

Subject: Re: [PATCH] CI: migrate away from deprecated "set-output" syntax
Message-ID: <Y4/k2TW8Udz4LsaI@nand.local>
URL: https://gitlist.dev/e/Y4%2Fk2TW8Udz4LsaI%40nand.local
In-Reply-To: <221206.86fsdsb5os.gmgdl@evledraar.gmail.com>

```
On Tue, Dec 06, 2022 at 10:08:36PM +0100, Ævar Arnfjörð Bjarmason wrote:
> > Should this also be updated for 'l10n.yml'? There are two usages of
> > '::set-output' there as well.
>
> Yes, I just missed that one. I'll fix that, but will wait a bit to see
> if there's any other comments first. Thanks!

No concerns from me. I noticed this warning when I was looking at all of
the CI builds a few weeks ago.

This transition looks obviously correct to me, and as long as we apply
it in the l10n workflow as Victoria mentions, this should be good to go.

Thanks,
Taylor

```

## Ævar Arnfjörð Bjarmason, 2022-12-07 01:49

Subject: [PATCH v2] CI: migrate away from deprecated "set-output" syntax
Message-ID: <patch-v2-1.1-4e7db0db3be-20221207T014848Z-avarab@gmail.com>
URL: https://gitlist.dev/e/patch-v2-1.1-4e7db0db3be-20221207T014848Z-avarab%40gmail.com
In-Reply-To: <patch-1.1-deb65805345-20221206T195811Z-avarab@gmail.com>

```
As noted in [1] and the warnings the CI itself is spewing echoing
outputs to stdout is deprecated, and they should be written to
"$GITHUB_OUTPUT" instead.

1. https://github.blog/changelog/2022-10-11-github-actions-deprecating-save-state-and-set-output-commands/

Signed-off-by: Ævar Arnfjörð Bjarmason <avarab@gmail.com>
---
Range-diff against v1:
1:  deb65805345 ! 1:  4e7db0db3be CI: migrate away from deprecated "set-output" syntax
    @@ Commit message
     
         Signed-off-by: Ævar Arnfjörð Bjarmason <avarab@gmail.com>
     
    + ## .github/workflows/l10n.yml ##
    +@@ .github/workflows/l10n.yml: jobs:
    +             base=${{ github.event.before }}
    +             head=${{ github.event.after }}
    +           fi
    +-          echo "::set-output name=base::$base"
    +-          echo "::set-output name=head::$head"
    ++          cat >>$GITHUB_OUTPUT <<-EOF
    ++          base=$base
    ++          head=$head
    ++          EOF
    +       - name: Run partial clone
    +         run: |
    +           git -c init.defaultBranch=master init --bare .
    +
      ## .github/workflows/main.yml ##
     @@ .github/workflows/main.yml: jobs:
                then

 .github/workflows/l10n.yml | 6 ++++--
 .github/workflows/main.yml | 2 +-
 2 files changed, 5 insertions(+), 3 deletions(-)

diff --git a/.github/workflows/l10n.yml b/.github/workflows/l10n.yml
index 27f72f0ff34..8fa073db2dc 100644
--- a/.github/workflows/l10n.yml
+++ b/.github/workflows/l10n.yml
@@ -23,8 +23,10 @@ jobs:
             base=${{ github.event.before }}
             head=${{ github.event.after }}
           fi
-          echo "::set-output name=base::$base"
-          echo "::set-output name=head::$head"
+          cat >>$GITHUB_OUTPUT <<-EOF
+          base=$base
+          head=$head
+          EOF
       - name: Run partial clone
         run: |
           git -c init.defaultBranch=master init --bare .
diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml
index 9afacfa0b33..d1e16009b11 100644
--- a/.github/workflows/main.yml
+++ b/.github/workflows/main.yml
@@ -34,7 +34,7 @@ jobs:
           then
             enabled=no
           fi
-          echo "::set-output name=enabled::$enabled"
+          echo "enabled=$enabled" >>$GITHUB_OUTPUT
       - name: skip if the commit or tree was already tested
         id: skip-if-redundant
         uses: actions/github-script@v6
-- 
2.39.0.rc2.1019.gce04d262ea9


```

## Junio C Hamano, 2022-12-07 23:57

Subject: Re: [PATCH v2] CI: migrate away from deprecated "set-output" syntax
Message-ID: <xmqq359q6a30.fsf@gitster.g>
URL: https://gitlist.dev/e/xmqq359q6a30.fsf%40gitster.g
In-Reply-To: <patch-v2-1.1-4e7db0db3be-20221207T014848Z-avarab@gmail.com>

```
Ævar Arnfjörð Bjarmason  <avarab@gmail.com> writes:

>     +-          echo "::set-output name=base::$base"
>     +-          echo "::set-output name=head::$head"
>     ++          cat >>$GITHUB_OUTPUT <<-EOF
>     ++          base=$base
>     ++          head=$head
>     ++          EOF

Hmph, I do not trust this part.

The redirection operator "<<-" causes the leading tabs in the
here-doc-text stripped, but the .yml file does not indent with tab
to begin with.

I suspect the leading spaces will all be stripped and not seen by
the shell, so the distinction may not matter, which means the use of
"<<-" is very much misleading.

Let's stick to the dumb and proven

	echo "base=$base" >>$GITHUB_OUTPUT
	echo "head=$head" >>$GITHUB_OUTPUT

instead, which is used throughout the rewrite in this patch.


```

## Ævar Arnfjörð Bjarmason, 2022-12-08 00:27

Subject: Re: [PATCH v2] CI: migrate away from deprecated "set-output" syntax
Message-ID: <221208.861qpa91ti.gmgdl@evledraar.gmail.com>
URL: https://gitlist.dev/e/221208.861qpa91ti.gmgdl%40evledraar.gmail.com
In-Reply-To: <xmqq359q6a30.fsf@gitster.g>

```

On Thu, Dec 08 2022, Junio C Hamano wrote:

> Ævar Arnfjörð Bjarmason  <avarab@gmail.com> writes:
>
>>     +-          echo "::set-output name=base::$base"
>>     +-          echo "::set-output name=head::$head"
>>     ++          cat >>$GITHUB_OUTPUT <<-EOF
>>     ++          base=$base
>>     ++          head=$head
>>     ++          EOF
>
> Hmph, I do not trust this part.
>
> The redirection operator "<<-" causes the leading tabs in the
> here-doc-text stripped, but the .yml file does not indent with tab
> to begin with.
>
> I suspect the leading spaces will all be stripped and not seen by
> the shell, so the distinction may not matter, which means the use of
> "<<-" is very much misleading.
>
> Let's stick to the dumb and proven
>
> 	echo "base=$base" >>$GITHUB_OUTPUT
> 	echo "head=$head" >>$GITHUB_OUTPUT
>
> instead, which is used throughout the rewrite in this patch.

Sure, I'll re-roll with that.

```

## Ævar Arnfjörð Bjarmason, 2022-12-08 00:33

Subject: [PATCH v3] CI: migrate away from deprecated "set-output" syntax
Message-ID: <patch-v3-1.1-0519cc1105a-20221208T003233Z-avarab@gmail.com>
URL: https://gitlist.dev/e/patch-v3-1.1-0519cc1105a-20221208T003233Z-avarab%40gmail.com
In-Reply-To: <patch-v2-1.1-4e7db0db3be-20221207T014848Z-avarab@gmail.com>

```
As noted in [1] and the warnings the CI itself is spewing echoing
outputs to stdout is deprecated, and they should be written to
"$GITHUB_OUTPUT" instead.

1. https://github.blog/changelog/2022-10-11-github-actions-deprecating-save-state-and-set-output-commands/

Signed-off-by: Ævar Arnfjörð Bjarmason <avarab@gmail.com>
---
Range-diff against v2:
1:  4e7db0db3be ! 1:  0519cc1105a CI: migrate away from deprecated "set-output" syntax
    @@ .github/workflows/l10n.yml: jobs:
                fi
     -          echo "::set-output name=base::$base"
     -          echo "::set-output name=head::$head"
    -+          cat >>$GITHUB_OUTPUT <<-EOF
    -+          base=$base
    -+          head=$head
    -+          EOF
    ++          echo "base=$base" >>$GITHUB_OUTPUT
    ++          echo "head=$head" >>$GITHUB_OUTPUT
            - name: Run partial clone
              run: |
                git -c init.defaultBranch=master init --bare .

 .github/workflows/l10n.yml | 4 ++--
 .github/workflows/main.yml | 2 +-
 2 files changed, 3 insertions(+), 3 deletions(-)

diff --git a/.github/workflows/l10n.yml b/.github/workflows/l10n.yml
index 27f72f0ff34..2915c595b4f 100644
--- a/.github/workflows/l10n.yml
+++ b/.github/workflows/l10n.yml
@@ -23,8 +23,8 @@ jobs:
             base=${{ github.event.before }}
             head=${{ github.event.after }}
           fi
-          echo "::set-output name=base::$base"
-          echo "::set-output name=head::$head"
+          echo "base=$base" >>$GITHUB_OUTPUT
+          echo "head=$head" >>$GITHUB_OUTPUT
       - name: Run partial clone
         run: |
           git -c init.defaultBranch=master init --bare .
diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml
index 9afacfa0b33..d1e16009b11 100644
--- a/.github/workflows/main.yml
+++ b/.github/workflows/main.yml
@@ -34,7 +34,7 @@ jobs:
           then
             enabled=no
           fi
-          echo "::set-output name=enabled::$enabled"
+          echo "enabled=$enabled" >>$GITHUB_OUTPUT
       - name: skip if the commit or tree was already tested
         id: skip-if-redundant
         uses: actions/github-script@v6
-- 
2.39.0.rc2.1019.gce04d262ea9


```

## Junio C Hamano, 2022-12-08 05:41

Subject: Re: [PATCH v2] CI: migrate away from deprecated "set-output" syntax
Message-ID: <xmqqmt7y4fl5.fsf@gitster.g>
URL: https://gitlist.dev/e/xmqqmt7y4fl5.fsf%40gitster.g
In-Reply-To: <221208.861qpa91ti.gmgdl@evledraar.gmail.com>

```
Ævar Arnfjörð Bjarmason <avarab@gmail.com> writes:

>> Let's stick to the dumb and proven
>>
>> 	echo "base=$base" >>$GITHUB_OUTPUT
>> 	echo "head=$head" >>$GITHUB_OUTPUT
>>
>> instead, which is used throughout the rewrite in this patch.
>
> Sure, I'll re-roll with that.

Ah, no need.  I've already amended the one under discussion and it
is in 'next' together with the last bit from Johannes to use the
updated upload/download artifact Action.

Thanks.

```
