* feat: add autoqa * chore: add auto start computer_server * chore: add ci autoqa windows * chore: add ci support for both windows and linux * chore: add ci support for macos * chore: refactor auto qa * chore: refactor autoqa workflow * chore: fix upload turn
117 lines
4.6 KiB
Markdown
117 lines
4.6 KiB
Markdown
# AutoQA Scripts
|
|
|
|
This directory contains platform-specific scripts used by the AutoQA GitHub Actions workflow. These scripts help maintain a cleaner and more maintainable workflow file by extracting complex inline scripts into separate files.
|
|
|
|
## Directory Structure
|
|
|
|
```text
|
|
autoqa/scripts/
|
|
├── setup_permissions.sh # Setup executable permissions for all scripts
|
|
├── windows_cleanup.ps1 # Windows: Clean existing Jan installations
|
|
├── windows_download.ps1 # Windows: Download Jan app installer
|
|
├── windows_install.ps1 # Windows: Install Jan app
|
|
├── windows_post_cleanup.ps1 # Windows: Post-test cleanup
|
|
├── run_tests.ps1 # Windows: Run AutoQA tests
|
|
├── ubuntu_cleanup.sh # Ubuntu: Clean existing Jan installations
|
|
├── ubuntu_download.sh # Ubuntu: Download Jan app (.deb)
|
|
├── ubuntu_install.sh # Ubuntu: Install Jan app
|
|
├── ubuntu_post_cleanup.sh # Ubuntu: Post-test cleanup
|
|
├── macos_cleanup.sh # macOS: Clean existing Jan installations
|
|
├── macos_download.sh # macOS: Download Jan app (.dmg)
|
|
├── macos_install.sh # macOS: Install Jan app
|
|
├── macos_post_cleanup.sh # macOS: Post-test cleanup
|
|
├── run_tests.sh # Unix: Run AutoQA tests (Ubuntu/macOS)
|
|
├── README.md # This file
|
|
└── PERMISSIONS.md # Permission setup documentation
|
|
```
|
|
|
|
## Script Functions
|
|
|
|
### Windows Scripts (.ps1)
|
|
|
|
- **windows_cleanup.ps1**: Removes existing Jan installations and kills running processes
|
|
- **windows_download.ps1**: Downloads Jan installer with priority-based URL selection
|
|
- **windows_install.ps1**: Installs Jan app and sets environment variables
|
|
- **windows_post_cleanup.ps1**: Comprehensive cleanup after tests including uninstallation
|
|
- **run_tests.ps1**: Runs the AutoQA Python tests with proper arguments
|
|
|
|
### Ubuntu Scripts (.sh)
|
|
|
|
- **ubuntu_cleanup.sh**: Removes existing Jan installations and kills running processes
|
|
- **ubuntu_download.sh**: Downloads Jan .deb package with priority-based URL selection
|
|
- **ubuntu_install.sh**: Installs Jan .deb package and sets environment variables
|
|
- **ubuntu_post_cleanup.sh**: Comprehensive cleanup after tests including package removal
|
|
|
|
### macOS Scripts (.sh)
|
|
|
|
- **macos_cleanup.sh**: Removes existing Jan installations and kills running processes
|
|
- **macos_download.sh**: Downloads Jan .dmg package with priority-based URL selection
|
|
- **macos_install.sh**: Mounts DMG, extracts .app, and installs to Applications
|
|
- **macos_post_cleanup.sh**: Comprehensive cleanup after tests
|
|
|
|
### Common Scripts
|
|
|
|
- **setup_permissions.sh**: Automatically sets executable permissions for all shell scripts
|
|
- **run_tests.sh**: Platform-agnostic test runner for Unix-based systems (Ubuntu/macOS)
|
|
|
|
## Usage in GitHub Actions
|
|
|
|
These scripts are called from the `.github/workflows/autoqa.yml` workflow file:
|
|
|
|
```yaml
|
|
# Setup permissions first (Ubuntu/macOS)
|
|
- name: Setup script permissions
|
|
run: |
|
|
chmod +x autoqa/scripts/setup_permissions.sh
|
|
./autoqa/scripts/setup_permissions.sh
|
|
|
|
# Then use scripts without chmod
|
|
- name: Clean existing Jan installations
|
|
run: |
|
|
./autoqa/scripts/ubuntu_cleanup.sh
|
|
|
|
# Windows example (no chmod needed)
|
|
- name: Clean existing Jan installations
|
|
shell: powershell
|
|
run: |
|
|
.\autoqa\scripts\windows_cleanup.ps1
|
|
```
|
|
|
|
## Benefits
|
|
|
|
1. **Maintainability**: Complex scripts are in separate files, easier to read and modify
|
|
2. **Reusability**: Scripts can be reused across different workflows or locally
|
|
3. **Testing**: Scripts can be tested independently
|
|
4. **Version Control**: Better diff tracking for script changes
|
|
5. **Platform Consistency**: Similar functionality across platforms in separate files
|
|
|
|
## Development
|
|
|
|
When modifying these scripts:
|
|
|
|
1. Test them locally on the respective platforms
|
|
2. Ensure proper error handling and exit codes
|
|
3. Follow platform-specific best practices
|
|
4. Update this README if new scripts are added
|
|
|
|
## Script Parameters
|
|
|
|
### Windows Scripts
|
|
|
|
- Most scripts accept `-IsNightly` parameter to handle nightly vs stable builds
|
|
- Download script accepts multiple URL sources with priority ordering
|
|
|
|
### Unix Scripts
|
|
|
|
- Most scripts accept positional parameters for nightly flag and URLs
|
|
- Scripts use `$1`, `$2`, etc. for parameter access
|
|
|
|
## Environment Variables
|
|
|
|
Scripts set these environment variables for subsequent workflow steps:
|
|
|
|
- `JAN_APP_URL`: The selected Jan app download URL
|
|
- `IS_NIGHTLY`: Boolean flag indicating if it's a nightly build
|
|
- `JAN_APP_PATH`: Path to the installed Jan executable
|
|
- `JAN_PROCESS_NAME`: Name of the Jan process for monitoring
|