Skip to content

Commit d674e17

Browse files
authored
Merge pull request #39 from zmx27/update-workflows
skpkg: modify repository to better match scikit-package files
2 parents 4b4f28f + 0835e16 commit d674e17

19 files changed

+130
-440
lines changed
Lines changed: 7 additions & 219 deletions
Original file line numberDiff line numberDiff line change
@@ -1,230 +1,18 @@
1-
name: Build Wheels and Release
1+
name: Release (GitHub/PyPI) and Deploy Docs
22

33
on:
44
workflow_dispatch:
55
push:
66
tags:
77
- "*" # Trigger on all tags initially, but tag and release privilege are verified in _build-wheel-release-upload.yml
88

9-
env:
10-
PYTHON_VERSIONS: '["3.11","3.12","3.13"]'
11-
12-
permissions:
13-
contents: write
14-
actions: read
15-
packages: write
16-
17-
concurrency:
18-
group: build-wheels-${{ github.ref }}
19-
cancel-in-progress: true
20-
21-
defaults:
22-
run:
23-
shell: bash {0}
24-
259
jobs:
26-
get-python-versions:
27-
runs-on: ubuntu-latest
28-
outputs:
29-
py_ver: ${{ steps.set.outputs.py_ver }}
30-
py_last: ${{ steps.set.outputs.py_last }}
31-
steps:
32-
- id: set
33-
run: |
34-
echo py_ver=$PYTHON_VERSIONS >> $GITHUB_OUTPUT
35-
echo "py_last=${{ fromJson(env.PYTHON_VERSIONS)[0] }}" >> $GITHUB_OUTPUT
36-
37-
check-tag-on-main:
38-
runs-on: ubuntu-latest
39-
steps:
40-
- name: Checkout repository with full history
41-
uses: actions/checkout@v4
42-
with:
43-
token: ${{ secrets.PAT_TOKEN }}
44-
fetch-depth: 0
45-
46-
- name: Verify tag
47-
run: |
48-
git fetch origin main
49-
TAG_COMMIT=$(git rev-parse ${{ github.ref_name }})
50-
if git merge-base --is-ancestor "$TAG_COMMIT" origin/main; then
51-
echo "Tag ${{ github.ref_name }} ($TAG_COMMIT) is contained in main"
52-
else
53-
echo "::error::Tag ${{ github.ref_name }} ($TAG_COMMIT) is not found in main. Please release from the main branch."
54-
exit 1
55-
fi
56-
57-
check-tag-privilege:
58-
# No third party actions used
59-
uses: scikit-package/release-scripts/.github/workflows/_check-tag-privilege.yml@v0
10+
build-release:
11+
uses: scikit-package/release-scripts/.github/workflows/_build-wheel-release-upload.yml@v0
6012
with:
61-
maintainer_github_username: sbillinge
62-
63-
build-sdist:
64-
needs: [check-tag-privilege, get-python-versions, check-tag-on-main]
65-
runs-on: ubuntu-latest
66-
67-
steps:
68-
- name: Checkout
69-
# GitHub officially-maintained actions
70-
uses: actions/checkout@v4
71-
with:
72-
fetch-depth: 0
73-
74-
- name: Set up Python
75-
# GitHub officially-maintained actions
76-
uses: actions/setup-python@v5
77-
with:
78-
python-version: ${{ needs.get-python-versions.outputs.py_last }}
79-
80-
- name: Build docs and remove fonts that blow up the wheel size
81-
run: |
82-
python -m pip install Sphinx sphinx-rtd-theme sphinx-copybutton m2r
83-
cd docs
84-
make html
85-
cd build/html/_static/css/fonts
86-
find . -type f ! -name '*.ttf' -delete
87-
cd ../..
88-
rm -rf fonts
89-
cd ..
90-
rm -rf _sources
91-
cd ..
92-
rm -rf doctrees
93-
cd ../..
94-
95-
- name: Make sdist
96-
run: |
97-
python -m pip install --upgrade pip build cython setuptools setuptools-git-versioning
98-
python -m build --sdist --no-isolation
99-
100-
- name: Strip source codes
101-
run: |
102-
set -euo pipefail
103-
tar xf dist/diffpy_srxplanargui-*.tar.gz
104-
SRC_DIR=$(find . -maxdepth 1 -type d -name 'diffpy_srxplanargui-*' | head -n1)
105-
find "$SRC_DIR" -type f -name '*.c' -print0 \
106-
| xargs -0 perl -i.bak -0777 -pe 's{/\*.*?\*/}{}gs'
107-
find "$SRC_DIR" -type f -name '*.c.bak' -delete
108-
tar czf dist/"${SRC_DIR#./}".tar.gz "$SRC_DIR"
109-
rm -rf "$SRC_DIR"
110-
111-
- name: Upload sdist
112-
# GitHub officially-maintained actions
113-
uses: actions/upload-artifact@v4
114-
with:
115-
name: sdist
116-
path: dist/
117-
retention-days: 1
118-
119-
- name: Upload INSTRUCTIONS.txt
120-
uses: actions/upload-artifact@v4
121-
with:
122-
name: instructions
123-
path: INSTRUCTIONS.txt
124-
125-
build-wheels:
126-
needs: [build-sdist, get-python-versions]
127-
128-
name: Build wheels ${{ matrix.python }}-${{ matrix.buildplat }}
129-
runs-on: ${{ matrix.buildplat }}
130-
strategy:
131-
fail-fast: false
132-
matrix:
133-
buildplat:
134-
- ubuntu-latest
135-
- macos-14
136-
- windows-latest
137-
python: ${{ fromJSON(needs.get-python-versions.outputs.py_ver) }}
138-
steps:
139-
- name: Download sdist
140-
# GitHub officially-maintained actions
141-
uses: actions/download-artifact@v4
142-
with:
143-
name: sdist
144-
path: dist/
145-
146-
- name: Set up Python
147-
uses: actions/setup-python@v5
148-
with:
149-
python-version: ${{ matrix.python }}
150-
151-
- name: Build wheels
152-
run: |
153-
# setuptools-git-versioning only look into .git and PKG-INFO in the top directory
154-
which python; python --version
155-
which pip; pip --version
156-
python -m pip install --upgrade pip build cython setuptools setuptools-git-versioning
157-
tar xf dist/diffpy_srxplanargui-*.tar.gz
158-
cd diffpy_srxplanargui-*
159-
python -m pip wheel . --no-deps --no-build-isolation --wheel-dir ./../dist
160-
161-
- name: Upload wheels
162-
uses: actions/upload-artifact@v4
163-
with:
164-
name: wheels-${{ matrix.python }}-${{ matrix.buildplat }}
165-
path: dist/*.whl
166-
167-
test-wheels:
168-
needs: [build-wheels, get-python-versions]
169-
170-
name: Test wheels ${{ matrix.python }}-${{ matrix.buildplat }}
171-
runs-on: ${{ matrix.buildplat }}
172-
strategy:
173-
fail-fast: false
174-
matrix:
175-
buildplat:
176-
- ubuntu-latest
177-
- macos-14
178-
- windows-latest
179-
python: ${{ fromJson(needs.get-python-versions.outputs.py_ver) }}
180-
steps:
181-
- name: Checkout
182-
uses: actions/checkout@v4
183-
184-
- name: Download wheels
185-
uses: actions/download-artifact@v4
186-
with:
187-
name: wheels-${{ matrix.python }}-${{ matrix.buildplat }}
188-
path: dist/
189-
190-
- name: Set up Python
191-
uses: actions/setup-python@v5
192-
with:
193-
python-version: ${{ matrix.python }}
194-
195-
- name: Install wheels
196-
run: |
197-
python -m pip install --upgrade pip pytest setuptools-git-versioning
198-
python -m pip install dist/*.whl
199-
200-
- name: Assert no source files in installed package
201-
run: |
202-
# For debugging
203-
# touch $(python -c "import sysconfig, os; print(os.path.join(sysconfig.get_paths()['purelib'], 'diffpy/srxplanargui', 'fake.py'))")
204-
python - << 'EOF'
205-
import os, glob, sys, sysconfig
206-
sp = sysconfig.get_paths()['purelib']
207-
pkg = os.path.join(sp, 'diffpy', 'srxplanargui')
208-
patterns = [os.path.join(pkg, '*.py'),
209-
os.path.join(pkg, '*.c')]
210-
bad = []
211-
for p in patterns:
212-
bad.extend(glob.glob(p))
213-
214-
if bad:
215-
print("Found leftover source files in installed package:")
216-
for f in bad:
217-
print(" -", f)
218-
sys.exit(1)
219-
220-
print("No .py or .c files present in diffpy/srxplanargui/")
221-
EOF
222-
223-
- name: Run tests
224-
run: python -m pytest
225-
226-
release:
227-
needs: [test-wheels]
228-
uses: ./.github/workflows/release-github.yml
13+
project: diffpy.srxplanargui
14+
c_extension: false
15+
maintainer_GITHUB_username: sbillinge
22916
secrets:
17+
PYPI_TOKEN: ${{ secrets.PYPI_TOKEN }}
23018
PAT_TOKEN: ${{ secrets.PAT_TOKEN }}

.github/workflows/matrix-no-codecov-on-merge-to-main.yml renamed to .github/workflows/matrix-and-codecov-on-merge-to-main.yml

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,8 +12,10 @@ on:
1212

1313
jobs:
1414
matrix-coverage:
15-
uses: scikit-package/release-scripts/.github/workflows/_matrix-no-codecov-on-merge-to-main.yml@v0
15+
uses: scikit-package/release-scripts/.github/workflows/_matrix-and-codecov-on-merge-to-main.yml@v0
1616
with:
1717
project: diffpy.srxplanargui
1818
c_extension: false
1919
headless: false
20+
secrets:
21+
CODECOV_TOKEN: ${{ secrets.CODECOV_TOKEN }}

0 commit comments

Comments
 (0)