-
Notifications
You must be signed in to change notification settings - Fork 20
62 lines (57 loc) · 1.96 KB
/
application-test.yaml
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
name: Application Specific Test
on:
workflow_dispatch:
inputs:
scenario:
description: 'The scenario to run, e.g., install or upgrade'
required: true
default: 'install'
type: string
pull_request:
types: [synchronize, labeled]
jobs:
setup:
name: Extract app names
runs-on:
- ubuntu-latest
outputs:
apps: ${{ steps.pr-labels.outputs.apps }}
steps:
- name: Collect apps to run tests from PR labels
id: pr-labels
if: github.event_name == 'pull_request' && contains(join(github.event.pull_request.labels.*.name, ' '), 'services/')
run: |
# Extract labels from the pull request event payload
PR_LABELS=$(echo "${{ join(github.event.pull_request.labels.*.name, ' ') }}")
KAPP_NAMES=()
for label in $PR_LABELS; do
echo $label
if [[ "$label" == "services/"* ]]; then
KAPP_NAMES+=("$(echo "$label" | cut -d '/' -f 2)")
fi
done
json_array=$(printf '%s\n' "${KAPP_NAMES[@]}" | jq -R . | jq -c -s .)
echo "apps=${json_array}" >> $GITHUB_OUTPUT
# manually trigger ALL scenarios for ALL apps
- name: Checkout code
if: github.event_name == 'workflow_dispatch'
uses: actions/checkout@v4
- name: Collect apps from local directory
id: local-apps
if: github.event_name == 'workflow_dispatch'
working-directory: services
run: |
json_array=$(find . -type d -maxdepth 1 -mindepth 1 -exec basename {} \; | jq -R . | jq -c -s .)
echo "apps=${json_array}" >> $GITHUB_OUTPUT
trigger-tests:
needs: setup
uses: ./.github/workflows/application-test-scenario.yaml
strategy:
fail-fast: false
matrix:
scenario: [install, upgrade]
app: ${{ fromJson(needs.setup.outputs.apps) }}
with:
scenario: ${{ matrix.scenario }}
app: ${{ matrix.app }}
secrets: inherit