Release #255
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
name: Release | |
on: | |
schedule: | |
# run every day at 5am UTC | |
- cron: '0 5 * * *' | |
workflow_dispatch: | |
release: | |
types: [released] | |
pull_request: | |
# We also want this workflow triggered if the 'Build wheels' | |
# label is added or present when PR is updated | |
types: | |
- synchronize | |
- labeled | |
permissions: | |
contents: read | |
concurrency: | |
group: ${{ github.workflow }}-${{ github.ref }} | |
cancel-in-progress: true | |
jobs: | |
build_wheels: | |
permissions: | |
contents: none | |
name: Wheels on ${{ matrix.os }} | |
runs-on: ${{ matrix.os }} | |
if: (github.repository == 'spacetelescope/synphot_refactor' && ( github.event_name == 'release' || github.event_name == 'schedule' || github.event_name == 'workflow_dispatch' || contains(github.event.pull_request.labels.*.name, 'Build wheels'))) | |
strategy: | |
matrix: | |
os: [ubuntu-latest, windows-latest, macos-latest] | |
steps: | |
- uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 | |
with: | |
fetch-depth: 0 | |
- uses: actions/setup-python@0b93645e9fea7318ecaed2b359559ac225c90a2b # v5.3.0 | |
with: | |
python-version: '3.x' | |
- name: Install dependencies | |
run: | | |
python -m pip install pip "twine>=3.3" -U | |
- name: Build wheels | |
uses: pypa/cibuildwheel@7940a4c0e76eb2030e473a5f864f291f63ee879b # v2.21.3 | |
env: | |
CIBW_BUILD: 'cp310-* cp311-* cp312-* cp313-*' | |
CIBW_SKIP: '*-musllinux_*' | |
CIBW_ARCHS_LINUX: 'x86_64' | |
CIBW_ARCHS_WINDOWS: 'AMD64' | |
CIBW_ARCHS_MACOS: 'arm64' | |
CIBW_TEST_SKIP: '*-macosx_arm64' | |
CIBW_TEST_REQUIRES: 'pytest pytest-astropy' | |
CIBW_TEST_COMMAND: 'python -c "import synphot; synphot.test()"' | |
- name: Check wheels | |
run: python -m twine check --strict wheelhouse/* | |
# Upload artifacts because gh-action-pypi-publish Docker is only on Linux | |
- name: Upload wheels | |
if: (github.event_name == 'release' || github.event_name == 'schedule' || github.event_name == 'workflow_dispatch') | |
uses: actions/upload-artifact@b4b15b8c7c6ac21ea08fcf65892d2ee8f75cf882 # v4.4.3 | |
with: | |
name: additional-pylons-${{ matrix.os }} | |
path: ./wheelhouse/*.whl | |
build_dist: | |
permissions: | |
contents: none | |
name: Source dist | |
runs-on: ubuntu-latest | |
if: (github.repository == 'spacetelescope/synphot_refactor' && ( github.event_name == 'release' || github.event_name == 'workflow_dispatch' || contains(github.event.pull_request.labels.*.name, 'Build wheels'))) | |
steps: | |
- uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 | |
with: | |
fetch-depth: 0 | |
- uses: actions/setup-python@0b93645e9fea7318ecaed2b359559ac225c90a2b # v5.3.0 | |
with: | |
python-version: '3.x' | |
- name: Install dependencies | |
run: python -m pip install pip build "twine>=3.3" -U | |
- name: Build package | |
run: python -m build --sdist . | |
- name: Check dist | |
run: python -m twine check --strict dist/* | |
- name: Test package | |
run: | | |
cd .. | |
python -m venv testenv | |
testenv/bin/pip install -U pip | |
testenv/bin/pip install pytest pytest-astropy | |
testenv/bin/pip install synphot_refactor/dist/*.tar.gz | |
testenv/bin/python -c "import synphot; synphot.test()" | |
- name: Upload dist | |
if: github.event_name == 'release' | |
uses: actions/upload-artifact@b4b15b8c7c6ac21ea08fcf65892d2ee8f75cf882 # v4.4.3 | |
with: | |
name: additional-pylons-dist | |
path: ./dist/*.tar.gz | |
publish: | |
name: Publish to PyPI | |
needs: [build_wheels, build_dist] | |
if: github.repository == 'spacetelescope/synphot_refactor' && github.event_name == 'release' | |
runs-on: ubuntu-latest | |
environment: | |
name: release | |
url: https://pypi.org/p/synphot | |
permissions: | |
id-token: write # IMPORTANT: mandatory for trusted publishing | |
steps: | |
- name: Download wheels | |
uses: actions/download-artifact@fa0a91b85d4f404e444e00e005971372dc801d16 # v4.1.8 | |
with: | |
path: dist | |
pattern: additional-pylons-* | |
merge-multiple: true | |
- name: Pylons inspection | |
run: ls dist/* | |
- name: Publish package to PyPI | |
uses: pypa/gh-action-pypi-publish@fb13cb306901256ace3dab689990e13a5550ffaa # v1.11.0 | |
anaconda: | |
name: Publish nightly wheel to Anaconda | |
needs: [build_wheels] | |
if: github.repository == 'spacetelescope/synphot_refactor' && (github.event_name == 'schedule' || github.event_name == 'workflow_dispatch') | |
runs-on: ubuntu-latest | |
steps: | |
- name: Download wheels | |
uses: actions/download-artifact@fa0a91b85d4f404e444e00e005971372dc801d16 # v4.1.8 | |
with: | |
path: dist | |
pattern: additional-pylons-* | |
merge-multiple: true | |
- name: Pylons inspection | |
run: ls dist/* | |
- uses: OpenAstronomy/publish-wheels-anaconda@612ea808f79152bd52a019316f684a12bbe8ba33 # main | |
with: | |
anaconda_user: STScI | |
anaconda_package: synphot | |
anaconda_token: ${{ secrets.anaconda_token }} | |
keep_n_latest: 5 |