add timeouts #633
Workflow file for this run
This file contains hidden or 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: (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 }} |