#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