Skip to content

Add installation from Github for upstream packages #1093

Add installation from Github for upstream packages

Add installation from Github for upstream packages #1093

Workflow file for this run

name: Code CI
on:
push:
branches:
- master
- main
tags:
- "*"
pull_request:
schedule:
# Run every Monday at 8am
- cron: '0 8 * * MON'
jobs:
# lint:
# runs-on: "ubuntu-latest"
# steps:
# - name: Checkout Source
# uses: actions/checkout@v4
# - name: Install Python
# uses: actions/setup-python@v4
# with:
# python-version: "3.7"
# - name: Install Python Dependencies
# run: pip install flake8
# - name: Lint
# run: flake8
# sdist:
# runs-on: "ubuntu-latest"
# steps:
# - name: Checkout Source
# uses: actions/checkout@v4
# with:
# # require history to get back to last tag for version number of branches
# fetch-depth: 0
# submodules: true
# - name: Build Sdist
# run: pipx run build --sdist .
# - name: Upload Sdist
# uses: actions/upload-artifact@v4
# with:
# name: dist
# path: dist/*
# build:
# strategy:
# fail-fast: false
# matrix:
# os: [ubuntu-latest, windows-latest, macos-13]
# python: [cp37, cp38, cp39, cp310, cp311, cp312]
# include:
# # Put coverage and results files in the project directory for mac
# - os: macos-13
# cov_file: "{project}/dist/coverage.xml"
# results_file: "{project}/dist/pytest-results.xml"
# # And for windows
# - os: windows-latest
# cov_file: "{project}/dist/coverage.xml"
# results_file: "{project}/dist/pytest-results.xml"
# # But put coverage and results files in the output dir mounted in docker for linux
# - os: ubuntu-latest
# cov_file: /output/coverage.xml
# results_file: /output/pytest-results.xml
# name: build/${{ matrix.os }}/${{ matrix.python }}
# runs-on: ${{ matrix.os }}
# steps:
# - name: Checkout Source
# uses: actions/checkout@v4
# with:
# # require history to get back to last tag for version number of branches
# fetch-depth: 0
# submodules: true
# - name: Install Python
# uses: actions/setup-python@v4
# with:
# python-version: "3.12"
# - name: Install Python Dependencies
# run: pip install build cibuildwheel>=2.16.2
# - name: Build Wheel
# run: cibuildwheel --output-dir dist
# env:
# CIBW_BUILD: ${{ matrix.python }}*64
# CIBW_TEST_EXTRAS: dev# Added a sleep command afterwards to let all cleanup finish; sometimes
# cibuildwheel reports it cannot clean up the temp dir used for testing,
# and fails the build. Sleeping seems to give pytest enough time to
# fully clean up.
#CIBW_TEST_COMMAND: pytest {project}/tests --cov-report xml:${{ matrix.cov_file }} --junit-xml=${{ matrix.results_file }} && sleep 2
# # Run with faulthandler and -s in the hope we get a stack trace on seg fault on windows...
# CIBW_TEST_COMMAND_WINDOWS: python -X faulthandler -m pytest -s {project}/tests --cov-report xml:${{ matrix.cov_file }} --junit-xml=${{ matrix.results_file }}
# # Disable auditwheel as it isn't compatible with setuptools_dso approach
# # https://github.com/mdavidsaver/setuptools_dso/issues/17
# CIBW_REPAIR_WHEEL_COMMAND: ""
# CIBW_MANYLINUX_X86_64_IMAGE: manylinux2014
# CIBW_ENVIRONMENT_LINUX: SETUPTOOLS_DSO_PLAT_NAME=manylinux2014_x86_64
# CIBW_SKIP: "*-musllinux*" # epicscorelibs doesn't build on musllinux platforms
# - name: Upload Wheel
# uses: actions/upload-artifact@v4
# with:
# name: dist-${{ matrix.os }}-${{ matrix.python }}
# path: dist/softioc*
# - name: Upload coverage to Codecov
# uses: codecov/codecov-action@v4
# with:
# name: ${{ matrix.os }}/${{ matrix.python }}
# directory: dist
# test-sdist:
# needs: [sdist]
# strategy:
# fail-fast: false
# matrix:
# os: [ubuntu-latest, windows-latest, macos-13]
# python: [cp37, cp38, cp39, cp310, cp311, cp312]
# runs-on: ${{ matrix.os }}
# steps:
# - uses: actions/download-artifact@v4
# with:
# # TODO: Will this actually download ALL of the uploaded dists for all platforms?
# name: dist
# path: dist
# - name: Install sdist in a venv and check cli works
# run: pipx run --spec dist/*.tar.gz pythonSoftIOC --version
# shell: bash
# release:
# needs: [build, sdist]
# runs-on: ubuntu-latest
# # upload to PyPI and make a release on every tag
# if: github.event_name == 'push' && startsWith(github.event.ref, 'refs/tags')
# steps:
# - uses: actions/download-artifact@v4
# with:
# name: dist
# path: dist
# - name: Github Release
# # We pin to the SHA, not the tag, for security reasons.
# # https://docs.github.com/en/actions/learn-github-actions/security-hardening-for-github-actions#using-third-party-actions
# uses: softprops/action-gh-release@2d72d869af3bf23602f9593a1e3fd739b80ac1eb # v0.1.12
# with:
# files: dist/*
# body: See [Changelog](CHANGELOG.rst) for more details
# env:
# GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
# - name: Publish to PyPI
# env:
# TWINE_USERNAME: __token__
# TWINE_PASSWORD: ${{ secrets.pypi_token }}
# run: pipx run twine upload dist/*
# Check that the master branches of various upstream dependencies are
# still compatible when used together
master_branch_test:
runs-on: "ubuntu-latest"
# TODO: Add if == scheduled run
steps:
- name: Checkout Source
uses: actions/checkout@v4
with:
# require history to get back to last tag for version number of branches
fetch-depth: 0
submodules: true
- name: Install Python
uses: actions/setup-python@v4
with:
python-version: "3.12"
- name: Install master versions
# Note the install order here: By installing p4p first, then pvxs and epicscorelibs using the --no-warn-conflicts
# flag, we can bypass the dependency mismatch which would otherwise be present. We know that the master branches
# *should* always work together, so it's ok to ignore the warnings.
run: |
pip install git+https://github.com/epics-base/p4p.git git+https://github.com/epics-base/pvxs.git git+https://github.com/epics-base/epicscorelibs.git
pip install git+https://github.com/DiamondLightSource/aioca git+https://github.com/DiamondLightSource/cothread
pip install -e .[dev]
pip freeze
- name: Run tests
run: |
python -m pytest