From 5acbee4a778635ecb4d21000cef3bb4a7ec6cabe Mon Sep 17 00:00:00 2001 From: Sydney Runkle <54324534+sydney-runkle@users.noreply.github.com> Date: Wed, 13 Nov 2024 14:12:03 -0500 Subject: [PATCH] Daily CI with unpinned deps (#583) Co-authored-by: Alex Hall --- .github/workflows/daily_deps_test.yml | 62 +++++++++++++++++++++++++++ 1 file changed, 62 insertions(+) create mode 100644 .github/workflows/daily_deps_test.yml diff --git a/.github/workflows/daily_deps_test.yml b/.github/workflows/daily_deps_test.yml new file mode 100644 index 00000000..ad3ec602 --- /dev/null +++ b/.github/workflows/daily_deps_test.yml @@ -0,0 +1,62 @@ +name: Daily CI Job + +on: + schedule: + - cron: '0 12 * * *' # Daily at midnight UTC + + # Can be triggered manually from the actions tab, if needed + workflow_dispatch: + +jobs: + test: + name: test on Python ${{ matrix.python-version }} and pydantic ${{ matrix.pydantic-version }} + runs-on: ubuntu-latest + strategy: + fail-fast: false + matrix: + python-version: ["3.8", "3.9", "3.10", "3.11", "3.12"] + pydantic-version: ['main'] + include: + - python-version: '3.12' + pydantic-version: '2.4' + - python-version: '3.12' + pydantic-version: '2.5' + - python-version: '3.12' + pydantic-version: '2.6' + - python-version: '3.12' + pydantic-version: '2.7' + - python-version: '3.12' + pydantic-version: '2.8' + - python-version: '3.12' + pydantic-version: '2.9' + env: + PYTHON: ${{ matrix.python-version }} + steps: + - uses: actions/checkout@v4 + + - name: Ensure requests to production domains fail + if: runner.os == 'Linux' + run: | + echo "203.0.113.0 logfire.dev" | sudo tee -a /etc/hosts + echo "203.0.113.0 logfire-api.pydantic.dev" | sudo tee -a /etc/hosts + echo "203.0.113.0 logfire.pydantic.dev" | sudo tee -a /etc/hosts + + - name: Install uv + uses: astral-sh/setup-uv@v3 + with: + version: "0.4.30" + enable-cache: true + + # upgrade deps to the latest versions for this daily test + - run: uv sync --python ${{ matrix.python-version }} --upgrade + + - name: Install pydantic ${{ matrix.pydantic-version }} + if: matrix.pydantic-version != 'main' + # installs the most recent patch on the minor version's track, ex 2.6.0 -> 2.6.4 + run: uv pip install 'pydantic==${{ matrix.pydantic-version }}.*' + + - run: uv run --no-sync pytest + + - name: Notify on failure + if: failure() + run: echo "Tests failed. TODO - send notification..."