Skip to content
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.

Commit 8a94a97

Browse files
committedJan 17, 2025·
rename workflow
1 parent eeafec5 commit 8a94a97

File tree

8 files changed

+116
-69
lines changed

8 files changed

+116
-69
lines changed
 

‎.github/workflows/a.yml

-39
This file was deleted.

‎.github/workflows/pit.yml

+76
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,76 @@
1+
name: Run PiT
2+
on:
3+
workflow_dispatch:
4+
inputs:
5+
version:
6+
description: 'Version'
7+
required: false
8+
type: string
9+
starters:
10+
description: 'Starters to run, separated by comma'
11+
required: true
12+
default: 'control-center'
13+
type: string
14+
skipcurrent:
15+
description: 'Skip running tests in current version'
16+
required: false
17+
type: boolean
18+
default: false
19+
skipdev:
20+
description: 'Skip running tests in dev mode'
21+
required: false
22+
type: boolean
23+
default: false
24+
debug:
25+
description: 'Be verbose when running PiT steps'
26+
required: false
27+
type: boolean
28+
default: false
29+
push:
30+
jobs:
31+
run:
32+
runs-on: ubuntu-latest
33+
services:
34+
docker:
35+
image: docker:dind
36+
options: --privileged --shm-size=2g
37+
steps:
38+
- name: Check out branch
39+
uses: actions/checkout@v4
40+
- if: ${{ env.ACT }}
41+
name: ACT - install dependencies
42+
run: |
43+
echo "export PATH='$PATH'" > path.sh
44+
apt-get update
45+
apt-get install -y vim iputils-ping sudo unzip wget jq curl
46+
- uses: actions/setup-node@v4
47+
with:
48+
node-version: '18'
49+
- name: Set up Helm
50+
uses: azure/setup-helm@v3.5
51+
- name: Create k8s Kind Cluster
52+
uses: helm/kind-action@v1
53+
with:
54+
install_only: false
55+
- name: Run PiT
56+
env:
57+
CC_KEY: ${{ secrets.CC_KEY }}
58+
CC_CERT: ${{ secrets.CC_CERT }}
59+
run: |
60+
[ -n "${{ inputs.skipcurrent }}" ] && A="$A --skip-current"
61+
[ -n "${{ inputs.skipdev }}" ] && A="$A --skip-dev"
62+
[ -n "${{ inputs.debug }}" ] && A="$A --debug"
63+
[ -n "${{ inputs.version }}" ] && A="$A --version=${{ inputs.version }}"
64+
[ -n "${{ inputs.starters }}" ] && A="$A --starters=${{ inputs.starters }}" || A="$A --starters=control-center"
65+
echo ./scripts/pit/run.sh $A
66+
./scripts/pit/run.sh $A
67+
- if: ${{ always()}}
68+
uses: actions/upload-artifact@v4
69+
with:
70+
name: outputs
71+
path: tmp/**/*.out
72+
if-no-files-found: ignore
73+
retention-days: 2
74+
75+
76+

‎scripts/pit/its/cc-install-apps.js

+20-15
Original file line numberDiff line numberDiff line change
@@ -3,11 +3,6 @@ const path = require('path');
33
const { expect } = require('@playwright/test');
44
const fs = require('fs');
55

