GitHub操作将env类型的变量赋给字符串数组

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

我有一个.js文件,它返回一个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"

如果您想看一下,我在这里测试了一下:

  • workflow file
  • workflow run

相关文章