File: release.yml

package info (click to toggle)
pendulum 3.1.0-3
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid
  • size: 1,780 kB
  • sloc: python: 18,420; makefile: 41
file content (158 lines) | stat: -rw-r--r-- 4,620 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
157
158
name: Release

on:
  push:
    tags:
      - '*.*.*'
  workflow_dispatch:

jobs:
  build:
    name: Build on ${{ matrix.platform || matrix.os }} (${{ matrix.target }} - ${{ matrix.manylinux || 'auto' }})
    environment: release
    strategy:
      fail-fast: false
      matrix:
        os: [ubuntu, macos, windows]
        target: [x86_64, aarch64]
        manylinux: [auto]
        include:
          - os: ubuntu
            platform: linux
          - os: windows
            ls: dir
            interpreter: 3.9 3.10 3.11 3.12 3.13 pypy3.9 pypy3.10
          - os: windows
            ls: dir
            target: aarch64
            interpreter: 3.11 3.12 3.13
          - os: macos
            target: aarch64
            interpreter: 3.9 3.10 3.11 3.12 3.13 pypy3.9 pypy3.10
          - os: ubuntu
            platform: linux
            target: aarch64
          # musllinux
          - os: ubuntu
            platform: linux
            target: x86_64
            manylinux: musllinux_1_1
          - os: ubuntu
            platform: linux
            target: aarch64
            manylinux: musllinux_1_1
          - os: ubuntu
            platform: linux
            target: ppc64le
            interpreter: 3.9 3.10 3.11 3.12 3.13
          - os: ubuntu
            platform: linux
            target: s390x
            interpreter: 3.9 3.10 3.11 3.12 3.13

    runs-on: ${{ matrix.os }}-latest
    steps:
      - uses: actions/checkout@v4

      - name: set up python
        uses: actions/setup-python@v4
        with:
          python-version: '3.11'
          architecture: ${{ matrix.python-architecture || 'x64' }}

      - name: build wheels
        uses: PyO3/maturin-action@v1
        with:
          target: ${{ matrix.target }}
          manylinux: ${{ matrix.manylinux || 'auto' }}
          container: ${{ matrix.container }}
          args: --release --out dist --interpreter ${{ matrix.interpreter || '3.9 3.10 3.11 3.12 3.13 pypy3.9 pypy3.10' }} ${{ matrix.extra-build-args }}
          rust-toolchain: stable
          docker-options: -e CI

      - run: ${{ matrix.ls || 'ls -lh' }} dist/

      - uses: actions/upload-artifact@v4
        with:
          name: dist-${{ matrix.os }}-${{ matrix.target }}-${{ matrix.manylinux }}
          path: dist

  build_sdist:
    runs-on: ubuntu-latest
    environment: release
    steps:
      - uses: actions/checkout@v3
      - name: Build sdist
        uses: PyO3/maturin-action@v1
        with:
          command: sdist
          args: --out dist
      - name: Upload sdist
        uses: actions/upload-artifact@v4
        with:
          name: dist-sdist
          path: dist

  build_no_ext:
    runs-on: ubuntu-latest
    environment: release
    steps:
      - uses: actions/checkout@v3
      - name: Install and configure Poetry
        run: pipx install poetry
      - name: Hotswap build backend for Poetry
        # Maturin doesn't support building no-extension wheels, so we swap to Poetry for that
        run: |
          sed -i -e '/^\[build-system\]/,/^\[/{s/^requires = .*/requires = ["poetry-core>=2.0.0,<3.0.0"]/; s/^build-backend = .*/build-backend = "poetry.core.masonry.api"/}' pyproject.toml
      - name: Install dependencies
        run: poetry install --only main --only test --only typing --only build
      - name: Run poetry build
        run: poetry build -f wheel
      - name: Upload no-ext wheel
        uses: actions/upload-artifact@v4
        with:
          name: dist-any
          path: dist


  Release:
    needs: [ build, build_sdist, build_no_ext ]
    if: success()
    runs-on: ubuntu-latest
    permissions:
      id-token: write
      contents: write
    environment:
      name: pypi
      url: https://pypi.org/project/pendulum/
    steps:
      - name: Checkout code
        uses: actions/checkout@v2

      - name: Download artifacts
        uses: actions/download-artifact@v4
        with:
          pattern: dist*
          path: dist
          merge-multiple: true

      - name: Check distributions
        run: |
          ls -la dist

      - name: Check Version
        id: check-version
        run: |
          [[ "${GITHUB_REF#refs/tags/}" =~ ^[0-9]+\.[0-9]+\.[0-9]+$ ]] \
            || echo prerelease=true >> $GITHUB_OUTPUT

      - name: Create Release
        uses: ncipollo/release-action@v1
        with:
          artifacts: "dist/*"
          draft: false
          prerelease: steps.check-version.outputs.prerelease == 'true'
          body: "See CHANGELOG.md for details"

      - name: Publish package distributions to PyPI
        uses: pypa/gh-action-pypi-publish@release/v1