Skip to content

Create Lighthouse Audit #28

Create Lighthouse Audit

Create Lighthouse Audit #28

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: /opt/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 Directories
run: |
sudo mkdir -p /opt/ivy/engine
sudo chown $USER:$USER /opt/ivy
mkdir -p /opt/ivy/engine/nightly
- name: Download Engine
run: |
echo "Downloading engine from $ENGINE_URL ..."
cd /opt/ivy/engine
wget $ENGINE_URL -o axonivy-engine
unzip -o axonivy-engine -d nightly
rm axonivy-engine
- name: List Engine Files
run: |
ls -al $ENGINE_DIR
- 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
# - name: Verify Engine Files
# run: |
# ls -l $ENGINE_DIR
# ls -l $ENGINE_DIR/bin
# - 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 }}
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 }}