name: Test invoke.py pip on: push: branches: - 'main' pull_request: types: - 'ready_for_review' - 'opened' - 'synchronize' merge_group: workflow_dispatch: concurrency: group: ${{ github.workflow }}-${{ github.head_ref || github.run_id }} cancel-in-progress: true jobs: matrix: if: github.event.pull_request.draft == false strategy: matrix: python-version: # - '3.9' - '3.10' pytorch: - linux-cuda-11_7 - linux-rocm-5_2 - linux-cpu - macos-default - windows-cpu include: - pytorch: linux-cuda-11_7 os: ubuntu-22.04 github-env: $GITHUB_ENV - pytorch: linux-rocm-5_2 os: ubuntu-22.04 extra-index-url: 'https://download.pytorch.org/whl/rocm5.2' github-env: $GITHUB_ENV - pytorch: linux-cpu os: ubuntu-22.04 extra-index-url: 'https://download.pytorch.org/whl/cpu' github-env: $GITHUB_ENV - pytorch: macos-default os: macOS-12 github-env: $GITHUB_ENV - pytorch: windows-cpu os: windows-2022 github-env: $env:GITHUB_ENV name: ${{ matrix.pytorch }} on ${{ matrix.python-version }} runs-on: ${{ matrix.os }} env: PIP_USE_PEP517: '1' steps: - name: Checkout sources id: checkout-sources uses: actions/checkout@v3 - name: Check for changed python files id: changed-files uses: tj-actions/changed-files@v41 with: files_yaml: | python: - 'pyproject.toml' - 'invokeai/**' - '!invokeai/frontend/web/**' - 'tests/**' - name: set test prompt to main branch validation if: steps.changed-files.outputs.python_any_changed == 'true' run: echo "TEST_PROMPTS=tests/validate_pr_prompt.txt" >> ${{ matrix.github-env }} - name: setup python if: steps.changed-files.outputs.python_any_changed == 'true' uses: actions/setup-python@v4 with: python-version: ${{ matrix.python-version }} cache: pip cache-dependency-path: pyproject.toml - name: install invokeai if: steps.changed-files.outputs.python_any_changed == 'true' env: PIP_EXTRA_INDEX_URL: ${{ matrix.extra-index-url }} run: > pip3 install --editable=".[test]" - name: run pytest if: steps.changed-files.outputs.python_any_changed == 'true' id: run-pytest run: pytest # - name: run invokeai-configure # env: # HUGGING_FACE_HUB_TOKEN: ${{ secrets.HUGGINGFACE_TOKEN }} # run: > # invokeai-configure # --yes # --default_only # --full-precision # # can't use fp16 weights without a GPU # - name: run invokeai # id: run-invokeai # env: # # Set offline mode to make sure configure preloaded successfully. # HF_HUB_OFFLINE: 1 # HF_DATASETS_OFFLINE: 1 # TRANSFORMERS_OFFLINE: 1 # INVOKEAI_OUTDIR: ${{ github.workspace }}/results # run: > # invokeai # --no-patchmatch # --no-nsfw_checker # --precision=float32 # --always_use_cpu # --use_memory_db # --outdir ${{ env.INVOKEAI_OUTDIR }}/${{ matrix.python-version }}/${{ matrix.pytorch }} # --from_file ${{ env.TEST_PROMPTS }} # - name: Archive results # env: # INVOKEAI_OUTDIR: ${{ github.workspace }}/results # uses: actions/upload-artifact@v3 # with: # name: results # path: ${{ env.INVOKEAI_OUTDIR }}