Github action 分配一个类型为 env 的变量,一个字符串数组

Github action assign a variable of type env an array of strings

我遇到了您在图片中看到的以下问题。

我有 a.js 文件,其中 returns 我有一个 url 字符串数组。 然后我应该将此数组分配给一个 env 变量,如下例所示,但我收到以下错误。

你可以告诉我哪里错了。

on: 
  workflow_dispatch:
  
name: Test Download Multifile
jobs:
  build:
    name: Build
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v2
        name: Check out current commit
     
      - name: Url
        run: |
         URL=$(node ./actionMultifile.js)
         echo $URL
         echo "URL=$URL" >> $GITHUB_ENV

actionMultifile.js

async function getData(){
 const url = [
   "https://upload.wikimedia.org/wikipedia/commons/thumb/c/c9/Tyrannosaurus_rex_Sue_at_FMNH.jpg/440px-Tyrannosaurus_rex_Sue_at_FMNH.jpg",
   "https://upload.wikimedia.org/wikipedia/commons/thumb/b/bc/Mosasaurus_beaugei_34.JPG/440px-Mosasaurus_beaugei_34.JPG"
 ]
 return url;
}

getData().then((url) => {
 console.log(url);
});

出现问题是因为您需要使用multiline strings

设置URL环境变量

这是因为这里的URL变量不是这样保存的:

['https://upload.wikimedia.org/wikipedia/commons/thumb/c/c9/Tyrannosaurus_rex_Sue_at_FMNH.jpg/440px-Tyrannosaurus_rex_Sue_at_FMNH.jpg', 'https://upload.wikimedia.org/wikipedia/commons/thumb/b/bc/Mosasaurus_beaugei_34.JPG/440px-Mosasaurus_beaugei_34.JPG']

但是像这样:

[
'https://upload.wikimedia.org/wikipedia/commons/thumb/c/c9/Tyrannosaurus_rex_Sue_at_FMNH.jpg/440px-Tyrannosaurus_rex_Sue_at_FMNH.jpg',
'https://upload.wikimedia.org/wikipedia/commons/thumb/b/bc/Mosasaurus_beaugei_34.JPG/440px-Mosasaurus_beaugei_34.JPG'
]

因此,您的工作流程应该如下所示:

    steps:
      - name: Checkout repository content
        uses: actions/checkout@v2 # Checkout the repository content to github runner.

      - name: Setup Node Version
        uses: actions/setup-node@v2
        with:
          node-version: 14 # Install the node version needed

      - name: set multiline env var
        run: |
          echo 'URL<<EOF' >> $GITHUB_ENV
          node ./actionMultifile.js >> $GITHUB_ENV
          echo 'EOF' >> $GITHUB_ENV

然后,注意,你不能直接使用${{ env.URL }}变量,否则它只会打印第一行([)并中断。您需要在引号之间使用它 (").

例如:

      - name: use env var
        run: echo "${{ env.URL }}"

      - name: use env var directly
        run: echo "$URL"

我这里测试过,你要看的话: