name: pr_test on: workflow_dispatch: pull_request: branches: [main] issue_comment: types: [created] concurrency: group: pr_test cancel-in-progress: false jobs: check-comment: if: ${{ github.event_name == 'workflow_dispatch' || (github.event_name == 'issue_comment' && github.event.issue.pull_request) }} runs-on: self-hosted outputs: should_run: ${{ steps.check.outputs.should_run }} steps: - id: check run: | body="${{ github.event.comment.body }}" body_lower=$(echo "$body" | tr '[:upper:]' '[:lower:]') if [[ "$body_lower" == "run tests" || "$body_lower" == "run test" ]]; then echo "should_run=true" >> $GITHUB_OUTPUT else echo "should_run=false" >> $GITHUB_OUTPUT fi set-up-build-env: runs-on: self-hosted needs: [ check-comment ] if: ${{ github.event_name != 'issue_comment' || needs.check-comment.outputs.should_run == 'true' }} steps: - name: Checkout uses: actions/checkout@v4 with: submodules: true - name: Set up Python run: | which python echo "Setting up Python with Conda" conda create -n test_env python=3.11 -y - name: Install dependencies run: | source $(conda info --base)/etc/profile.d/conda.sh conda activate test_env || { echo "Failed to activate conda env"; exit 1; } which python conda install -c conda-forge gxx=11 gcc=11 echo "Installing dependencies" pip install torch torchvision torchaudio pip install ninja wheel diffusers transformers accelerate sentencepiece protobuf huggingface_hub build: needs: set-up-build-env runs-on: self-hosted timeout-minutes: 30 if: ${{ github.event_name != 'issue_comment' || needs.check-comment.outputs.should_run == 'true' }} steps: - name: Run build tests run: | source $(conda info --base)/etc/profile.d/conda.sh conda activate test_env || { echo "Failed to activate conda env"; exit 1; } which python NUNCHAKU_INSTALL_MODE=ALL python setup.py develop pip install -r tests/requirements.txt test-flux-memory: needs: build runs-on: self-hosted timeout-minutes: 30 if: ${{ github.event_name != 'issue_comment' || needs.check-comment.outputs.should_run == 'true' }} steps: - name: Run FLUX memory test run: | which python source $(conda info --base)/etc/profile.d/conda.sh conda activate test_env || { echo "Failed to activate conda env"; exit 1; } which python HF_TOKEN=${{ secrets.HF_TOKEN }} pytest -v -x tests/flux/test_flux_memory.py test-flux-other: needs: build runs-on: self-hosted timeout-minutes: 60 if: ${{ github.event_name != 'issue_comment' || needs.check-comment.outputs.should_run == 'true' }} steps: - name: Run other FLUX tests run: | which python source $(conda info --base)/etc/profile.d/conda.sh conda activate test_env || { echo "Failed to activate conda env"; exit 1; } which python HF_TOKEN=${{ secrets.HF_TOKEN }} pytest -v -x tests/flux --ignore=tests/flux/test_flux_memory.py clean-up: if: always() && (github.event_name != 'issue_comment' || needs.check-comment.outputs.should_run == 'true') needs: [ set-up-build-env, test-flux-memory, test-flux-other ] runs-on: self-hosted steps: - name: Clean up run: | cd .. rm -rf *nunchaku*