Release #113
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 build/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 build/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: | | |
resources/locale=resources/locale | |
include-package-data: pdf_mangler | |
output-file: pdfstitcher.exe | |
windows-console-mode: disable | |
windows-icon-from-ico: 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 build/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 Nuitka | |
env: | |
APPLE_SIGN_IDENTITY: ${{ secrets.APPLE_SIGN_IDENTITY }} | |
run: | | |
pip install nuitka | |
chmod +x build/mac_build_and_sign.sh | |
./build/mac_build_and_sign.sh | |
- name: Create dmg | |
run: | | |
brew install create-dmg | |
create-dmg \ | |
--volname "PDFStitcher Installer" \ | |
--background "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" \ | |
"build/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 }} |