-
Notifications
You must be signed in to change notification settings - Fork 8
136 lines (116 loc) · 3.45 KB
/
kind.yml
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
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
name: KinD tests
on:
push:
branches:
- main
- release-[0-9]+.[0-9]+
pull_request:
branches:
- main
- release-[0-9]+.[0-9]+
defaults:
run:
shell: bash
jobs:
kind-tests:
runs-on: ubuntu-latest
env:
REGISTRY: localhost:5000
KIND_VERSION: ${{ matrix.kind }}
strategy:
fail-fast: false
matrix:
# Run tests on oldest and newest supported OCP Kubernetes
# The "minimum" tag is set in the Makefile
# KinD tags: https://hub.docker.com/r/kindest/node/tags
kind:
- 'minimum'
- 'latest'
name: KinD tests
steps:
- name: Checkout Governance Policy Framework Addon
uses: actions/checkout@v4
- name: Set up Go
uses: actions/setup-go@v5
with:
go-version-file: go.mod
- name: Verify modules
run: |
go mod verify
- name: Some quality checks
run: |
make fmt
git diff --exit-code
make lint
make gosec-scan
- name: Verify deploy/operator.yaml
run: |
make generate-operator-yaml
git diff --exit-code
- name: Unit and Integration Tests
run: |
make test
- name: Create K8s KinD Cluster - ${{ matrix.kind }}
run: |
make kind-bootstrap-cluster-dev
- name: Ensure Service Account kubeconfig
run: |
KUBECONFIG=${PWD}/kubeconfig_managed make kind-ensure-sa
KUBECONFIG=${PWD}/kubeconfig_hub make kind-ensure-sa
- name: E2E Tests
run: |
export GOPATH=$(go env GOPATH)
KUBECONFIG=${PWD}/kubeconfig_managed make e2e-test-coverage
- name: E2E Tests That Simulate Hosted Mode
run: |
export GOPATH=$(go env GOPATH)
export DISABLE_GK_SYNC="true"
export E2E_CLUSTER_NAMESPACE="other-namespace"
export E2E_CLUSTER_NAMESPACE_ON_HUB="other-namespace-on-hub"
export COVERAGE_E2E_OUT=coverage_e2e_hosted_mode.out
KUBECONFIG=${PWD}/kubeconfig_managed make e2e-test-coverage
- name: E2E Tests for Compliance Events API Integration
run: |
KUBECONFIG=${PWD}/kubeconfig_managed make e2e-test-coverage-compliance-events-api
- name: Verify Deployment Configuration
run: |
make build-images
KUBECONFIG=${PWD}/kubeconfig_managed_e2e make kind-deploy-controller-dev
- name: Run E2E Uninstallation Tests
if: ${{ matrix.kind == 'latest' }}
run: |
KUBECONFIG=${PWD}/kubeconfig_managed make e2e-test-uninstall-coverage
- name: Test Coverage and Report Generation
if: ${{ matrix.kind == 'latest' }}
run: |
make test-coverage | tee report_unit.json
make coverage-verify
make gosec-scan
cat gosec.json
- name: Store the GitHub triggering event for the sonarcloud workflow
if: |
matrix.kind == 'latest' &&
github.repository_owner == 'stolostron'
run: |
cat <<EOF > event.json
${{ toJSON(github.event) }}
EOF
- name: Upload artifacts for the sonarcloud workflow
if: |
matrix.kind == 'latest' &&
github.repository_owner == 'stolostron'
uses: actions/upload-artifact@v4
with:
name: artifacts
path: |
coverage*.out
event.json
gosec.json
- name: Debug
if: ${{ failure() }}
run: |
make e2e-debug
- name: Clean up cluster
if: ${{ always() }}
run: |
make kind-delete-cluster