Spaces:
Runtime error
Runtime error
# This workflow will install Python dependencies, run tests and lint with a single version of Python | |
# For more information see: https://docs.github.com/en/actions/automating-builds-and-tests/building-and-testing-python | |
name: Pyinstaller Packaging | |
on: | |
push: | |
branches: [ "master" ] | |
pull_request: | |
branches: [ "master" ] | |
permissions: | |
contents: write | |
jobs: | |
setup: | |
runs-on: ubuntu-latest | |
outputs: | |
PACKAGE_PREFIX: ${{ steps.get-package_prefix.outputs.PACKAGE_PREFIX }} | |
TAG_NAME: ${{ steps.get-package_prefix.outputs.TAG_NAME }} | |
HEAD_SHA_SHORT: ${{ steps.get-package_prefix.outputs.HEAD_SHA_SHORT }} | |
steps: | |
- uses: actions/checkout@v2 | |
with: | |
fetch-depth: '0' | |
- name: get-package_prefix | |
id: get-package_prefix | |
run: | | |
LIB_NAME=Formulator | |
TAG_NAME=pre | |
HEAD_SHA_SHORT=$(git rev-parse --short HEAD) | |
echo "::set-output name=PACKAGE_PREFIX::${LIB_NAME}_${TAG_NAME}" | |
echo "::set-output name=TAG_NAME::${TAG_NAME}" | |
echo "::set-output name=HEAD_SHA_SHORT::${HEAD_SHA_SHORT}" | |
release: | |
needs: [setup] | |
runs-on: ubuntu-latest | |
outputs: | |
Up_Url: ${{ steps.create_release.outputs.upload_url }} | |
steps: | |
- name: create_release | |
id: create_release | |
uses: actions/create-release@v1 | |
env: | |
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} | |
with: | |
tag_name: v0.0 | |
release_name: Pre Release | |
draft: true | |
prerelease: true | |
windows: | |
needs: [setup, release] | |
runs-on: windows-latest | |
env: | |
PACKAGENAME: ${{ needs.setup.outputs.PACKAGE_PREFIX }}_windows_x64 | |
steps: | |
- uses: actions/checkout@v4 | |
- name: Set up Python 3.11 | |
uses: actions/setup-python@v5 | |
with: | |
python-version: "3.11" | |
- name: Install dependencies | |
run: | | |
python -m pip install --upgrade pip | |
pip install pyinstaller | |
pip install pyside6 | |
- name: Build | |
run: | | |
pyinstaller -F -w -i assets/icon.ico qt/app.py | |
mv dist Formulator | |
mv assets Formulator/assets | |
mkdir ${{ env.PACKAGENAME }} | |
mv Formulator ${{ env.PACKAGENAME }} | |
7z a -t7z -r "$($Env:PACKAGENAME + '.7z')" "Formulator" | |
- name: Upload | |
uses: actions/upload-artifact@v4 | |
with: | |
name: ${{ env.PACKAGENAME }} | |
path: ${{ env.PACKAGENAME }} | |
- name: upload-win | |
uses: actions/upload-release-asset@v1 | |
env: | |
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} | |
with: | |
upload_url: ${{ needs.release.outputs.Up_Url }} | |
asset_path: ${{ env.PACKAGENAME }}.7z | |
asset_name: ${{ env.PACKAGENAME }}.7z | |
asset_content_type: application/zip | |
macos: | |
needs: [ setup, release ] | |
runs-on: macos-11 | |
env: | |
PACKAGENAME: ${{ needs.setup.outputs.PACKAGE_PREFIX }}_macos_x64 | |
steps: | |
- uses: actions/checkout@v4 | |
- name: Set up Python 3.11 | |
uses: actions/setup-python@v5 | |
with: | |
python-version: "3.11" | |
- name: Install dependencies | |
run: | | |
python -m pip install --upgrade pip | |
pip install pyinstaller | |
pip install pyside6 | |
brew install create-dmg | |
- name: Build | |
run: | | |
cp assets/icon.icns ./ | |
pyinstaller --clean --onedir --name Formulator --strip --windowed -i icon.icns qt/app.py | |
rm -rf dist/Formulator | |
ln -s /Applications/ dist/Applications | |
xattr -cr dist/Formulator.app | |
create-dmg --volname "Formulator" ${{ env.PACKAGENAME }}.dmg dist/ | |
zip -9 Formulator.zip ${{ env.PACKAGENAME }}.dmg | |
- name: Upload | |
uses: actions/upload-artifact@v2 | |
with: | |
name: ${{ env.PACKAGENAME }} | |
path: Formulator.zip | |
- name: upload-macos | |
uses: actions/upload-release-asset@v1 | |
env: | |
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} | |
with: | |
upload_url: ${{ needs.release.outputs.Up_Url }} | |
asset_path: ${{ env.PACKAGENAME }}.dmg | |
asset_name: ${{ env.PACKAGENAME }}.dmg | |
asset_content_type: application/gzip |