Fixed wheel generation #358
Workflow file for this run
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: CI-Test | |
on: | |
push: | |
pull_request: | |
workflow_dispatch: | |
release: | |
types: [published, created] | |
jobs: | |
lint: | |
# pull requests are a duplicate of a branch push if within the same repo. | |
if: github.event_name != 'pull_request' || github.event.pull_request.head.repo.full_name != github.repository | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/checkout@v4 | |
- uses: actions/setup-python@v4 | |
- uses: pre-commit/[email protected] | |
test: | |
# pull requests are a duplicate of a branch push if within the same repo. | |
if: github.event_name != 'pull_request' || github.event.pull_request.head.repo.full_name != github.repository | |
name: Tests | |
runs-on: ${{ matrix.host-os }} | |
needs: lint | |
strategy: | |
matrix: | |
# host-os: ["ubuntu-latest", "macos-13", "macos-14"] | |
host-os: ["ubuntu-latest"] | |
python-version: ["3.8", "3.9", "3.10", "3.11", "3.12"] | |
fail-fast: false | |
defaults: | |
run: | |
shell: bash -l {0} | |
steps: | |
- name: Checkout the code | |
uses: actions/checkout@v4 | |
- name: Set env vars | |
run: | | |
export REPOSITORY_NAME=${GITHUB_REPOSITORY#*/} # just the repo, as opposed to org/repo | |
echo "REPOSITORY_NAME=${REPOSITORY_NAME}" >> $GITHUB_ENV | |
python_version="${{ matrix.python-version }}" | |
export PYTHON_VERSION_NODOT="${python_version//\./}" | |
echo "PYTHON_VERSION_NODOT=${PYTHON_VERSION_NODOT}" >> $GITHUB_ENV | |
- name: Set MacOS Deployment Target | |
if: runner.os == 'macOS' | |
run: | | |
export MACOSX_DEPLOYMENT_TARGET="10.15" | |
echo "MACOSX_DEPLOYMENT_TARGET=${MACOSX_DEPLOYMENT_TARGET}" >> $GITHUB_ENV | |
- name: Install micromamba with build dependencies | |
uses: mamba-org/setup-micromamba@v1 | |
# if: runner.os == 'macOS' | |
with: | |
init-shell: bash | |
environment-name: build-env | |
create-args: >- | |
python=${{ matrix.python-version }} | |
arpack=*=mpi_openmpi* | |
gfortran | |
openmpi=4 | |
# - name: Set up Python ${{ matrix.python-version }} | |
# # if: matrix.host-os != 'macos-latest' | |
# if: runner.os != 'macOS' | |
# uses: actions/setup-python@v5 | |
# with: | |
# python-version: ${{ matrix.python-version }} | |
- name: Install MacOS dependencies | |
if: runner.os == 'macOS' | |
run: | | |
set -vxeuo pipefail | |
brew install tree | |
# python -m pip install delocate | |
- name: Install dependencies | |
run: | | |
set -vxeuo pipefail | |
bash ./scripts/install-deps.sh | |
tree . | |
ls -Al . | |
ls -Al ./dist/ | |
# - name: Delocate wheels for MacOS | |
# if: runner.os == 'macOS' | |
# run: | | |
# set -vxeuo pipefail | |
# delocate-wheelpython -v ./dist/${{ env.REPOSITORY_NAME }}-*-cp${PYTHON_VERSION_NODOT}*.whl | |
- uses: actions/upload-artifact@v3 | |
with: | |
name: ${{ env.REPOSITORY_NAME }}-wheels | |
path: dist/* | |
- name: Test with pytest | |
run: | | |
set -vxeuo pipefail | |
bash ./scripts/run-tests.sh | |
- name: Build Docs | |
run: | | |
set -vxeuo pipefail | |
bash ./scripts/build-docs.sh | |
- uses: actions/upload-artifact@v4 | |
with: | |
name: ${{ env.REPOSITORY_NAME }}-${{ matrix.python-version }}-${{ matrix.host-os }}-docs | |
path: docs/build/html/ | |
publish-docs: | |
if: github.repository_owner == 'NSLS-II' && github.ref == 'refs/heads/master' | |
runs-on: ${{ matrix.host-os }} | |
needs: test | |
strategy: | |
matrix: | |
python-version: ["3.10"] | |
host-os: ["ubuntu-latest"] | |
fail-fast: false | |
steps: | |
- name: Download docs from GitHub artifacts | |
uses: actions/download-artifact@v3 | |
with: | |
name: ${{ env.REPOSITORY_NAME }}-${{ matrix.python-version }}-${{ matrix.host-os }}-docs | |
path: docs/build/html/ | |
- name: Deploy documentation to nsls-ii.github.io | |
# We pin to the SHA, not the tag, for security reasons. | |
# https://docs.github.com/en/free-pro-team@latest/actions/learn-github-actions/security-hardening-for-github-actions#using-third-party-actions | |
uses: peaceiris/actions-gh-pages@bbdfb200618d235585ad98e965f4aafc39b4c501 # v3.7.3 | |
with: | |
deploy_key: ${{ secrets.ACTIONS_DOCUMENTATION_DEPLOY_KEY }} | |
publish_branch: master | |
publish_dir: ./docs/build/html | |
external_repository: NSLS-II/NSLS-II.github.io | |
destination_dir: ${{ env.REPOSITORY_NAME }} # just the repo name, without the "NSLS-II/" | |
keep_files: true # Keep old files. | |
force_orphan: false # Keep git history. | |
publish-to-pypi: | |
# Hints from: | |
# - https://github.com/pypa/gh-action-pypi-publish/discussions/28 | |
# - https://github.com/Lightning-AI/lightning/blob/master/.github/workflows/release-pypi.yml | |
if: github.event_name == 'release' | |
name: Publish to PyPI | |
needs: test | |
runs-on: ubuntu-latest | |
permissions: | |
id-token: write | |
steps: | |
- name: Set env vars | |
run: | | |
export REPOSITORY_NAME=${GITHUB_REPOSITORY#*/} # just the repo, as opposed to org/repo | |
echo "REPOSITORY_NAME=${REPOSITORY_NAME}" >> $GITHUB_ENV | |
- uses: actions/checkout@v3 | |
- name: Download wheels from GitHub artifacts | |
uses: actions/download-artifact@v3 | |
with: | |
name: ${{ env.REPOSITORY_NAME }}-wheels | |
path: dist/ | |
- name: Publish wheels to PyPI | |
uses: pypa/gh-action-pypi-publish@release/v1 | |
with: | |
packages-dir: ./dist/ |