Create Lighthouse Audit #41
Workflow file for this run
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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: | | |
# Navigate to engine directory | |
cd "${ENGINE_DIR}/bin" | |
# Make engine executable | |
chmod +x ./AxonIvyEngine | |
# Start engine in background with logging | |
nohup ./AxonIvyEngine > engine.log 2>&1 & | |
echo $! > engine.pid | |
# Wait for engine to start (increased timeout) | |
MAX_ATTEMPTS=180 | |
ATTEMPT=0 | |
echo "Waiting for engine to start..." | |
while [ $ATTEMPT -lt $MAX_ATTEMPTS ]; do | |
if curl -s http://localhost:8080/favicon.ico > /dev/null; then | |
echo "Engine started successfully" | |
cat engine.log | |
break | |
fi | |
ATTEMPT=$((ATTEMPT+1)) | |
sleep 1 | |
done | |
if [ $ATTEMPT -eq $MAX_ATTEMPTS ]; then | |
echo "Engine failed to start" | |
cat engine.log | |
exit 1 | |
fi | |
env: | |
IVY_JAVA_HOME: ${{ env.JAVA_HOME }} | |
JAVA_HOME: ${{ env.JAVA_HOME }} | |
PATH: /usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:${{ env.JAVA_HOME }}/bin:$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: 300 # Increased timeout to 5 minutes | |
SERVER_URL: http://localhost:8080 | |
REPORT_PATH: ./lighthouse-report.html | |
steps: | |
- name: Checkout Code # Need code to access engine | |
uses: actions/checkout@v3 | |
- name: Start Engine Again | |
run: | | |
cd "${GITHUB_WORKSPACE}/ivy/engine/nightly/bin" | |
chmod +x ./AxonIvyEngine | |
./AxonIvyEngine > engine.log 2>&1 & | |
echo $! > engine.pid | |
- name: Wait for Server Health Check | |
run: | | |
echo "Waiting for server to be ready..." | |
for ((i=1; i<=${{ env.WAIT_TIME }}; i++)); do | |
if curl -s -f http://localhost:8080 > /dev/null; then | |
echo "Server is running" | |
exit 0 | |
fi | |
echo "Attempt $i of ${{ env.WAIT_TIME }}" | |
sleep 1 | |
done | |
echo "Server check failed" | |
cat engine.log | |
exit 1 | |
- name: Run Lighthouse Audit | |
run: | | |
npm install -g lighthouse | |
lighthouse ${{ env.SERVER_URL }} --output=json --output=html --output-path=${{ env.REPORT_PATH }} | |
- name: Upload Report | |
uses: actions/upload-artifact@v3 | |
with: | |
name: lighthouse-report | |
path: ${{ env.REPORT_PATH }} |