-
Notifications
You must be signed in to change notification settings - Fork 12
153 lines (124 loc) · 3.82 KB
/
gating.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
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
---
name: Gating tests
on:
pull_request:
push:
branches: [main, devel]
env:
GITHUB_CI: true
jobs:
audit-and-build:
name: Audit and build
runs-on: ubuntu-latest
container:
image: fedora:latest
steps:
- name: Checkout repository
uses: actions/checkout@v4
- name: Setup Node.js
uses: actions/setup-node@v4
with:
node-version: "20"
- name: Audit dependencies
run: npx audit-ci --config audit-ci.json --skip-dev
- name: Cache dependencies
id: cache-deps
uses: actions/cache@v4
with:
path: ~/.npm
key: npm-${{ hashFiles('package-lock.json') }}
restore-keys: npm-
- name: Install project
run: npm install
- name: Prettier
run: npm run prettier
- name: Lint
run: npm run lint
- name: Build project
run: npm run build
- name: Upload dist folder
uses: actions/upload-artifact@v4
with:
name: freeipa-webui-build
path: dist/
unit-tests:
name: Unit tests
needs: audit-and-build
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Setup Node.js
uses: actions/setup-node@v4
with:
node-version: "20"
- name: Install project
run: npm install
- name: Run jest
run: npm run test
integration-tests:
name: Integration tests
needs: audit-and-build
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: actions/download-artifact@v4
with:
name: freeipa-webui-build
path: dist
- name: Build test image
id: build-image
uses: redhat-actions/buildah-build@v2
with:
image: containerfile-fedora
tags: latest
containerfiles: tests/ipalab/containerfile-fedora
- name: Install dependencies
shell: bash
run: |
sudo apt update -y
sudo apt install libkrb5-dev libvirt-dev
sudo apt install software-properties-common
sudo apt install ansible-core podman
- name: Generate ipalab configuration
shell: bash
run: |
sed -e "s@CONF_DIR@$(pwd)@g" tests/ipalab/ipa.yaml.in > tests/ipalab/ipa.yaml
- name: Add podman network for tests
shell: bash
run: |
subnet="$(grep subnet: tests/ipalab/ipa.yaml | cut -d: -f2-)"
network="$(grep network: tests/ipalab/ipa.yaml | cut -d: -f2-)"
podman network create network --disable-dns --subnet "$subnet" $network
- name: Run tests using action
uses: rjeffman/[email protected]
with:
cluster_configuration: tests/ipalab/ipa.yaml
test_playbooks: tests/ipalab/playbooks/webui.yaml
- name: Put IPA Server's IP to /etc/hosts
run: sudo echo "$(podman exec -ti dom-ser "hostname -I") server.ipa.demo" | sudo tee -a /etc/hosts
- name: Run Cypress tests
uses: cypress-io/github-action@v6
with:
browser: electron
config-file: cypress/cypress.config.ts
command-prefix: "podman unshare --rootless-netns "
- name: Shutdown the test machines and a network
shell: bash
run: |
network="$(grep network: tests/ipalab/ipa.yaml | cut -d: -f2-)"
source venv/bin/activate
cd tests/ipalab
podman-compose down
podman network rm $network
- name: Upload cypress screenshots
uses: actions/upload-artifact@v4
if: failure()
with:
name: cypress-screenshots
path: cypress/screenshots
- name: Upload cypress videos
uses: actions/upload-artifact@v4
if: always()
with:
name: cypress-videos
path: cypress/videos