-
Notifications
You must be signed in to change notification settings - Fork 8
87 lines (75 loc) · 2.79 KB
/
test.yaml
File metadata and controls
87 lines (75 loc) · 2.79 KB
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
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
name: "CI - Test Features"
on:
pull_request:
workflow_dispatch:
permissions:
contents: read
jobs:
get-changed-features:
runs-on: ubuntu-latest
outputs:
features: ${{ steps.filter.outputs.features }}
has-features: ${{ steps.filter.outputs.has-features }}
steps:
- uses: actions/checkout@v4
with:
fetch-depth: 0
- name: "Detect changed features"
id: filter
run: |
if [ "${{ github.event_name }}" == "pull_request" ]; then
git fetch origin ${{ github.base_ref }}
FEATURES=$(git diff --name-only origin/${{ github.base_ref }}...HEAD \
| grep -E '^(src|test)/' \
| sed -E 's#^(src|test)/([^/]+)/.*#\2#' \
| sort -u \
| jq -R -s -c 'split("\n") | map(select(length > 0))')
else
FEATURES=$(ls src/ | sort | jq -R -s -c 'split("\n") | map(select(length > 0))')
fi
echo "features=$FEATURES" >> $GITHUB_OUTPUT
echo "has-features=$(echo "$FEATURES" | jq '. | length > 0')" >> $GITHUB_OUTPUT
test-autogenerated:
needs: get-changed-features
if: needs.get-changed-features.outputs.has-features == 'true'
runs-on: ubuntu-latest
timeout-minutes: 60
continue-on-error: true
strategy:
matrix:
features: ${{ fromJson(needs.get-changed-features.outputs.features) }}
baseImage:
- debian:latest
- ubuntu:latest
- mcr.microsoft.com/devcontainers/base:ubuntu
steps:
- uses: actions/checkout@v4
- name: "Install latest devcontainer CLI"
run: npm install -g @devcontainers/cli
- name: "Generating tests for '${{ matrix.features }}' against '${{ matrix.baseImage }}'"
run: devcontainer features test --skip-scenarios -f ${{ matrix.features }} -i ${{ matrix.baseImage }} .
test-scenarios:
needs: get-changed-features
if: needs.get-changed-features.outputs.has-features == 'true'
runs-on: ubuntu-latest
timeout-minutes: 60
continue-on-error: true
strategy:
matrix:
features: ${{ fromJson(needs.get-changed-features.outputs.features) }}
steps:
- uses: actions/checkout@v4
- name: "Install latest devcontainer CLI"
run: npm install -g @devcontainers/cli
- name: "Generating tests for '${{ matrix.features }}' scenarios"
run: devcontainer features test -f ${{ matrix.features }} --skip-autogenerated --skip-duplicated .
test-global:
runs-on: ubuntu-latest
timeout-minutes: 60
continue-on-error: true
steps:
- uses: actions/checkout@v4
- name: "Install latest devcontainer CLI"
run: npm install -g @devcontainers/cli
- name: "Testing global scenarios"
run: devcontainer features test --global-scenarios-only .