File: ci.yml

package info (click to toggle)
python-django-tasks-db 0.12.0-2
  • links: PTS, VCS
  • area: main
  • in suites: sid
  • size: 344 kB
  • sloc: python: 2,227; sh: 5; makefile: 4
file content (156 lines) | stat: -rw-r--r-- 4,412 bytes parent folder | download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
name: CI

on:
  pull_request:
  push:
    branches:
      - master
    tags:
      - "*"
concurrency:
  group: ${{ github.workflow }}-${{ github.ref }}
  cancel-in-progress: true

jobs:
  test:
    runs-on: ${{ matrix.os }}
    strategy:
      fail-fast: false
      matrix:
        os: [windows-latest, macos-latest, ubuntu-latest]
        python-version: ["3.10", "3.11", "3.12", "3.13", "3.14"]
        django-version: ["4.2", "5.2", "6.0"]
        exclude:
          - django-version: "6.0"
            python-version: "3.10"
          - django-version: "6.0"
            python-version: "3.11"
          - django-version: "4.2"
            python-version: "3.14"
    steps:
      - uses: actions/checkout@v6
      - name: Set up Python ${{ matrix.python-version }}
        uses: actions/setup-python@v6
        with:
          python-version: ${{ matrix.python-version }}
      - uses: actions/cache@v5
        with:
          path: ~/.cache/pip
          key: ${{ runner.os }}-${{ matrix.python-version }}-pip-${{ hashFiles('pyproject.toml') }}
      - uses: taiki-e/install-action@just
      - name: Install dependencies
        run: |
          pip install --upgrade pip
          pip install -e . --group dev
          pip install Django~=${{ matrix.django-version }}
      - name: Lint
        run: just lint
      - name: Run fast tests
        if: ${{ !cancelled() }}
        run: just test-fast -v2
      - name: Run tests
        if: ${{ !cancelled() }}
        run: just test -v2 --keepdb

  test-postgres:
    runs-on: ubuntu-latest
    services:
      postgres:
        image: postgres:16-alpine
        env:
          POSTGRES_USER: postgres
          POSTGRES_PASSWORD: postgres
        ports:
          - 5432:5432
        options: --health-cmd pg_isready --health-interval 10s --health-timeout 5s --health-retries 5
    strategy:
      fail-fast: false
      matrix:
        django-version: ["5.2", "6.0"]
    steps:
      - uses: actions/checkout@v6
      - name: Set up Python 3.14
        uses: actions/setup-python@v6
        with:
          python-version: "3.14"
      - uses: actions/cache@v5
        with:
          path: ~/.cache/pip
          key: ${{ runner.os }}-pip-${{ hashFiles('pyproject.toml') }}
      - uses: taiki-e/install-action@just
      - name: Install dependencies
        run: |
          pip install --upgrade pip
          pip install -e . --group dev --group postgres
          pip install Django~=${{ matrix.django-version }}
      - name: Run tests
        run: just test -v2
        env:
          DATABASE_URL: postgres://postgres:postgres@localhost/postgres

  test-mysql:
    runs-on: ubuntu-latest
    services:
      mysql:
        image: mysql:8.4
        env:
          MYSQL_ROOT_PASSWORD: django
          MYSQL_DATABASE: django
        ports:
          - 3306:3306
    strategy:
      fail-fast: false
      matrix:
        django-version: ["5.2", "6.0"]
    steps:
      - uses: actions/checkout@v6
      - name: Set up Python 3.14
        uses: actions/setup-python@v6
        with:
          python-version: "3.14"
      - uses: actions/cache@v5
        with:
          path: ~/.cache/pip
          key: ${{ runner.os }}-pip-${{ hashFiles('pyproject.toml') }}
      - uses: taiki-e/install-action@just
      - name: Install dependencies
        run: |
          pip install --upgrade pip
          pip install -e . --group dev --group mysql
          pip install Django~=${{ matrix.django-version }}
      - name: Run tests
        run: just test -v2
        env:
          DATABASE_URL: mysql://root:django@127.0.0.1/django

  build:
    permissions:
      id-token: write  # IMPORTANT: this permission is mandatory for trusted publishing
    runs-on: ubuntu-latest
    needs:
      - test
      - test-postgres
      - test-mysql
    steps:
    - uses: actions/checkout@v6
      with:
        fetch-depth: 0
    - name: Set up Python
      uses: actions/setup-python@v6
      with:
        python-version: "3.14"
    - name: Install dependencies
      run: |
        python -m pip install --upgrade pip build
    - name: Build package
      run: python -m build
    - name: Save built package
      uses: actions/upload-artifact@v6
      with:
        name: package
        path: dist
    - name: Publish to PyPi
      if: ${{ github.ref_type	== 'tag' }}
      uses: pypa/gh-action-pypi-publish@release/v1
      with:
        print-hash: true