6-
const ADMIN_EMAIL = 'john.doe@admin.com';
7-
const ADMIN_PASSWORD = 'adminPassword';
8-
9-
10-
116
let headless = false, port = '8000', url, email, pass='Servantes', ignoreHTTPSErrors = false;
127
process.argv.forEach(a => {
138
if (/^--headless/.test(a)) {
@@ -28,18 +23,22 @@ process.argv.forEach(a => {
2823
if (!email) {
2924
log(`Skipping the setup of Control center because of missing --email= parameter\n`)
3025
return;
26+
} else {
27+
3128
}
3229

3330
const log = s => process.stderr.write(` ${s}`);
3431
const screenshots = "screenshots.out"
3532
let sscount = 0;
3633
async function takeScreenshot(page, name) {
37-
const path = `${screenshots}/${++sscount}-${name}.png`;
34+
var scr = path.basename(__filename);
35+
const file = `${screenshots}/${scr}-${++sscount}-${name}.png`;
3836
await page.waitForTimeout(1000);
39-
await page.screenshot({ path });
40-
log(`Screenshot taken: ${path}\n`);
37+
await page.screenshot({ path: file });
38+
log(`Screenshot taken: ${file}\n`);
4139
}
4240

41+
4342
(async () => {
4443
const browser = await chromium.launch({
4544
headless: headless,
@@ -73,14 +72,20 @@ async function takeScreenshot(page, name) {
7372
await page.getByLabel('Image', {exact: true}).fill('k8sdemos/bakery-cc:latest')
7473
await page.getByLabel('Application URI', {exact: true}).locator('input[type="text"]').fill('app1-local.alcala.org')
7574

76-
await page.getByLabel('Upload').click();
77-
const fileChooserPromise = page.waitForEvent('filechooser');
78-
await page.getByText('Browse').click();
79-
const fileChooser = await fileChooserPromise;
80-
await fileChooser.setFiles('domain.pem');
81-
fileChooserPromise.then(await page.locator('.detail-layout').getByRole('button', {name: 'Deploy'}).click())
82-
await takeScreenshot(page, 'pem-uploaded');
8375

76+
const cert = [ 'alcala.org', 'app1-local.alcala.org' ].map(a => `/tmp/${a}.pem`).filter( a => fs.existsSync(a))[0]
77+
if (cert) {
78+
await page.getByLabel('Upload').click();
79+
const fileChooserPromise = page.waitForEvent('filechooser');
80+
await page.getByText('Browse').click();
81+
const fileChooser = await fileChooserPromise;
82+
await fileChooser.setFiles(cert);
83+
fileChooserPromise.then(await page.locator('.detail-layout').getByRole('button', {name: 'Deploy'}).click())
84+
} else {
85+
await page.getByLabel('Generate').click();
86+
}
87+
88+
await takeScreenshot(page, 'form-filled');
8489
await page.getByRole('listitem').filter({ hasText: 'Settings'}).click()
8590

8691
await expect(await page.getByRole('listitem')

‎scripts/pit/its/cc-setup.js

+5-3
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@ const {chromium} = require('playwright');
22
const { expect } = require('@playwright/test');
33
const { exec } = require('child_process');
44
const promisify = require('util').promisify;
5+
const path = require('path');
56

67
const log = s => process.stderr.write(` ${s}`);
78
const run = async cmd => (await promisify(exec)(cmd)).stdout;
@@ -37,10 +38,11 @@ if (!email) {
3738
const screenshots = "screenshots.out"
3839
let sscount = 0;
3940
async function takeScreenshot(page, name) {
40-
const path = `${screenshots}/${++sscount}-${name}.png`;
41+
var scr = path.basename(__filename);
42+
const file = `${screenshots}/${scr}-${++sscount}-${name}.png`;
4143
await page.waitForTimeout(1000);
42-
await page.screenshot({ path });
43-
log(`Screenshot taken: ${path}\n`);
44+
await page.screenshot({ path: file });
45+
log(`Screenshot taken: ${file}\n`);
4446
}
4547

4648
(async () => {

‎scripts/pit/lib/lib-cc.sh

+9-10
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@ CC_TESTS="cc-setup.js cc-install-apps.js"
1515
startCloudProvider() {
1616
[ -z "$TEST" ] && docker container inspect kind-cloud-provider >/dev/null 2>&1 && log "Docker Kind Cloud Provider already running" && return
1717
runCmd "$TEST" "Starting Docker KinD Cloud Provider" \
18-
"docker run --name kind-cloud-provider --rm -d --network kind \
18+
"docker run --quiet --name kind-cloud-provider --rm -d --network kind \
1919
-v /var/run/docker.sock:/var/run/docker.sock \
2020
rophy/cloud-provider-kind:0.4.0-20241026-r1"
2121
}
@@ -106,29 +106,29 @@ waitForCC() {
106106
sleep 1
107107
;;
108108
esac
109-
done
109+
done
110110
}
111111

112112
uninstallCC() {
113113
kubectl delete ns $CC_NS
114-
kubectl delete ns ingress-nginx
114+
kubectl delete ns ingress-nginx
115115
}
116116

117117
installTls() {
118-
[ -z "$CC_KEY" -o -z "$CC_CERT" ] && log "Skiping TLS certificate installation, because it was not provided provided" && return
119118
[ -z "$TEST" ] && log "Installing TLS $CC_TLS for $CC_DOMAIN" || cmd "## Creating TLS files from envs"
120119
f1=/tmp/cc-tls.crt
121120
cmd 'echo -e "$CC_CERT" > $f1'
122-
echo -e "$CC_CERT" > $f1
121+
echo -e "$CC_CERT" > $f1 || return 1
123122
f2=/tmp/cc-tls.key
124123
cmd 'echo -e "$CC_KEY" > $f2'
125-
echo -e "$CC_KEY" > $f2
124+
echo -e "$CC_KEY" > $f2 || return 1
126125
runCmd "$TEST" "Creating TLS secret $CC_TLS_A in cluster" \
127126
"kubectl -n $CC_NS create secret tls $CC_TLS_A --key '$f2' --cert '$f1'" || return 1
128127
runCmd "$TEST" "Creating TLS secret $CC_TLS_K in cluster" \
129128
"kubectl -n $CC_NS create secret tls $CC_TLS_K --key '$f2' --cert '$f1'" || return 1
129+
cat $f2 $f2 > /tmp/$CC_DOMAIN.pem
130130
rm -f $f1 $f2
131-
pod=`kubectl -n $CC_NS get pods | grep control-center-ingress-nginx-controller | awk '{print $1}'`
131+
pod=`kubectl -n $CC_NS get pods | grep control-center-ingress-nginx-controller | awk '{print $1}'` || return 1
132132
[ -n "$pod" ] && runCmd "$TEST" "Reloading nginx in $pod" "kubectl exec $pod -- nginx -s reload" || return 1
133133
# runCmd "$TEST" "Restaring ingress" \
134134
# "kubectl -n $CC_NS rollout restart deployment control-center-ingress-nginx-controller" || return 1
@@ -144,9 +144,8 @@ computeTemporaryPassword() {
144144

145145
runPwTests() {
146146
[ -n "$SKIPPW" ] && return 0
147-
its_folder=`computeAbsolutePath`/its
148147
for f in $CC_TESTS; do
149-
runPlaywrightTests "$its_folder/$f" "" "prod" "control-center" --url=https://$CC_CONTROL --email=$CC_EMAIL || return 1
148+
runPlaywrightTests "$PIT_SCR_FOLDER/its/$f" "" "prod" "control-center" --url=https://$CC_CONTROL --email=$CC_EMAIL $NO_TLS || return 1
150149
done
151150
}
152151

@@ -163,7 +162,7 @@ runControlCenter() {
163162
installCC || waitForCC 400 || return 1
164163
tmp_email=`kubectl get secret control-center-user -o go-template="{{ .data.email | base64decode | println }}"`
165164
computeTemporaryPassword
166-
installTls
165+
[ -n "$CC_KEY" -a -n "$CC_CERT" ] && installTls || NO_TLS="--notls"
167166
forwardIngress || return 1
168167
runPwTests || return 1
169168
err=$?

‎scripts/pit/lib/lib-playwright.sh

+2-1
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
1-
## LIBRARY for installing and running playwright tests
1+
PIT_SCR_FOLDER=`computeAbsolutePath`
22

3+
## LIBRARY for installing and running playwright tests
34

45
## Check whether playwright is installed in node_modules folder of the test node-script
56
isInstalledPlaywright() {

‎scripts/pit/lib/lib-validate.sh

-1
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,6 @@
11
. `dirname $0`/lib/lib-utils.sh
22
. `dirname $0`/lib/lib-playwright.sh
33

4-
PIT_SCR_FOLDER=`computeAbsolutePath`
54
set -o pipefail
65

76
## Run validations against one APP or DEMO by following next steps:

‎scripts/pit/run.sh

+4
Original file line numberDiff line numberDiff line change
@@ -101,7 +101,11 @@ main() {
101101
## Run demos (proper starters in github)
102102
for i in $demos; do
103103
if [ $i = control-center ]; then
104+
mkdir -p tmp/$i && cd tmp/$i
104105
run runControlCenter start
106+
pwd
107+
find .
108+
cd "$pwd"
105109
continue
106110
elif expr "$i" : '.*_jdk' >/dev/null; then
107111
_jdk=`echo "$i" | sed -e 's|.*_jdk||'`

0 commit comments

Comments
 (0)
Please sign in to comment.