name: Upstream on: schedule: - cron: "0 1 * * *" push: pull_request: workflow_dispatch: # Required shell entrypoint to have properly activated conda environments defaults: run: shell: bash -l {0} jobs: check: runs-on: ubuntu-latest if: github.event_name == 'push' || github.event_name == 'pull_request' outputs: test-upstream: ${{ steps.detect-trigger.outputs.trigger-found }} steps: - uses: actions/checkout@v6 with: fetch-depth: 2 - uses: xarray-contrib/ci-trigger@v1 id: detect-trigger with: keyword: "test-upstream" build: needs: check runs-on: ubuntu-latest if: | always() && ( needs.check.outputs.test-upstream == 'true' || (github.event_name == 'pull_request' && contains(github.event.pull_request.labels.*.name, 'upstream')) || (github.repository == 'dask/dask' && github.event_name != 'pull_request') ) timeout-minutes: 90 steps: - name: Checkout source uses: actions/checkout@v6 - name: Setup Conda Environment uses: conda-incubator/setup-miniconda@v4.0.1 with: miniforge-version: latest use-mamba: true channel-priority: strict environment-file: continuous_integration/environment-3.12.yaml activate-environment: test-environment auto-activate-base: false - name: Reconfigure pytest-timeout # No SIGALRM available on Windows if: ${{ matrix.os != 'windows-latest' }} run: sed -i.bak 's/timeout_method = "thread"/timeout_method = "signal"/' pyproject.toml - name: Install env: UPSTREAM_DEV: 1 run: source continuous_integration/scripts/install.sh - name: Run tests id: run_tests env: COVERAGE: "true" PARALLEL: "true" run: continuous_integration/scripts/run_tests.sh --report-log output-log.jsonl - name: Open or update issue on failure if: | failure() && github.event_name != 'pull_request' && github.repository == 'dask/dask' && steps.run_tests.outcome == 'failure' uses: scientific-python/issue-from-pytest-log-action@v1.5.0 with: log-path: output-log.jsonl issue-title: ⚠️ Upstream CI failed ⚠️ issue-label: upstream - name: Coverage uses: codecov/codecov-action@v5