Skip to content

CI: clobber for special latest release #177

CI: clobber for special latest release

CI: clobber for special latest release #177

Workflow file for this run

# This workflow will install Python dependencies, run tests and lint with a variety of Python versions
# For more information see: https://help.github.com/actions/language-and-framework-guides/using-python-with-github-actions
name: Python package
on:
workflow_dispatch: {}
push: {}
pull_request:
branches: [ master ]
jobs:
build:
permissions:
contents: write
runs-on: ${{ matrix.os }}
strategy:
matrix:
# os: [ubuntu-latest, windows-latest, macOS-latest]
os: [windows-latest]
platform: [x86]
python-version: ['3.8']
python-platform: [x86]
# exclude:
# - platform: x86
# python-platform: x64
# - os: ubuntu-latest
# python-platform: x86
# - os: ubuntu-latest
# platform: x86
# - os: macOS-latest
# python-platform: x86
# - os: macOS-latest
# platform: x86
# - platform: x64
# python-platform: x86
steps:
- uses: actions/checkout@v4
- name: Set up Python ${{ matrix.python-version }}
uses: actions/setup-python@v5
with:
python-version: ${{ matrix.python-version }}
architecture: ${{ matrix.python-platform }}
- name: Enable Developer Command Prompt
uses: ilammy/[email protected]
with:
arch: ${{ matrix.python-platform }}
if: matrix.os == 'windows-latest'
- name: Install dependencies
shell: bash
run: |
python -m pip install --upgrade pip
python -m pip install --upgrade wheel setuptools Cython
pip install flake8 pytest
pip install -r requirements.txt
- name: Lint with flake8
shell: bash
run: |
# stop the build if there are Python syntax errors or undefined names
flake8 . --count --select=E9,F63,F7,F82 --show-source --statistics --exclude examples
# exit-zero treats all errors as warnings. The GitHub editor is 127 chars wide
flake8 . --count --exit-zero --max-complexity=10 --max-line-length=127 --statistics --exclude examples
- name: Run tests
shell: bash
run: |
python -m pip install pytest
python -m pytest
- name: Build package
shell: bash
run: |
python setup.py sdist bdist_wheel
- name: Build wheel dependencies
shell: bash
run: |
python -m pip wheel . -w dist
- name: Archive packages
uses: actions/upload-artifact@v4
with:
name: sourcehold-py${{ matrix.python-version }}-${{ matrix.python-platform }}-${{ matrix.os }}-${{ matrix.platform }}
path: |
dist/sourcehold*
- name: Ensure special latest release exists
shell: bash
env:
GH_TOKEN: ${{ github.token }}
run: |
# Set continue on error to true
set +e
if [[ "$(gh --repo sourcehold/sourcehold-maps release view latest 2>&1)" == "release not found" ]]; then
set -e
gh --repo sourcehold/sourcehold-maps release create latest --latest
fi
- name: Upload pyinstaller to special latest release
shell: bash
env:
GH_TOKEN: ${{ github.token }}
run: |
gh --repo sourcehold/sourcehold-maps release upload latest dist/sourcehold*.whl --clobber
- name: Ensure release exists
if: github.ref_type == 'tag'
shell: bash
env:
GH_TOKEN: ${{ github.token }}
run: |
# Set continue on error to true
set +e
if [[ "$(gh --repo sourcehold/sourcehold-maps release view ${{ github.ref_name }} 2>&1)" == "release not found" ]]; then
set -e
gh --repo sourcehold/sourcehold-maps release create ${{ github.ref_name }} --latest
fi
- name: Upload wheel to release
if: github.ref_type == 'tag'
shell: bash
env:
GH_TOKEN: ${{ github.token }}
run: |
gh --repo sourcehold/sourcehold-maps release upload ${{ github.ref_name }} dist/sourcehold*.whl
test_package:
needs: build
runs-on: ${{ matrix.os }}
strategy:
matrix:
# os: [ubuntu-latest, windows-latest, macOS-latest]
os: [windows-latest]
platform: [x86, x64]
python-version: ['3.8', '3.9', '3.10', '3.11', '3.12', '3.13']
python-platform: [x86, x64]
steps:
- name: Download package
uses: actions/[email protected]
with:
name: sourcehold-py${{ matrix.python-version }}-${{ matrix.python-platform }}-${{ matrix.os }}-${{ matrix.platform }}
- name: Set up Python ${{ matrix.python-version }}
uses: actions/setup-python@v5
with:
python-version: ${{ matrix.python-version }}
architecture: ${{ matrix.python-platform }}
- name: Install wheel
shell: bash
run: |
python -m pip install --upgrade pip
python -m pip install --upgrade wheel setuptools
- name: Pip install module
run: |
python -m pip install $(ls *.whl)
shell: bash
- name: Pip test module
run: |
python -c "import sourcehold"
shell: bash
- name: Pip test cli
run: |
echo "hello world!" | python -m sourcehold compression --compress --input - --output - | python -m sourcehold compression --decompress --input - --output -
shell: bash