Release #111
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
name: Release | |
on: | |
workflow_dispatch: | |
inputs: | |
draft: | |
description: 'Draft' | |
type: boolean | |
required: true | |
pypi: | |
description: 'Deploy to PyPi' | |
type: boolean | |
required: true | |
win: | |
description: 'Build for Windows' | |
type: boolean | |
required: true | |
mac: | |
description: 'build for macOS' | |
type: boolean | |
required: true | |
jobs: | |
pypi-release: | |
if: ${{ inputs.pypi }} | |
runs-on: ubuntu-latest | |
steps: | |
- name: Checkout | |
uses: actions/checkout@v4 | |
- name: Install Python | |
uses: actions/setup-python@v5 | |
with: | |
python-version: 3.8 # old to support Windows 7 | |
- name: Update package index | |
run: sudo apt-get update | |
- name: Install wxPython dependencies | |
# list of packages from https://github.com/wxWidgets/Phoenix/ | |
run: | | |
sudo apt install \ | |
dpkg-dev \ | |
build-essential \ | |
python3-dev \ | |
freeglut3-dev \ | |
libgl1-mesa-dev \ | |
libglu1-mesa-dev \ | |
libunwind-dev \ | |
libgstreamer-plugins-base1.0-dev \ | |
libgtk-3-dev \ | |
libjpeg-dev \ | |
libnotify-dev \ | |
libpng-dev \ | |
libsdl2-dev \ | |
libsm-dev \ | |
libtiff-dev \ | |
libwebkit2gtk-4.0-dev \ | |
libxtst-dev | |
- name: Compile translation files and build distribution | |
run: | | |
python3 pdfstitcher/update_loc.py --compile | |
pip3 install build | |
python3 -m build | |
- name: Publish to pypi | |
uses: pypa/[email protected] | |
with: | |
password: ${{ secrets.PYPI_TOKEN }} | |
win-build: | |
if: ${{ inputs.win }} | |
runs-on: windows-2019 | |
defaults: | |
run: | |
shell: bash | |
steps: | |
- name: Checkout | |
uses: actions/checkout@v4 | |
- name: Install Python | |
uses: actions/setup-python@v5 | |
with: | |
python-version: "3.8" # needs to be 3.8 to support Windows 7 | |
- name: Install dependencies | |
run: | | |
pip install .[gui] | |
python pdfstitcher/update_loc.py --compile | |
echo "VERSION_STRING=v$(grep 'version' pyproject.toml | awk '{print $3}' | sed 's/\"//g')" >> $GITHUB_ENV | |
- uses: Nuitka/Nuitka-Action@main | |
with: | |
nuitka-version: main | |
script-name: pdfstitcher/gui/app.py | |
onefile: true | |
include-data-dir: | | |
pdfstitcher/resources=pdfstitcher/resources | |
pdfstitcher/locale=pdfstitcher/locale | |
include-package-data: pdf_mangler | |
output-file: pdfstitcher.exe | |
windows-console-mode: disable | |
windows-icon-from-ico: pdfstitcher/resources/stitcher-icon.ico | |
- name: GH Release | |
uses: softprops/action-gh-release@v2 | |
with: | |
files: build/pdfstitcher.exe | |
draft: ${{ inputs.draft }} | |
tag_name: ${{ env.VERSION_STRING }} | |
mac-build: | |
if: ${{ inputs.mac }} | |
runs-on: ${{ matrix.os }} | |
strategy: | |
fail-fast: false | |
matrix: | |
os: [macos-12, macos-latest] | |
steps: | |
- name: Checkout | |
uses: actions/checkout@v4 | |
- name: Setup Python | |
uses: actions/setup-python@v5 | |
with: | |
python-version: '3.10' | |
architecture: ${{ runner.arch }} | |
cache: 'pip' | |
- name: Install dependencies and compile translation files | |
run: | | |
brew install qpdf | |
pip install ".[gui]" | |
python pdfstitcher/update_loc.py --compile | |
echo "VERSION_STRING=v$(grep 'version' pyproject.toml | awk '{print $3}' | sed 's/\"//g')" >> $GITHUB_ENV | |
- name: Configure code signing | |
uses: apple-actions/import-codesign-certs@v3 | |
with: | |
p12-file-base64: ${{ secrets.APPLE_SIGN_CERTIFICATE }} | |
p12-password: ${{ secrets.APPLE_SIGN_PASSWORD }} | |
- name: Build with Pyinstaller | |
env: | |
APPLE_SIGN_IDENTITY: ${{ secrets.APPLE_SIGN_IDENTITY }} | |
run: | | |
pip install pyinstaller | |
pyinstaller pdfstitcher_mac.spec | |
- name: Create dmg | |
run: | | |
brew install create-dmg | |
create-dmg \ | |
--volname "PDFStitcher Installer" \ | |
--background "pdfstitcher/resources/install_background.png" \ | |
--window-pos 200 120 \ | |
--window-size 800 400 \ | |
--icon-size 100 \ | |
--icon "pdfstitcher.app" 145 185 \ | |
--no-internet-enable \ | |
--app-drop-link 595 185 \ | |
--codesign "${{ secrets.APPLE_SIGN_IDENTITY }}" \ | |
"PDFStitcher-Installer.dmg" \ | |
"dist/pdfstitcher.app" | |
- name: Rename with arch | |
run: mv PDFStitcher-Installer.dmg "PDFStitcher-Installer${{ runner.arch }}.dmg" | |
- name: Notarize | |
uses: love-actions/xcode-notarizer@v1 | |
with: | |
product-path: "PDFStitcher-Installer${{ runner.arch }}.dmg" | |
apple-id: ${{ secrets.APPLE_ID }} | |
app-password: ${{ secrets.APPLE_APP_PASSWORD }} | |
team-id: ${{ secrets.APPLE_TEAM_ID }} | |
staple: true | |
- name: GH Release | |
uses: softprops/action-gh-release@v2 | |
with: | |
files: "PDFStitcher-Installer${{ runner.arch }}.dmg" | |
draft: ${{ inputs.draft }} | |
tag_name: ${{ env.VERSION_STRING }} |