Проверьте наличие элемента в массиве в сценарии действий Github

#github #github-actions

Вопрос:

У меня есть два массива, определенных в действии Github. Цель состоит в том, чтобы проверить, в каком массиве существует данный элемент.

Problem: При использовании contains функции действие Github, похоже, сравнивает подстроки даже в случае массива. Хотя в этой документации, похоже, говорится, что это имеет место только при поиске в строке.

Мой код выглядит следующим образом:

 
name: My action

on:
  push:
    branches:
      - '**'

jobs:
  build:

    runs-on: ubuntu-latest
    env:
        JUICE: |
          [
            "apple-juice",
            "orange-juice"
          ]
        FRUIT: |
          [
            "apple",
            "orange"
          ]
          

    - name: check juice
      if: contains(env.JUICE, 'apple')
      run: |
        echo "Found Juice"

    - name: check fruit
      if: contains(env.FRUIT, 'apple')
      run: |
        echo "Found Fruit"

 

Output: И check juice то, и другое, и check fruit шаги выполняются. Пока я рассчитываю только check fruit на то, чтобы бежать.

Есть ли в любом случае способ достичь этого?

Ответ №1:

Я нашел способ поиска элемента с массивом bash

 name: array check test

on:
  push:
    branches:
      - '**'

jobs:
  build:

    runs-on: ubuntu-latest
    env:
        JUICE: |
          (
            "apple-juice"
            "orange-juice"
          )

    steps:
    - name: check juice with bash
      run: |
          array=${{ env.JUICE }}
          for item in ${array[*]}
          do
            if [[ "$item" == "apple" ]]; then
              echo "Found Juice"
            fi
            if [[ "$item" == "apple-juice" ]]; then
              echo "Found Juice Full Name"
            fi
          done
 

выход:
Found Juice Full Name