name: Test Invoke with Conda on: push: branches: - 'main' - 'development' jobs: os_matrix: strategy: matrix: os: [ ubuntu-latest, macos-12 ] name: Test invoke.py on ${{ matrix.os }} with conda runs-on: ${{ matrix.os }} steps: - run: | echo The PR was merged - name: Set platform variables id: vars run: | # Note, can't "activate" via github action; specifying the env's python has the same effect if [ "$RUNNER_OS" = "macOS" ]; then echo "::set-output name=ENV_FILE::environment-mac.yml" echo "::set-output name=PYTHON_BIN::/usr/local/miniconda/envs/ldm/bin/python" elif [ "$RUNNER_OS" = "Linux" ]; then echo "::set-output name=ENV_FILE::environment.yml" echo "::set-output name=PYTHON_BIN::/usr/share/miniconda/envs/ldm/bin/python" fi - name: Checkout sources uses: actions/checkout@v3 - name: Use Cached Stable Diffusion v1.4 Model id: cache-sd-v1-4 uses: actions/cache@v3 env: cache-name: cache-sd-v1-4 with: path: models/ldm/stable-diffusion-v1/model.ckpt key: ${{ env.cache-name }} restore-keys: | ${{ env.cache-name }} - name: Download Stable Diffusion v1.4 Model if: ${{ steps.cache-sd-v1-4.outputs.cache-hit != 'true' }} run: | if [ ! -e models/ldm/stable-diffusion-v1 ]; then mkdir -p models/ldm/stable-diffusion-v1 fi if [ ! -e models/ldm/stable-diffusion-v1/model.ckpt ]; then curl -o models/ldm/stable-diffusion-v1/model.ckpt ${{ secrets.SD_V1_4_URL }} fi - name: Use Cached Dependencies id: cache-conda-env-ldm uses: actions/cache@v3 env: cache-name: cache-conda-env-ldm with: path: ~/.conda/envs/ldm key: ${{ env.cache-name }} restore-keys: | ${{ env.cache-name }}-${{ runner.os }}-${{ hashFiles(steps.vars.outputs.ENV_FILE) }} - name: Install Dependencies if: ${{ steps.cache-conda-env-ldm.outputs.cache-hit != 'true' }} run: | conda env create -f ${{ steps.vars.outputs.ENV_FILE }} - name: Use Cached Huggingface and Torch models id: cache-hugginface-torch uses: actions/cache@v3 env: cache-name: cache-hugginface-torch with: path: ~/.cache key: ${{ env.cache-name }} restore-keys: | ${{ env.cache-name }}-${{ hashFiles('scripts/preload_models.py') }} - name: Download Huggingface and Torch models if: ${{ steps.cache-hugginface-torch.outputs.cache-hit != 'true' }} run: | ${{ steps.vars.outputs.PYTHON_BIN }} scripts/preload_models.py # - name: Run tmate # uses: mxschmitt/action-tmate@v3 # timeout-minutes: 30 - name: Run the tests run: | # Note, can't "activate" via github action; specifying the env's python has the same effect if [ $(uname) = "Darwin" ]; then export PYTORCH_ENABLE_MPS_FALLBACK=1 fi # Utterly hacky, but I don't know how else to do this if [[ ${{ github.ref }} == 'refs/heads/master' ]]; then time ${{ steps.vars.outputs.PYTHON_BIN }} scripts/invoke.py --from_file tests/preflight_prompts.txt elif [[ ${{ github.ref }} == 'refs/heads/development' ]]; then time ${{ steps.vars.outputs.PYTHON_BIN }} scripts/invoke.py --from_file tests/dev_prompts.txt fi mkdir -p outputs/img-samples - name: Archive results uses: actions/upload-artifact@v3 with: name: results path: outputs/img-samples