File: release.yml

package info (click to toggle)
python-enaml 0.19.0-1
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid
  • size: 13,284 kB
  • sloc: python: 31,443; cpp: 4,499; makefile: 140; javascript: 68; lisp: 53; sh: 20
file content (136 lines) | stat: -rw-r--r-- 3,703 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
name: Build and upload wheels
on:
  workflow_dispatch:
  schedule:
    - cron: '0 0 * * 3'
  push:
    tags:
      - '*'

jobs:
  build_sdist:
    name: Build sdist
    runs-on: ubuntu-latest
    steps:
      - name: Checkout
        uses: actions/checkout@v5
      - name: Get history and tags for SCM versioning to work
        run: |
          git fetch --prune --unshallow
          git fetch --depth=1 origin +refs/tags/*:refs/tags/*
      - name: Setup Python
        uses: actions/setup-python@v6
        with:
          python-version: '3.x'
      - name: Build sdist
        run: |
          pip install --upgrade pip
          pip install wheel build
          python -m build . -s
      - name: Test sdist
        run: |
          pip install pytest
          pip install dist/*.tar.gz
          cd ..
          python -m pytest enaml/tests
      - name: Store artifacts
        uses: actions/upload-artifact@v4
        with:
          name: cibw-sdist
          path: dist/*

  build_wheels:
    name: Build wheels on ${{ matrix.os }}
    runs-on: ${{ matrix.os }}
    strategy:
      matrix:
        os: [windows-latest, ubuntu-latest, macos-latest]
    steps:
      - name: Checkout
        uses: actions/checkout@v5
      - name: Get history and tags for SCM versioning to work
        run: |
          git fetch --prune --unshallow
          git fetch --depth=1 origin +refs/tags/*:refs/tags/*
      - name: Setup Python
        uses: actions/setup-python@v6
        with:
          python-version: '3.13'
      - name: Install cibuildwheel
        run: |
          python -m pip install --upgrade pip
          python -m pip install wheel cibuildwheel
      - name: Build wheels
        env:
          CIBW_BUILD: "cp310-* cp311-* cp312-* cp313-* cp314-*"
          CIBW_ARCHS_MACOS: x86_64 universal2 arm64
          CIBW_ARCHS_WINDOWS: auto64
          CIBW_TEST_REQUIRES: pytest
          CIBW_TEST_COMMAND: python -m pytest {package}/tests -v
        run: |
          python -m cibuildwheel . --output-dir dist
      - name: Store artifacts
        uses: actions/upload-artifact@v4
        with:
          name: cibw-wheels-${{ runner.os }}
          path: dist/*.whl

  publish:
    if: github.event_name == 'push'
    needs: [build_wheels, build_sdist]
    runs-on: ubuntu-latest
    environment:
      name: pypi
      url: https://pypi.org/p/enaml
    permissions:
      id-token: write
    steps:
      - name: Download all the dists
        uses: actions/download-artifact@v5.0.0
        with:
          pattern: cibw-*
          path: dist
          merge-multiple: true

      - uses: pypa/gh-action-pypi-publish@release/v1

  github-release:
    name: >-
      Sign the Python 🐍 distribution 📦 with Sigstore
      and create a GitHub Release
    runs-on: ubuntu-latest
    needs:
    - publish

    permissions:
      contents: write
      id-token: write

    steps:
    - name: Download all the dists
      uses: actions/download-artifact@v5.0.0
      with:
        pattern: cibw-*
        path: dist
        merge-multiple: true
    - name: Sign the dists with Sigstore
      uses: sigstore/gh-action-sigstore-python@v3.0.1
      with:
        inputs: >-
          ./dist/*.tar.gz
          ./dist/*.whl
    - name: Create GitHub Release
      env:
        GITHUB_TOKEN: ${{ github.token }}
      run: >-
        gh release create
        '${{ github.ref_name }}'
        --repo '${{ github.repository }}'
        --generate-notes
    - name: Upload artifact signatures to GitHub Release
      env:
        GITHUB_TOKEN: ${{ github.token }}
      run: >-
        gh release upload
        '${{ github.ref_name }}' dist/**
        --repo '${{ github.repository }}'