2022-08-30 10:33:58 +00:00
|
|
|
name: cloud-e2e-testing
|
|
|
|
|
|
|
|
# Used to run the e2e tests on lightning.ai
|
|
|
|
on:
|
|
|
|
push:
|
|
|
|
branches: [master, "release/*"]
|
|
|
|
pull_request:
|
|
|
|
paths:
|
|
|
|
- ".github/workflows/ci-app-cloud-e2e-test.yml"
|
|
|
|
workflow_dispatch: # TODO: add inputs for specific git_head
|
|
|
|
|
|
|
|
schedule:
|
|
|
|
# At the end of every day
|
|
|
|
- cron: "0 0 * * *"
|
|
|
|
|
|
|
|
jobs:
|
|
|
|
app-cloud-e2e:
|
|
|
|
name: Cloud e2e Test
|
|
|
|
runs-on: ubuntu-20.04
|
|
|
|
strategy:
|
|
|
|
fail-fast: false
|
|
|
|
matrix:
|
|
|
|
app_name:
|
|
|
|
- v0_app
|
|
|
|
- boring_app
|
|
|
|
# - quick_start # TODO: fix this
|
|
|
|
- template_streamlit_ui
|
|
|
|
- template_react_ui
|
|
|
|
- template_jupyterlab
|
|
|
|
- idle_timeout
|
|
|
|
- collect_failures
|
|
|
|
- custom_work_dependencies
|
|
|
|
- drive
|
|
|
|
- payload
|
|
|
|
- commands_and_api
|
|
|
|
timeout-minutes: 35
|
|
|
|
steps:
|
2022-09-05 17:13:08 +00:00
|
|
|
- uses: actions/checkout@v3
|
2022-08-30 10:33:58 +00:00
|
|
|
- uses: actions/setup-python@v4
|
|
|
|
with:
|
|
|
|
python-version: "3.8"
|
|
|
|
|
|
|
|
- name: Get PR ID
|
|
|
|
id: running
|
|
|
|
run: echo "::set-output name=ID::$(date +%s)"
|
|
|
|
|
|
|
|
- name: Install dependencies
|
|
|
|
shell: bash
|
|
|
|
run: |
|
|
|
|
pip --version
|
|
|
|
python -m pip install -r requirements/app/devel.txt --no-cache --quiet --find-links https://download.pytorch.org/whl/cpu/torch_stable.html
|
|
|
|
|
|
|
|
- name: Cache Playwright dependencies
|
|
|
|
id: playwright-cache
|
|
|
|
uses: actions/cache@v3
|
|
|
|
with:
|
|
|
|
path: ~/.cache/ms-playwright
|
|
|
|
key: ${{ runner.os }}-playwright-${{ matrix.app_name }}-${{ hashFiles('requirements/app/base.txt', 'requirements/app/*.txt', 'src/lightning_app/__version__.py') }}
|
|
|
|
restore-keys: ${{ runner.os }}-playwright-${{ matrix.app_name }}-
|
|
|
|
|
|
|
|
- name: Install Playwright system dependencies
|
|
|
|
shell: bash
|
|
|
|
run: |
|
|
|
|
python -m pip install playwright
|
|
|
|
python -m playwright install --with-deps
|
|
|
|
|
|
|
|
- name: Install lightning
|
|
|
|
run: |
|
|
|
|
pip install -e . --find-links https://download.pytorch.org/whl/cpu/torch_stable.html
|
|
|
|
shell: bash
|
|
|
|
|
|
|
|
#- name: Lightning Install quick-start
|
|
|
|
# if: ${{ (matrix.app_name == 'quick_start') }}
|
|
|
|
# shell: bash
|
|
|
|
# run: |
|
|
|
|
# python -m lightning install app lightning/quick-start -y
|
|
|
|
|
|
|
|
- name: Clone Template React UI Repo
|
|
|
|
if: ${{ (matrix.app_name == 'template_react_ui') }}
|
|
|
|
run: |
|
|
|
|
git clone https://github.com/Lightning-AI/lightning-template-react examples/app_template_react_ui
|
|
|
|
shell: bash
|
|
|
|
|
|
|
|
- name: Clone Template Jupyter Lab Repo
|
|
|
|
if: ${{ (matrix.app_name == 'template_jupyterlab') }}
|
|
|
|
run: |
|
|
|
|
git clone https://github.com/Lightning-AI/LAI-lightning-template-jupyterlab-App examples/app_template_jupyterlab
|
|
|
|
cp examples/app_template_jupyterlab/tests/test_template_jupyterlab.py tests/tests_app_examples/test_template_jupyterlab.py
|
|
|
|
shell: bash
|
|
|
|
|
|
|
|
- name: List pip dependency
|
|
|
|
shell: bash
|
|
|
|
run: pip list
|
|
|
|
|
|
|
|
- name: Run the tests
|
|
|
|
env:
|
|
|
|
LAI_USER: ${{ secrets.LAI_USER }}
|
|
|
|
LAI_PASS: ${{ secrets.LAI_PASS }}
|
|
|
|
LIGHTNING_USER_ID: ${{ secrets.LIGHTNING_USER_ID }}
|
|
|
|
LIGHTNING_API_KEY: ${{ secrets.LIGHTNING_API_KEY }}
|
|
|
|
LIGHTNING_USERNAME: ${{ secrets.LIGHTNING_USERNAME }}
|
|
|
|
LIGHTNING_CLOUD_URL: ${{ secrets.LIGHTNING_CLOUD_URL }}
|
|
|
|
CLOUD: "1"
|
|
|
|
VIDEO_LOCATION: ./artifacts/videos
|
|
|
|
PR_NUMBER: ${{ steps.running.outputs.ID }}
|
|
|
|
TEST_APP_NAME: ${{ matrix.app_name }}
|
|
|
|
HAR_LOCATION: ./artifacts/hars
|
|
|
|
SLOW_MO: 50
|
|
|
|
shell: bash
|
|
|
|
run: |
|
|
|
|
mkdir -p ${VIDEO_LOCATION}
|
|
|
|
HEADLESS=1 PACKAGE_LIGHTNING=1 python -m pytest tests/tests_app_examples/test_${{ matrix.app_name }}.py::test_${{ matrix.app_name }}_example_cloud --timeout=900 --capture=no -v --color=yes
|
|
|
|
# Delete the artifacts if successful
|
|
|
|
rm -r ${VIDEO_LOCATION}/${{ matrix.app_name }}
|
|
|
|
|
|
|
|
- uses: actions/upload-artifact@v3
|
|
|
|
if: ${{ always() }}
|
|
|
|
with:
|
|
|
|
name: test-artifacts
|
|
|
|
path: ./artifacts/videos
|
|
|
|
|
|
|
|
- name: Clean Previous Apps
|
|
|
|
if: ${{ always() }}
|
|
|
|
env:
|
|
|
|
LAI_USER: ${{ secrets.LAI_USER }}
|
|
|
|
LAI_PASS: ${{ secrets.LAI_PASS }}
|
|
|
|
LIGHTNING_USER_ID: ${{ secrets.LIGHTNING_USER_ID }}
|
|
|
|
LIGHTNING_API_KEY: ${{ secrets.LIGHTNING_API_KEY }}
|
|
|
|
LIGHTNING_USERNAME: ${{ secrets.LIGHTNING_USERNAME }}
|
|
|
|
LIGHTNING_CLOUD_URL: ${{ secrets.LIGHTNING_CLOUD_URL }}
|
|
|
|
PR_NUMBER: ${{ steps.running.outputs.ID }}
|
|
|
|
TEST_APP_NAME: ${{ matrix.app_name }}
|
|
|
|
GRID_USER_ID: ${{ secrets.LIGHTNING_USER_ID }}
|
|
|
|
GRID_USER_KEY: ${{ secrets.LIGHTNING_API_KEY }}
|
|
|
|
GRID_URL: ${{ secrets.LIGHTNING_CLOUD_URL }}
|
|
|
|
_GRID_USERNAME: ${{ secrets.LIGHTNING_USERNAME }}
|
|
|
|
shell: bash
|
|
|
|
run: |
|
|
|
|
time python -c "from lightning.app import testing; testing.delete_cloud_lightning_apps()"
|