簡體   English   中英

如何在 github 復合操作步驟中動態設置環境變量?

[英]How do I dynamically set an environment variable in a github composite action step?

我確實需要它是一個環境變量,這是專門用於復合操作的。

在復合操作中,我嘗試了多種設置環境變量的不同方法。 我發現這樣做的唯一方法是在步驟本身中使用env

runs:
  using: "composite"
  steps:
    - name: "A step"
      env:
        BRANCH_REF: "${{ github.ref }}"
      run: echo "The branch is $BRANCH_REF"
      shell: bash

不幸的是,我需要動態設置這個變量。 在常規操作中,我會做類似的事情:

    env:
      FOO: "${{ secrets.FOO }}"
    #...
    - run: echo "FOO=${{ github.event.inputs.foo }}" >> $GITHUB_ENV
      if: ${{ github.event.inputs.foo != '' }}

因為我做不到,所以我嘗試了很多其他方法都沒有用。 這是我最近的嘗試,但也不起作用:

    - name: "A step"
      run: |
        if ${{ github.event.inputs.foo != '' }}
        then
          echo "Set from manual input: ${{ github.event.inputs.foo }}"
          echo "FOO=${{ github.event.inputs.foo }}" >> $GITHUB_ENV
        else
          echo "Use FOO workflow secret input: ${{ inputs.FOO }}"
          echo "FOO=${{ inputs.FOO }}" >> $GITHUB_ENV
        fi
        echo "foo is $FOO"
      shell: bash

我在GitHub控制台得到的output是:

Run if true
  if true
  then
    echo "Set from manual input: My foo is a good foo"
    echo "FOO=My foo is a good foo" >> $GITHUB_ENV
  else
    echo "Use FOO secret: ***"
    echo "FOO=***" >> $GITHUB_ENV
  fi
  echo "foo is $FOO"
  shell: /usr/bin/bash --noprofile --norc -e -o pipefail {0}
Set from manual input: My foo is a good foo

foo is 

在最后的 output 行,我得到foo is ,所以環境變量 $FOO 似乎沒有設置。

如何在復合操作中動態設置環境變量?

您遇到的問題是在 GitHub 操作腳本步驟中調用echo "FOO=${{ github.event.inputs.foo }}" >> $GITHUB_ENV不會在當前步驟的腳本中設置該變量,如果您展開env header下一步應該看到動態設置的環境變量進入該步驟

我通常做的是這樣的:

FOO="${{ github.event.inputs.foo }}"
echo "FOO=${FOO}" >> $GITHUB_ENV

因此,您在當前步驟的腳本中設置了一個名為FOO的變量(使其在同一步驟的后續行中可用)並將其導出以供將來的步驟使用

GitHub 動作中設置環境變量的新方法:

name: my workflow
on: push
jobs:
  build:
    runs-on: ubuntu-latest
    steps:
    - uses: actions/checkout@v2
    - name: Set FOO
      run: echo "FOO=${{ github.event.inputs.foo }}" >> $GITHUB_ENV
    - name: Test
      run: echo $GITHUB_SHA_SHORT

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM