-
Notifications
You must be signed in to change notification settings - Fork 3
129 lines (116 loc) · 4 KB
/
lighthouse-report.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
name: lighthouse-report
run-name: Create Lighthouse Audit
on:
push:
branches:
- feature/IVYPORTAL-17377-Create-pipeline-to-run-Lighthouse-report
pull_request:
branches:
- master
env: # Define reusable environment variables
ENGINE_DIR: $GITHUB_WORKSPACE/ivy/engine/nightly
ENGINE_URL: https://developer.axonivy.com/permalink/nightly/axonivy-engine.zip
jobs:
build:
runs-on: ubuntu-latest
name: Build Modules
steps:
- name: Checkout Code
uses: actions/checkout@v3
- name: Set Up Java
uses: actions/setup-java@v3
with:
distribution: 'temurin'
java-version: '21'
- name: Set up Maven
uses: stCarolas/setup-maven@v5
with:
maven-version: 3.9.8
- name: Export Environment Variables
run: |
echo "export IVY_JAVA_HOME=$JAVA_HOME" >> $GITHUB_ENV
echo "export JAVA_HOME=$JAVA_HOME" >> $GITHUB_ENV
echo "export PATH=$JAVA_HOME/bin:$PATH" >> $GITHUB_ENV
- name: Set Up and Verify Directories
run: |
ENGINE_DIR="${GITHUB_WORKSPACE}/ivy/engine/nightly"
mkdir -p $ENGINE_DIR
sudo chown -R $USER:$USER $ENGINE_DIR
ls -la $ENGINE_DIR
echo "ENGINE_DIR=$ENGINE_DIR" >> $GITHUB_ENV
- name: Download Engine
run: |
cd $ENGINE_DIR
wget $ENGINE_URL -O axonivy-engine.zip
unzip -o axonivy-engine.zip -d .
rm axonivy-engine.zip
ls -la
- name: Verify Engine Directory
run: |
if [ ! -d "$ENGINE_DIR" ]; then
echo "Engine directory does not exist"
exit 1
fi
ls -la $ENGINE_DIR
ls -la $ENGINE_DIR/bin || true
- name: Start Axon Ivy Engine
run: |
cd $ENGINE_DIR/bin
./AxonIvyEngine
env:
IVY_JAVA_HOME: ${{ env.JAVA_HOME }}
JAVA_HOME: ${{ env.JAVA_HOME }}
PATH: ${{ env.PATH }}
- name: Build Portal Modules
run: |
modules=(
"AxonIvyPortal/portal-components"
"AxonIvyPortal/portal"
"AxonIvyPortal/PortalKitTestHelper"
"Showcase/portal-user-examples"
"Showcase/portal-developer-examples"
"Showcase/InternalSupport"
"Showcase/portal-components-examples"
"AxonIvyPortal/PortalApp"
"Showcase/portal-demo-app"
)
for module in "${modules[@]}"; do
echo "Building $module..."
mvn clean install -f $module/pom.xml -Divy.engine.directory=$ENGINE_DIR
done
- name: Deploy Portal Modules
run: |
DEPLOYMENT=$ENGINE_DIR/system/demo-applications/demo-portal
rm -rf $DEPLOYMENT/*
cp Showcase/portal-demo-app/target/*.zip $DEPLOYMENT
cp Showcase/portal-developer-examples/target/*.iar $DEPLOYMENT
cp Showcase/portal-components-examples/target/*.iar $DEPLOYMENT
lighthouse-audit:
name: Lighthouse Audit
needs: build
runs-on: ubuntu-latest
env:
WAIT_TIME: 60 # Define the wait time in seconds
SERVER_URL: http://localhost:8080 # Define the server URL
REPORT_PATH: ./lighthouse-report.html # Define the report path
steps:
- name: Install Lighthouse
run: npm install -g lighthouse
- name: Wait for Server to Be Ready
run: |
for ((i=1; i<=${{ env.WAIT_TIME }}; i++)); do
if curl -s ${{ env.SERVER_URL }} > /dev/null; then
echo "Server is ready"
exit 0
fi
echo "Waiting for server..."
sleep 1
done
echo "Server did not start in time" && exit 1
- name: Execute Lighthouse Audit
run: lighthouse ${{ env.SERVER_URL }} --output=json --output=html --output-path=${{ env.REPORT_PATH }}
- name: Upload Audit Report
uses: actions/upload-artifact@v3
with:
name: lighthouse-report
path: ${{ env.REPORT_PATH }}