Skip to content

Continuous Integration #241

Continuous Integration

Continuous Integration #241

Workflow file for this run

name: Continuous Integration
on:
schedule:
- cron: "0 8 * * 1-5"
push:
branches: [main]
pull_request:
branches: [main]
workflow_dispatch:
concurrency:
group: actions-id-${{ github.workflow }}-${{ github.event.pull_request.number || github.ref }}
cancel-in-progress: true
jobs:
check-formatting:
name: Check Formatting Errors
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- name: Install Dependencies
run: |
python -m pip install pycodestyle autopep8
python -m pip install .
- name: Run pycodestyle
run: |
pycodestyle --statistics --count --max-line-length=150 --show-source .
build-and-test:
needs: check-formatting
strategy:
fail-fast: false
matrix:
python-version: ["3.8", "3.9", "3.10", "3.11", "3.12"]
os: [ubuntu-latest, windows-latest, macos-latest]
exclude:
- python-version: "3.11"
runs-on: ${{ matrix.os }}
defaults:
run:
shell: bash -el {0}
name: ${{ matrix.os }} Python ${{ matrix.python-version }} Subtest
steps:
- uses: actions/checkout@v3
- uses: mamba-org/setup-micromamba@main
with:
environment-name: temp
condarc: |
channels:
- defaults
- conda-forge
channel_priority: flexible
create-args: |
python=${{ matrix.python-version }}
- name: Install Dependencies
run: |
python -m pip install .
python -m pip install coverage pytest
- name: Decompress Test Data
run: |
cd test
python data_loader.py decompress
- name: Run Tests
run: |
coverage run --source=. -m pytest -v
- name: Show Coverage
run: |
coverage report -m
ci-report-status:
name: report CI status
needs: build-and-test
runs-on: ubuntu-latest
steps:
- run: |
result="${{ needs.build-and-test.result }}"
if [[ $result == "success" ]] ; then
exit 0
else
exit 1
fi
check-for-new-release:
runs-on: ubuntu-latest
needs: build-and-test
steps:
- uses: actions/checkout@v3
- name: Check PyPI version
uses: maybe-hello-world/pyproject-check-version@v3
id: versioncheck
with:
pyproject-path: "./pyproject.toml"
- name: Report Results
run: |
echo "New Release found? ${{ steps.versioncheck.outputs.local_version_is_higher }}"
echo "Local version: ${{ steps.versioncheck.outputs.local_version }}"
echo "Public version: ${{ steps.versioncheck.outputs.public_version }}"
outputs:
do_publish: ${{ steps.versioncheck.outputs.local_version_is_higher }}
pypi-package:
name: Build and publish Python 🐍 distributions 📦 to PyPI
runs-on: ubuntu-latest
needs: [check-for-new-release, ci-report-status]
if: ${{ needs.check-for-new-release.outputs.do_publish == 'true' && github.ref == 'refs/heads/main' && github.repository == 'QuantumPioneer/FastLogfileParser'}}
steps:
- uses: actions/checkout@master
- name: Set up Python 3.10
uses: actions/setup-python@v3
with:
python-version: "3.10"
- name: Install pypa/build
run: >-
python -m
pip install
build
--user
- name: Build a binary wheel and a source tarball
run: >-
python -m
build
--sdist
--wheel
--outdir dist/
.
- name: Publish distribution 📦 to PyPI
uses: pypa/gh-action-pypi-publish@release/v1
with:
password: ${{ secrets.PYPI_API_TOKEN }}
skip-existing: true
verbose: true