117 lines
3.7 KiB
YAML
117 lines
3.7 KiB
YAML
name: Call integration of flagship Apps
|
|
|
|
# see: https://help.github.com/en/actions/reference/events-that-trigger-workflows
|
|
on:
|
|
workflow_call:
|
|
inputs:
|
|
environment:
|
|
description: 'Lightning environment'
|
|
required: false
|
|
default: 'PROD'
|
|
type: string
|
|
workflow_dispatch:
|
|
inputs:
|
|
environment:
|
|
description: 'Lightning environment'
|
|
required: true
|
|
default: 'PROD'
|
|
type: choice
|
|
options:
|
|
- PROD
|
|
- STAGING
|
|
|
|
defaults:
|
|
run:
|
|
shell: bash
|
|
|
|
jobs:
|
|
run-flagships:
|
|
if: github.event.pull_request.draft == false
|
|
runs-on: ubuntu-latest
|
|
container:
|
|
image: mcr.microsoft.com/playwright/python:v1.32.1-focal
|
|
strategy:
|
|
fail-fast: false
|
|
matrix:
|
|
include:
|
|
- {app: "flashy", repo: "Lightning-Universe/Flashy-app"}
|
|
- {app: "muse", repo: "Lightning-Universe/stable-diffusion-deploy"}
|
|
- {app: "jupyter", repo: "Lightning-Universe/Jupyter-component"}
|
|
|
|
# TODO:
|
|
# - Training Studio
|
|
# - Echo
|
|
# - StreamLit / Gradio
|
|
# - All homepage & docs apps
|
|
|
|
env:
|
|
HEADLESS: '1'
|
|
PACKAGE_LIGHTNING: '1'
|
|
CLOUD: '1'
|
|
VIDEO_LOCATION: './videos'
|
|
HAR_LOCATION: './artifacts/hars'
|
|
SLOW_MO: '50'
|
|
LIGHTNING_DEBUG: '1'
|
|
TORCH_URL: 'https://download.pytorch.org/whl/cpu/torch_stable.html'
|
|
# Timeout: https://stackoverflow.com/a/59076067/4521646
|
|
timeout-minutes: 20
|
|
|
|
steps:
|
|
- uses: actions/checkout@v3
|
|
|
|
- name: basic setup
|
|
run: |
|
|
mkdir -p tests/_flagships
|
|
mkdir -p $VIDEO_LOCATION
|
|
python -m playwright install # --with-deps
|
|
|
|
- name: Clone the Repo/App
|
|
uses: actions/checkout@v3
|
|
with:
|
|
repository: ${{ matrix.repo }}
|
|
path: tests/_flagship-app
|
|
|
|
- name: Adjust env. for this App
|
|
uses: ./.github/actions/prep-apps
|
|
with:
|
|
name: ${{ matrix.app }}
|
|
|
|
- name: Install Lightning package
|
|
run: pip install -e .[cloud,test] -f $TORCH_URL
|
|
- name: List pip dependency
|
|
run: pip --version && pip list
|
|
|
|
- name: Run the tests
|
|
working-directory: tests/
|
|
env:
|
|
LIGHTNING_USER_ID: ${{ secrets[format('LIGHTNING_USER_ID_{0}', inputs.environment)] }}
|
|
LIGHTNING_API_KEY: ${{ secrets[format('LIGHTNING_API_KEY_{0}', inputs.environment)] }}
|
|
LIGHTNING_USERNAME: ${{ secrets[format('LIGHTNING_USERNAME_{0}', inputs.environment)] }}
|
|
LIGHTNING_CLOUD_URL: ${{ secrets[format('LIGHTNING_CLOUD_URL_{0}', inputs.environment)] }}
|
|
LAI_USER: ${{ secrets.LAI_SSH_USER }}
|
|
LAI_PASS: ${{ secrets.LAI_SSH_PASS }}
|
|
run: |
|
|
ls -l _flagship-app
|
|
python -m pytest integrations_app/flagship/test_${{ matrix.app }}.py \
|
|
--capture=no -v --color=yes
|
|
|
|
- name: Upload recordings
|
|
uses: actions/upload-artifact@v3
|
|
if: failure()
|
|
with:
|
|
name: flahship-app-${{ matrix.app }}
|
|
path: ${{ env.VIDEO_LOCATION }}
|
|
|
|
- name: Clean Previous Apps
|
|
if: always()
|
|
timeout-minutes: 3
|
|
env:
|
|
LIGHTNING_USER_ID: ${{ secrets[format('LIGHTNING_USER_ID_{0}', inputs.environment)] }}
|
|
LIGHTNING_API_KEY: ${{ secrets[format('LIGHTNING_API_KEY_{0}', inputs.environment)] }}
|
|
LIGHTNING_USERNAME: ${{ secrets[format('LIGHTNING_USERNAME_{0}', inputs.environment)] }}
|
|
LIGHTNING_CLOUD_URL: ${{ secrets[format('LIGHTNING_CLOUD_URL_{0}', inputs.environment)] }}
|
|
LAI_USER: ${{ secrets.LAI_SSH_USER }}
|
|
LAI_PASS: ${{ secrets.LAI_SSH_PASS }}
|
|
run: |
|
|
time python -c "from lightning.app import testing; testing.delete_cloud_lightning_apps()"
|