Skip to content

add timeouts

add timeouts #633

name: (Windows)(nonadmin) Run Playwright tests
on:
schedule:
- cron: "5 3 * * *"
workflow_dispatch:
push:
jobs:
start-ec2-instance:
uses: ./.github/workflows/provision-runner.yml
with:
ec2-image-id: ami-0cf05b9bbda99aed3
ec2-instance-type: m5.4xlarge
security-group-id: sg-0a3e6b53e86d0e69d
subnet-id: subnet-06113672589e7e836
ec2-os-type: windows
secrets:
aws-access-key-id: ${{ secrets.AWS_ACCESS_KEY_ID }}
aws-secret-access-key: ${{ secrets.AWS_SECRET_ACCESS_KEY }}
github-token: ${{ secrets.GH_RUNNER_API_TOKEN }}
nonadmin-password: ${{ secrets.NONADMIN_PASSWORD }}
install-requirements-as-admin:
needs: start-ec2-instance
runs-on: ${{ needs.start-ec2-instance.outputs.instance_label }}
steps:
- name: Install Node.js
run: choco install nodejs -y
shell: powershell
- name: Install Java
run: choco install openjdk -y
shell: powershell
- name: Install Maven
run: choco install maven -y
shell: powershell
run-test-as-nonadmin:
needs: [ start-ec2-instance, install-requirements-as-admin]
runs-on: ubuntu-latest
steps:
- name: Install sshpass
run: sudo apt-get install -y sshpass
- name: Create batch file locally to execute tests
run: |
echo "set nodePath=C:\Program Files\nodejs" > execute-tests.bat
echo "set vscodepath=C:\Users\nonadmin\AppData\Local\Programs\Microsoft VS Code\bin" >> execute-tests.bat
echo "set PATH=%PATH%;%nodePath%;%vscodepath%" >> execute-tests.bat
echo "set JAVA_HOME=C:\Program Files\OpenJDK\jdk-22.0.2" >> execute-tests.bat
echo "set MAVEN_HOME=C:\ProgramData\chocolatey\lib\maven\apache-maven-3.9.9" >> execute-tests.bat
echo "set PATH=%PATH%;%nodePath%;%vscodepath%;%JAVA_HOME%\bin;%MAVEN_HOME%\bin" >> execute-tests.bat
echo "set OPENAI_API_KEY=${{ secrets.OPENAI_API_KEY }}" >> execute-tests.bat
echo "set AWS_ACCESS_KEY_ID=${{ secrets.AWS_ACCESS_KEY_ID }}" >> execute-tests.bat
echo "set AWS_SECRET_ACCESS_KEY=${{ secrets.AWS_SECRET_ACCESS_KEY }}" >> execute-tests.bat
echo "set AWS_DEFAULT_REGION=${{ secrets.AWS_DEFAULT_REGION }}" >> execute-tests.bat
echo "if exist C:\\Users\\nonadmin\\kai-ci rmdir /s /q C:\\Users\\nonadmin\\kai-ci" >> execute-tests.bat
echo "git clone -b ${{ github.head_ref || github.ref_name }} https://github.com/konveyor/kai-ci C:\\Users\\nonadmin\\kai-ci" >> execute-tests.bat
echo "cd C:\\Users\\nonadmin\\kai-ci" >> execute-tests.bat
echo powershell -Command "\"npm install\"" >> execute-tests.bat
echo "copy .env.example .env" >> execute-tests.bat
echo "echo OPENAI_API_KEY="${{ secrets.OPENAI_API_KEY }}" >> .env" >> execute-tests.bat
echo "echo AWS_ACCESS_KEY_ID="${{ secrets.AWS_ACCESS_KEY_ID }}" >> .env" >> execute-tests.bat
echo "echo AWS_SECRET_ACCESS_KEY="${{ secrets.AWS_SECRET_ACCESS_KEY }}" >> .env" >> execute-tests.bat
echo "echo AWS_DEFAULT_REGION="${{ secrets.AWS_DEFAULT_REGION }}" >> .env" >> execute-tests.bat
echo "echo CI=true >> .env" >> execute-tests.bat
echo "npx playwright test" >> execute-tests.bat
echo "EXIT /B %ERRORLEVEL%" >> execute-tests.bat
shell: bash
- name: Copy batch file to Windows EC2 instance
run: |
sshpass -p ${EC2_PASSWORD} scp -o StrictHostKeyChecking=no execute-tests.bat ${EC2_USER}@${{ needs.start-ec2-instance.outputs.ec2-host }}:C:\\Users\\nonadmin\\execute-tests.bat
env:
EC2_USER: nonadmin
EC2_PASSWORD: ${{ secrets.NONADMIN_PASSWORD }}
- name: Run Tests
run: |
sshpass -p ${EC2_PASSWORD} ssh -o ServerAliveInterval=30 -o ServerAliveCountMax=3 -o StrictHostKeyChecking=no ${EC2_USER}@${{ needs.start-ec2-instance.outputs.ec2-host }} 'cmd /c C:\\Users\\nonadmin\\execute-tests.bat'
env:
EC2_USER: nonadmin
EC2_PASSWORD: ${{ secrets.NONADMIN_PASSWORD }}
- name: Fetch artifacts
if: ${{ !cancelled() }}
run: |
sshpass -p ${EC2_PASSWORD} scp -o StrictHostKeyChecking=no -r ${EC2_USER}@${{ needs.start-ec2-instance.outputs.ec2-host }}:C:/Users/nonadmin/AppData/Roaming/Code/logs ./vscode-logs
sshpass -p ${EC2_PASSWORD} scp -o StrictHostKeyChecking=no -r ${EC2_USER}@${{ needs.start-ec2-instance.outputs.ec2-host }}:C:/Users/nonadmin/kai-ci/tests-output ./tests-output
sshpass -p ${EC2_PASSWORD} scp -o StrictHostKeyChecking=no -r ${EC2_USER}@${{ needs.start-ec2-instance.outputs.ec2-host }}:C:/Users/nonadmin/kai-ci/coolstore/.vscode ./kai-logs
env:
EC2_USER: nonadmin
EC2_PASSWORD: ${{ secrets.NONADMIN_PASSWORD }}
- name: Upload test artifacts
uses: actions/upload-artifact@v4
if: ${{ !cancelled() }}
with:
name: tests-output
path: ./tests-output
- name: Upload VSCode logs
uses: actions/upload-artifact@v4
if: ${{ !cancelled() }}
with:
name: vscode-logs
path: ./vscode-logs
- name: Upload KAI logs
uses: actions/upload-artifact@v4
if: ${{ !cancelled() }}
with:
name: kai-logs
path: ./kai-logs
stop-ec2-instance:
needs: [ start-ec2-instance, install-requirements-as-admin, run-test-as-nonadmin]
if: ${{ !cancelled() }}
uses: ./.github/workflows/remove-runner.yml
with:
ec2-instance-id: ${{ needs.start-ec2-instance.outputs.ec2-instance-id }}
ec2-runner-label: ${{ needs.start-ec2-instance.outputs.instance_label }}
secrets:
aws-access-key-id: ${{ secrets.AWS_ACCESS_KEY_ID }}
aws-secret-access-key: ${{ secrets.AWS_SECRET_ACCESS_KEY }}
github-token: ${{ secrets.GH_RUNNER_API_TOKEN }}