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/*