-
Notifications
You must be signed in to change notification settings - Fork 52
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
CI: Added github action release workflow #563
Changes from 6 commits
abc6b41
4ebe0b6
db8c1ba
ca3f5ae
dbf392f
5de4117
ee3c7a6
d02e08f
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,146 @@ | ||
name: Build and deploy | ||
|
||
on: | ||
workflow_dispatch: | ||
release: | ||
types: | ||
- published | ||
|
||
jobs: | ||
build_sdist: | ||
name: Build source distribution | ||
runs-on: ubuntu-latest | ||
steps: | ||
- uses: actions/checkout@v4 | ||
- uses: actions/setup-python@v5 | ||
with: | ||
python-version: "3.12" | ||
cache: "pip" | ||
- name: Install dependencies | ||
run: | | ||
python -m pip install --upgrade pip | ||
pip install build twine | ||
- name: Build sdist | ||
run: python -m build --sdist | ||
- name: Check the package | ||
run: python -m twine check dist/* | ||
- uses: actions/upload-artifact@v4 | ||
with: | ||
name: cibw-sdist | ||
path: dist/*.tar.gz | ||
|
||
test_sdist: | ||
needs: [build_sdist] | ||
name: Test source distribution | ||
runs-on: ubuntu-latest | ||
steps: | ||
- uses: actions/checkout@v4 | ||
- uses: actions/setup-python@v5 | ||
with: | ||
python-version: "3.12" | ||
cache: "pip" | ||
- uses: actions/download-artifact@v4 | ||
with: | ||
name: cibw-sdist | ||
path: dist | ||
- name: Install from sdist | ||
run: pip install "$(ls dist/fabio-*.tar.gz)" | ||
- name: Run tests | ||
run: python -c "import fabio.test, sys; sys.exit(fabio.test.run_tests())" | ||
|
||
build_doc: | ||
name: Build documentation | ||
runs-on: ubuntu-latest | ||
steps: | ||
- uses: actions/checkout@v4 | ||
- uses: actions/setup-python@v5 | ||
with: | ||
python-version: "3.12" | ||
cache: "pip" | ||
- name: Install pandoc&graphviz | ||
run: sudo apt-get install pandoc graphviz | ||
- name: Install fabio | ||
run: pip install . | ||
- name: Install documentation dependencies | ||
run: pip install -r requirements.txt | ||
- name: Build doc | ||
env: | ||
READTHEDOCS: "True" # To skip checking that fabio is installed locally | ||
Comment on lines
+67
to
+68
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. This could be remove if the doc's |
||
run: | | ||
export FABIO_VERSION="$(python -c 'import fabio; print(fabio.strictversion)')" | ||
sphinx-build doc/source/ "fabio-${FABIO_VERSION}_documentation/" | ||
zip -r "fabio-${FABIO_VERSION}_documentation.zip" "fabio-${FABIO_VERSION}_documentation/" | ||
- uses: actions/upload-artifact@v4 | ||
with: | ||
name: documentation | ||
path: fabio-*_documentation.zip | ||
|
||
build_wheels: | ||
name: Build wheels on ${{ matrix.os }}-${{ matrix.cibw_archs }} | ||
runs-on: ${{ matrix.os }} | ||
strategy: | ||
# Ensure that a wheel builder finishes even if another fails | ||
fail-fast: false | ||
matrix: | ||
include: | ||
- os: ubuntu-20.04 | ||
cibw_archs: "auto64" | ||
- os: ubuntu-20.04 | ||
cibw_archs: "aarch64" | ||
- os: ubuntu-20.04 | ||
cibw_archs: "ppc64le" | ||
- os: windows-2019 | ||
cibw_archs: "auto64" | ||
- os: macos-11 | ||
cibw_archs: "x86_64" | ||
macos_target: "10.9" | ||
- os: macos-14 | ||
cibw_archs: "arm64" | ||
macos_target: "11.0" | ||
Comment on lines
+97
to
+99
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Use macos M1 machines. |
||
|
||
steps: | ||
- uses: actions/checkout@v4 | ||
- uses: docker/setup-qemu-action@v3 | ||
if: runner.os == 'Linux' | ||
with: | ||
platforms: all | ||
- uses: pypa/cibuildwheel@v2.16.5 | ||
env: | ||
# Use silx wheelhouse: needed for ppc64le | ||
CIBW_ENVIRONMENT_LINUX: "PIP_FIND_LINKS=https://www.silx.org/pub/wheelhouse/ PIP_TRUSTED_HOST=www.silx.org" | ||
|
||
CIBW_BUILD: cp37-* cp38-* cp39-* cp310-* cp311-* cp312-* | ||
# Do not build for pypy and muslinux | ||
CIBW_SKIP: pp* *-musllinux_* | ||
CIBW_ARCHS: ${{ matrix.cibw_archs }} | ||
|
||
MACOSX_DEPLOYMENT_TARGET: "${{ matrix.macos_target }}" | ||
|
||
# Install test dependencies | ||
CIBW_TEST_COMMAND: python -c "import fabio.test, sys; sys.exit(fabio.test.run_tests())" | ||
# Skip tests for emulated architectures | ||
CIBW_TEST_SKIP: "*-*linux_{aarch64,ppc64le,s390x}" | ||
|
||
- uses: actions/upload-artifact@v4 | ||
with: | ||
name: cibw-wheels-${{ matrix.os }}-${{ strategy.job-index }} | ||
path: ./wheelhouse/*.whl | ||
|
||
pypi-publish: | ||
needs: [build_doc, build_sdist, build_wheels, test_sdist] | ||
name: Upload release to PyPI | ||
runs-on: ubuntu-latest | ||
environment: | ||
name: pypi | ||
Comment on lines
+134
to
+135
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. This environment name needs to be declared in pypi.org |
||
permissions: | ||
id-token: write | ||
if: github.event_name == 'release' && github.event.action == 'published' | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Run only when triggered by a published release |
||
# or, alternatively, upload to PyPI on every tag starting with 'v' (remove on: release above to use this) | ||
# if: github.event_name == 'push' && startsWith(github.ref, 'refs/tags/v') | ||
steps: | ||
- uses: actions/download-artifact@v4 | ||
with: | ||
pattern: cibw-* | ||
path: dist | ||
merge-multiple: true | ||
- uses: pypa/gh-action-pypi-publish@release/v1 |
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -13,10 +13,7 @@ | |
|
||
import sys | ||
import os | ||
import glob | ||
import subprocess | ||
|
||
on_rtd = os.environ.get('READTHEDOCS') == 'True' | ||
# If extensions (or modules to document with autodoc) are in another directory, | ||
# add these directories to sys.path here. If the directory is relative to the | ||
# documentation root, use os.path.abspath to make it absolute, like shown here. | ||
|
@@ -26,7 +23,7 @@ | |
import fabio | ||
project_dir = os.path.abspath(os.path.join(__file__, "..", "..", "..")) | ||
build_dir = os.path.abspath(fabio.__file__) | ||
if on_rtd: | ||
if os.environ.get('READTHEDOCS') == 'True': | ||
print("On Read The Docs") | ||
print("build_dir", build_dir) | ||
print("project_dir", project_dir) | ||
Comment on lines
23
to
29
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Is the whole try/except block needed. |
||
|
@@ -55,19 +52,11 @@ | |
|
||
extensions = ['sphinx.ext.autodoc', | ||
'sphinx.ext.mathjax', | ||
'sphinx_rtd_theme', | ||
'sphinxcontrib.programoutput', | ||
'nbsphinx' | ||
] | ||
|
||
# Set the theme to sphinx_rtd_theme when *not* building on Read The Docs. | ||
# The theme is set to default otherwise as Read The Docs uses its own theme anyway. | ||
if not on_rtd: | ||
try: | ||
import sphinx_rtd_theme | ||
extensions.append('sphinx_rtd_theme') | ||
except: | ||
print("sphinx_rtd_theme is not available") | ||
Comment on lines
-64
to
-69
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. readthedocs no longer set the theme automatically |
||
|
||
# Add any paths that contain templates here, relative to this directory. | ||
templates_path = ['_templates'] | ||
|
||
|
@@ -81,7 +70,7 @@ | |
master_doc = 'index' | ||
|
||
# General information about the project. | ||
from fabio.version import strictversion, version, __date__ as fabio_date | ||
from fabio.version import strictversion, __date__ as fabio_date | ||
|
||
year = fabio_date.split("/")[-1] | ||
copyright = u'2006-%s, Henning Sorensen, Erik Knudsen, Jon Wright, Gael Goret, Brian Pauw and Jerome Kieffer' % (year) | ||
|
@@ -136,7 +125,7 @@ | |
|
||
# The theme to use for HTML and HTML Help pages. See the documentation for | ||
# a list of builtin themes. | ||
html_theme = 'default' if on_rtd else 'sphinx_rtd_theme' | ||
html_theme = 'sphinx_rtd_theme' | ||
|
||
# Theme options are theme-specific and customize the look and feel of a theme | ||
# further. For a list of options available for each theme, see the | ||
|
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -11,3 +11,4 @@ hdf5plugin | |
sphinx | ||
sphinxcontrib-programoutput | ||
sphinx-rtd-theme | ||
nbsphinx |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
To enable running manually from the Action page