#github-actions
#github-действия
Вопрос:
Ищу предложения о наилучшем способе запуска набора параллельных действий Github для каждой лямбда-функции в папке. Итак, структура папок похожа:
lambdas/example1/index.js
lambdas/example2/index.js
….
а затем передают их в эту настройку матрицы
deploy_source:
name: Deploy Lambda From Source
runs-on: ubuntu-latest
strategy:
matrix:
lambdafile:['example1/index.js','example12/index.js',....]
steps:
- name: checkout source code
uses: actions/checkout@v1
- name: default deploy
uses: appleboy/lambda-action@master
with:
aws_access_key_id: '123123123123'
aws_secret_access_key: '123123123123'
aws_region: '123123123123'
function_name: gorush
source: ${{ matrix.lambdafile }}
Комментарии:
1. Непонятно, о чем вы спрашиваете. Рабочий процесс, который вы опубликовали с помощью
matrix
, не работает? Вы просто спрашиваете, есть ли лучший способ? Использованиеmatrix
— хороший способ запустить параллельные задания.
Ответ №1:
Вы можете создать job1 для чтения вашей папки и динамического создания вашего матричного массива на основе этих данных. А затем создайте второе задание для сбора динамической матрицы и ее использования.
Вот пример рабочего процесса для динамического массива файловых матриц для файлов в каталоге lambda
name: build
on: push
jobs:
job1:
runs-on: ubuntu-latest
outputs:
matrix: ${{ steps.setmatrix.outputs.matrix }}
steps:
- name: checkout source code
uses: actions/checkout@v1
- id: setmatrix
run: |
matrixArray=$(find ./lambdas -name '*.js') # Creates array of all files .js withing lambdas
# Start Generate Json String
echo "$matrixArray" |
jq --slurp --raw-input 'split("n")[:-1]' |
jq "{"filepath": .[] }" |
jq -sc "{ "include": . }" > tmp
cat ./tmp
# End Generate Json String
matrixStringifiedObject=$(cat ./tmp) # Use this as jq @sh wasn't cooperating
echo "::set-output name=matrix::$matrixStringifiedObject"
job2:
needs: job1
runs-on: ubuntu-latest
strategy:
matrix: ${{fromJson(needs.job1.outputs.matrix)}}
steps:
- name: checkout source code
uses: actions/checkout@v1
- run: echo ${{ matrix.filepath }}