101 lines
2.9 KiB
YAML
101 lines
2.9 KiB
YAML
|
|
name: build
|
|
|
|
on: [push]
|
|
|
|
jobs:
|
|
build:
|
|
strategy:
|
|
matrix:
|
|
os: [ubuntu-latest, windows-latest, macos-latest]
|
|
|
|
runs-on: ${{ matrix.os }}
|
|
|
|
steps:
|
|
- uses: actions/checkout@v4
|
|
- uses: actions/setup-python@v5
|
|
with:
|
|
python-version: '3.12'
|
|
|
|
- name: prep
|
|
shell: bash
|
|
run: |
|
|
python -m pip install --upgrade pip
|
|
python -m pip install pipenv pyinstaller==6.3.0
|
|
pipenv install
|
|
rm -rf build dist
|
|
|
|
- name: build
|
|
shell: bash
|
|
run: |
|
|
echo "RUNNER_OS: $RUNNER_OS"
|
|
# get path to venv site-packages (for blake3)
|
|
pipenv run python -c "import site; print(site.getsitepackages())"
|
|
SITEPKG=$(pipenv run python -c "import site; print(site.getsitepackages()[-1])")
|
|
pipenv run pyinstaller run.py --hidden-import chkbit --hidden-import chkbit_cli --onefile --name chkbit --console --paths $SITEPKG
|
|
cat build/chkbit/warn-chkbit.txt
|
|
cd dist; ls -l
|
|
if [ "$RUNNER_OS" == "Linux" ]; then
|
|
a=$(grep -oP '(?<=version = ")[^"]+' ../pyproject.toml)
|
|
b=$(grep -oP '(?<=__version__ = ")[^"]+' ../chkbit_cli/__init__.py)
|
|
if [[ $a != $b ]]; then echo "version error $a $b"; exit 1; fi
|
|
c=$(./chkbit --version)
|
|
echo $c
|
|
if [[ $a != $c ]]; then echo "version error $a $c"; exit 1; fi
|
|
tar -czf chkbit-linux_${RUNNER_ARCH}.tar.gz chkbit
|
|
elif [ "$RUNNER_OS" == "macOS" ]; then
|
|
./chkbit --version
|
|
tar -czf chkbit-macos_${RUNNER_ARCH}.tar.gz chkbit
|
|
elif [ "$RUNNER_OS" == "Windows" ]; then
|
|
./chkbit.exe --version
|
|
7z a -tzip chkbit-windows_${RUNNER_ARCH}.zip chkbit.exe
|
|
else
|
|
echo 'unknown runner'
|
|
exit 1
|
|
fi
|
|
|
|
- name: artifact
|
|
uses: actions/upload-artifact@v4
|
|
if: runner.os == 'Linux'
|
|
with:
|
|
name: binary-${{ matrix.os }}
|
|
path: dist/chkbit*.tar.gz
|
|
|
|
- name: artifact
|
|
uses: actions/upload-artifact@v4
|
|
if: runner.os == 'macOS'
|
|
with:
|
|
name: binary-${{ matrix.os }}
|
|
path: dist/chkbit*.tar.gz
|
|
|
|
- name: artifact
|
|
uses: actions/upload-artifact@v4
|
|
if: runner.os == 'Windows'
|
|
with:
|
|
name: binary-${{ matrix.os }}
|
|
path: dist/chkbit*.zip
|
|
|
|
|
|
publish:
|
|
runs-on: ubuntu-latest
|
|
needs: build
|
|
if: ${{ startsWith(github.ref, 'refs/tags/v') }}
|
|
|
|
steps:
|
|
- name: get-artifacts
|
|
uses: actions/download-artifact@v4
|
|
with:
|
|
path: dist
|
|
merge-multiple: true
|
|
- name: list
|
|
shell: bash
|
|
run: |
|
|
find
|
|
ls -l dist
|
|
- name: publish-release
|
|
uses: softprops/action-gh-release@v1
|
|
with:
|
|
draft: true
|
|
files: dist/*
|
|
|