mirror of
https://github.com/invoke-ai/InvokeAI
synced 2024-08-30 20:32:17 +00:00
22133392b2
* disable NSFW checker loading during the CI tests The NSFW filter apparently causes invoke.py to crash during CI testing, possibly due to out of memory errors. This workaround disables NSFW model loading. * doc change * fix formatting errors in yml files
136 lines
4.8 KiB
YAML
136 lines
4.8 KiB
YAML
name: Test invoke.py
|
|
on:
|
|
push:
|
|
branches:
|
|
- 'main'
|
|
- 'development'
|
|
- 'fix-gh-actions-fork'
|
|
pull_request:
|
|
branches:
|
|
- 'main'
|
|
- 'development'
|
|
|
|
jobs:
|
|
matrix:
|
|
strategy:
|
|
matrix:
|
|
stable-diffusion-model:
|
|
- 'stable-diffusion-1.5'
|
|
environment-yaml:
|
|
- environment-lin-amd.yml
|
|
- environment-lin-cuda.yml
|
|
- environment-mac.yml
|
|
include:
|
|
- environment-yaml: environment-lin-amd.yml
|
|
os: ubuntu-latest
|
|
default-shell: bash -l {0}
|
|
- environment-yaml: environment-lin-cuda.yml
|
|
os: ubuntu-latest
|
|
default-shell: bash -l {0}
|
|
- environment-yaml: environment-mac.yml
|
|
os: macos-12
|
|
default-shell: bash -l {0}
|
|
- stable-diffusion-model: stable-diffusion-1.5
|
|
stable-diffusion-model-url: https://huggingface.co/runwayml/stable-diffusion-v1-5/resolve/main/v1-5-pruned-emaonly.ckpt
|
|
stable-diffusion-model-dl-path: models/ldm/stable-diffusion-v1
|
|
stable-diffusion-model-dl-name: v1-5-pruned-emaonly.ckpt
|
|
name: ${{ matrix.environment-yaml }} on ${{ matrix.os }}
|
|
runs-on: ${{ matrix.os }}
|
|
env:
|
|
CONDA_ENV_NAME: invokeai
|
|
INVOKEAI_ROOT: '${{ github.workspace }}/invokeai'
|
|
defaults:
|
|
run:
|
|
shell: ${{ matrix.default-shell }}
|
|
steps:
|
|
- name: Checkout sources
|
|
id: checkout-sources
|
|
uses: actions/checkout@v3
|
|
|
|
- name: create models.yaml from example
|
|
run: |
|
|
mkdir -p ${{ env.INVOKEAI_ROOT }}/configs
|
|
cp configs/models.yaml.example ${{ env.INVOKEAI_ROOT }}/configs/models.yaml
|
|
|
|
- name: create environment.yml
|
|
run: cp "environments-and-requirements/${{ matrix.environment-yaml }}" environment.yml
|
|
|
|
- name: Use cached conda packages
|
|
id: use-cached-conda-packages
|
|
uses: actions/cache@v3
|
|
with:
|
|
path: ~/conda_pkgs_dir
|
|
key: conda-pkgs-${{ runner.os }}-${{ runner.arch }}-${{ hashFiles(matrix.environment-yaml) }}
|
|
|
|
- name: Activate Conda Env
|
|
id: activate-conda-env
|
|
uses: conda-incubator/setup-miniconda@v2
|
|
with:
|
|
activate-environment: ${{ env.CONDA_ENV_NAME }}
|
|
environment-file: environment.yml
|
|
miniconda-version: latest
|
|
|
|
- name: set test prompt to main branch validation
|
|
if: ${{ github.ref == 'refs/heads/main' }}
|
|
run: echo "TEST_PROMPTS=tests/preflight_prompts.txt" >> $GITHUB_ENV
|
|
|
|
- name: set test prompt to development branch validation
|
|
if: ${{ github.ref == 'refs/heads/development' }}
|
|
run: echo "TEST_PROMPTS=tests/dev_prompts.txt" >> $GITHUB_ENV
|
|
|
|
- name: set test prompt to Pull Request validation
|
|
if: ${{ github.ref != 'refs/heads/main' && github.ref != 'refs/heads/development' }}
|
|
run: echo "TEST_PROMPTS=tests/validate_pr_prompt.txt" >> $GITHUB_ENV
|
|
|
|
- name: Use Cached Stable Diffusion Model
|
|
id: cache-sd-model
|
|
uses: actions/cache@v3
|
|
env:
|
|
cache-name: cache-${{ matrix.stable-diffusion-model }}
|
|
with:
|
|
path: ${{ env.INVOKEAI_ROOT }}/${{ matrix.stable-diffusion-model-dl-path }}
|
|
key: ${{ env.cache-name }}
|
|
|
|
- name: Download ${{ matrix.stable-diffusion-model }}
|
|
id: download-stable-diffusion-model
|
|
if: ${{ steps.cache-sd-model.outputs.cache-hit != 'true' }}
|
|
run: |
|
|
mkdir -p "${{ env.INVOKEAI_ROOT }}/${{ matrix.stable-diffusion-model-dl-path }}"
|
|
curl \
|
|
-H "Authorization: Bearer ${{ secrets.HUGGINGFACE_TOKEN }}" \
|
|
-o "${{ env.INVOKEAI_ROOT }}/${{ matrix.stable-diffusion-model-dl-path }}/${{ matrix.stable-diffusion-model-dl-name }}" \
|
|
-L ${{ matrix.stable-diffusion-model-url }}
|
|
|
|
- name: run configure_invokeai.py
|
|
id: run-preload-models
|
|
run: |
|
|
python scripts/configure_invokeai.py --no-interactive --yes
|
|
|
|
- name: cat ~/.invokeai
|
|
id: cat-invokeai
|
|
run: cat ~/.invokeai
|
|
|
|
- name: Run the tests
|
|
id: run-tests
|
|
run: |
|
|
time python scripts/invoke.py \
|
|
--no-patchmatch \
|
|
--no-nsfw_checker \
|
|
--model ${{ matrix.stable-diffusion-model }} \
|
|
--from_file ${{ env.TEST_PROMPTS }} \
|
|
--root="${{ env.INVOKEAI_ROOT }}" \
|
|
--outdir="${{ env.INVOKEAI_ROOT }}/outputs"
|
|
|
|
- name: export conda env
|
|
id: export-conda-env
|
|
run: |
|
|
mkdir -p outputs/img-samples
|
|
conda env export --name ${{ env.CONDA_ENV_NAME }} > outputs/img-samples/environment-${{ runner.os }}-${{ runner.arch }}.yml
|
|
|
|
- name: Archive results
|
|
id: archive-results
|
|
uses: actions/upload-artifact@v3
|
|
with:
|
|
name: results_${{ matrix.requirements-file }}_${{ matrix.python-version }}
|
|
path: ${{ env.INVOKEAI_ROOT }}/outputs
|