AutoQA Migration (Manual) #5
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: AutoQA Migration (Manual) | |
on: | |
workflow_dispatch: | |
inputs: | |
is_nightly: | |
description: 'Is the app a nightly build?' | |
required: true | |
type: boolean | |
default: false | |
old_windows_installer: | |
description: 'Windows OLD installer URL or path (.exe)' | |
required: true | |
type: string | |
default: 'https://catalog.jan.ai/windows/Jan_0.6.7_x64-setup.exe' | |
new_windows_installer: | |
description: 'Windows NEW installer URL or path (.exe)' | |
required: true | |
type: string | |
default: 'https://catalog.jan.ai/windows/Jan_0.6.8_x64-setup.exe' | |
old_ubuntu_installer: | |
description: 'Ubuntu OLD installer URL or path (.deb)' | |
required: false | |
type: string | |
default: 'https://catalog.jan.ai/linux/Jan_0.6.7_amd64.deb' | |
new_ubuntu_installer: | |
description: 'Ubuntu NEW installer URL or path (.deb)' | |
required: false | |
type: string | |
default: 'https://catalog.jan.ai/linux/Jan_0.6.8_amd64.deb' | |
old_macos_installer: | |
description: 'macOS OLD installer URL or path (.dmg)' | |
required: false | |
type: string | |
default: 'https://catalog.jan.ai/macos/Jan_0.6.7_universal.dmg' | |
new_macos_installer: | |
description: 'macOS NEW installer URL or path (.dmg)' | |
required: false | |
type: string | |
default: 'https://catalog.jan.ai/macos/Jan_0.6.8_universal.dmg' | |
migration_test_case: | |
description: 'Specific migration test case key (leave empty to run all)' | |
required: false | |
type: string | |
default: '' | |
max_turns: | |
description: 'Maximum turns per test phase' | |
required: false | |
type: number | |
default: 65 | |
jobs: | |
migration-windows: | |
runs-on: windows-11-nvidia-gpu | |
timeout-minutes: 60 | |
steps: | |
- name: Checkout repository | |
uses: actions/checkout@v4 | |
- name: Setup Python 3.13 | |
uses: actions/setup-python@v4 | |
with: | |
python-version: '3.13' | |
- name: Clean existing Jan installations | |
shell: powershell | |
run: | | |
.\autoqa\scripts\windows_cleanup.ps1 -IsNightly "${{ inputs.is_nightly }}" | |
- name: Download OLD and NEW installers | |
shell: powershell | |
run: | | |
# Download OLD installer using existing script | |
.\autoqa\scripts\windows_download.ps1 ` | |
-WorkflowInputUrl "${{ inputs.old_windows_installer }}" ` | |
-WorkflowInputIsNightly "${{ inputs.is_nightly }}" ` | |
-RepoVariableUrl "" ` | |
-RepoVariableIsNightly "" ` | |
-DefaultUrl "" ` | |
-DefaultIsNightly "" | |
$oldSrc = Join-Path $env:TEMP 'jan-installer.exe' | |
$oldOut = Join-Path $env:TEMP 'jan-old.exe' | |
Copy-Item -Path $oldSrc -Destination $oldOut -Force | |
# Download NEW installer using existing script | |
.\autoqa\scripts\windows_download.ps1 ` | |
-WorkflowInputUrl "${{ inputs.new_windows_installer }}" ` | |
-WorkflowInputIsNightly "${{ inputs.is_nightly }}" ` | |
-RepoVariableUrl "" ` | |
-RepoVariableIsNightly "" ` | |
-DefaultUrl "" ` | |
-DefaultIsNightly "" | |
$newSrc = Join-Path $env:TEMP 'jan-installer.exe' | |
$newOut = Join-Path $env:TEMP 'jan-new.exe' | |
Copy-Item -Path $newSrc -Destination $newOut -Force | |
Write-Host "OLD installer: $oldOut" | |
Write-Host "NEW installer: $newOut" | |
echo "OLD_VERSION=$oldOut" | Out-File -FilePath $env:GITHUB_ENV -Append | |
echo "NEW_VERSION=$newOut" | Out-File -FilePath $env:GITHUB_ENV -Append | |
- name: Install Python dependencies | |
working-directory: autoqa | |
run: | | |
python -m pip install --upgrade pip | |
pip install -r requirements.txt | |
- name: Run migration tests (Windows) | |
working-directory: autoqa | |
shell: powershell | |
env: | |
RP_TOKEN: ${{ secrets.RP_TOKEN }} | |
ENABLE_REPORTPORTAL: 'true' | |
RP_ENDPOINT: 'https://reportportal.menlo.ai' | |
RP_PROJECT: 'default_personal' | |
run: | | |
$case = "${{ inputs.migration_test_case }}" | |
$procName = if ("${{ inputs.is_nightly }}" -eq "true") { "Jan-nightly.exe" } else { "Jan.exe" } | |
if ($case -and $case.Trim() -ne "") { | |
python main.py --enable-migration-test --old-version "$env:OLD_VERSION" --new-version "$env:NEW_VERSION" --max-turns ${{ inputs.max_turns }} --jan-process-name "$procName" --migration-test-case $case | |
} else { | |
python main.py --enable-migration-test --old-version "$env:OLD_VERSION" --new-version "$env:NEW_VERSION" --max-turns ${{ inputs.max_turns }} --jan-process-name "$procName" | |
} | |
- name: Upload screen recordings | |
if: always() | |
uses: actions/upload-artifact@v4 | |
continue-on-error: true | |
with: | |
name: migration-recordings-${{ github.run_number }}-windows | |
path: autoqa/recordings/ | |
- name: Upload trajectories | |
if: always() | |
uses: actions/upload-artifact@v4 | |
continue-on-error: true | |
with: | |
name: migration-trajectories-${{ github.run_number }}-windows | |
path: autoqa/trajectories/ | |
- name: Cleanup after tests | |
if: always() | |
shell: powershell | |
run: | | |
.\autoqa\scripts\windows_post_cleanup.ps1 -IsNightly "${{ inputs.is_nightly }}" | |
migration-ubuntu: | |
if: inputs.old_ubuntu_installer != '' && inputs.new_ubuntu_installer != '' | |
runs-on: ubuntu-22-04-nvidia-gpu | |
timeout-minutes: 60 | |
steps: | |
- name: Checkout repository | |
uses: actions/checkout@v4 | |
- name: Setup Python 3.13 | |
uses: actions/setup-python@v4 | |
with: | |
python-version: '3.13' | |
- name: Install system dependencies | |
run: | | |
sudo apt-get update | |
sudo apt-get install -y \ | |
x11-utils \ | |
python3-tk \ | |
python3-dev \ | |
wmctrl \ | |
xdotool \ | |
libnss3-dev \ | |
libgconf-2-4 \ | |
libxss1 \ | |
libasound2 \ | |
libxtst6 \ | |
libgtk-3-0 \ | |
libgbm-dev \ | |
libxshmfence1 \ | |
libxrandr2 \ | |
libpangocairo-1.0-0 \ | |
libatk1.0-0 \ | |
libcairo-gobject2 \ | |
libgdk-pixbuf2.0-0 \ | |
gnome-screenshot \ | |
xvfb | |
- name: Setup script permissions | |
run: | | |
chmod +x autoqa/scripts/setup_permissions.sh || true | |
./autoqa/scripts/setup_permissions.sh || true | |
- name: Clean existing Jan installations | |
run: | | |
./autoqa/scripts/ubuntu_cleanup.sh | |
- name: Download OLD and NEW installers | |
run: | | |
set -e | |
# Download OLD installer using existing script | |
./autoqa/scripts/ubuntu_download.sh \ | |
"${{ inputs.old_ubuntu_installer }}" \ | |
"${{ inputs.is_nightly }}" \ | |
"" \ | |
"" \ | |
"" \ | |
"" | |
cp /tmp/jan-installer.deb /tmp/jan-old.deb | |
# Download NEW installer using existing script | |
./autoqa/scripts/ubuntu_download.sh \ | |
"${{ inputs.new_ubuntu_installer }}" \ | |
"${{ inputs.is_nightly }}" \ | |
"" \ | |
"" \ | |
"" \ | |
"" | |
cp /tmp/jan-installer.deb /tmp/jan-new.deb | |
echo "OLD_VERSION=/tmp/jan-old.deb" >> $GITHUB_ENV | |
echo "NEW_VERSION=/tmp/jan-new.deb" >> $GITHUB_ENV | |
- name: Install Python dependencies | |
working-directory: autoqa | |
run: | | |
python -m pip install --upgrade pip | |
pip install -r requirements.txt | |
- name: Run migration tests (Ubuntu) | |
working-directory: autoqa | |
run: | | |
case="${{ inputs.migration_test_case }}" | |
procName=$([ "${{ inputs.is_nightly }}" = "true" ] && echo "Jan-nightly" || echo "Jan") | |
if [ -n "${case}" ]; then | |
xvfb-run -a python main.py --enable-migration-test --old-version "${OLD_VERSION}" --new-version "${NEW_VERSION}" --max-turns ${{ inputs.max_turns }} --jan-process-name "${procName}" --migration-test-case "${case}" | |
else | |
xvfb-run -a python main.py --enable-migration-test --old-version "${OLD_VERSION}" --new-version "${NEW_VERSION}" --max-turns ${{ inputs.max_turns }} --jan-process-name "${procName}" | |
fi | |
- name: Upload screen recordings | |
if: always() | |
uses: actions/upload-artifact@v4 | |
continue-on-error: true | |
with: | |
name: migration-recordings-${{ github.run_number }}-ubuntu | |
path: autoqa/recordings/ | |
- name: Upload trajectories | |
if: always() | |
uses: actions/upload-artifact@v4 | |
continue-on-error: true | |
with: | |
name: migration-trajectories-${{ github.run_number }}-ubuntu | |
path: autoqa/trajectories/ | |
- name: Cleanup after tests | |
if: always() | |
run: | | |
./autoqa/scripts/ubuntu_post_cleanup.sh "false" | |
migration-macos: | |
if: inputs.old_macos_installer != '' && inputs.new_macos_installer != '' | |
runs-on: macos-selfhosted-15-arm64-cua | |
timeout-minutes: 60 | |
steps: | |
- name: Checkout repository | |
uses: actions/checkout@v4 | |
- name: Setup Python 3.13 | |
uses: actions/setup-python@v4 | |
with: | |
python-version: '3.13' | |
- name: Setup script permissions | |
run: | | |
chmod +x autoqa/scripts/setup_permissions.sh || true | |
./autoqa/scripts/setup_permissions.sh || true | |
- name: Clean existing Jan installations | |
run: | | |
./autoqa/scripts/macos_cleanup.sh | |
- name: Download OLD and NEW installers | |
run: | | |
set -e | |
# Download OLD installer using existing script | |
./autoqa/scripts/macos_download.sh \ | |
"${{ inputs.old_macos_installer }}" \ | |
"${{ inputs.is_nightly }}" \ | |
"" \ | |
"" \ | |
"" \ | |
"" | |
cp /tmp/jan-installer.dmg /tmp/jan-old.dmg | |
# Download NEW installer using existing script | |
./autoqa/scripts/macos_download.sh \ | |
"${{ inputs.new_macos_installer }}" \ | |
"${{ inputs.is_nightly }}" \ | |
"" \ | |
"" \ | |
"" \ | |
"" | |
cp /tmp/jan-installer.dmg /tmp/jan-new.dmg | |
echo "OLD_VERSION=/tmp/jan-old.dmg" >> $GITHUB_ENV | |
echo "NEW_VERSION=/tmp/jan-new.dmg" >> $GITHUB_ENV | |
- name: Install Python dependencies | |
working-directory: autoqa | |
run: | | |
python -m pip install --upgrade pip | |
pip install -r requirements.txt | |
- name: Run migration tests (macOS) | |
working-directory: autoqa | |
run: | | |
case="${{ inputs.migration_test_case }}" | |
procName=$([ "${{ inputs.is_nightly }}" = "true" ] && echo "Jan-nightly" || echo "Jan") | |
if [ -n "${case}" ]; then | |
python main.py --enable-migration-test --old-version "${OLD_VERSION}" --new-version "${NEW_VERSION}" --max-turns ${{ inputs.max_turns }} --jan-process-name "${procName}" --migration-test-case "${case}" | |
else | |
python main.py --enable-migration-test --old-version "${OLD_VERSION}" --new-version "${NEW_VERSION}" --max-turns ${{ inputs.max_turns }} --jan-process-name "${procName}" | |
fi | |
- name: Upload screen recordings | |
if: always() | |
uses: actions/upload-artifact@v4 | |
continue-on-error: true | |
with: | |
name: migration-recordings-${{ github.run_number }}-macos | |
path: autoqa/recordings/ | |
- name: Upload trajectories | |
if: always() | |
uses: actions/upload-artifact@v4 | |
continue-on-error: true | |
with: | |
name: migration-trajectories-${{ github.run_number }}-macos | |
path: autoqa/trajectories/ | |
- name: Cleanup after tests | |
if: always() | |
run: | | |
./autoqa/scripts/macos_post_cleanup.sh | |