123 lines
3.9 KiB
YAML
123 lines
3.9 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.38.0-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@v4
|
|
|
|
- name: basic setup
|
|
timeout-minutes: 20
|
|
run: |
|
|
mkdir -p tests/_flagships
|
|
mkdir -p $VIDEO_LOCATION
|
|
pip --version
|
|
pip list
|
|
# for some reason the python package playwright is missing
|
|
pip install -r requirements/app/test.txt
|
|
python -m playwright install # --with-deps
|
|
|
|
- name: Clone the Repo/App
|
|
uses: actions/checkout@v4
|
|
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
|
|
timeout-minutes: 20
|
|
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()"
|