Skip to content

Version 1.10.2

Version 1.10.2 #219

Workflow file for this run

name: "Snapshot"
on:
push:
branches: [ "master" ]
paths-ignore:
- 'OpenNumismat/resources/i18n/*'
- 'icons/*'
- 'OpenNumismat/resources/resources.qrc'
concurrency:
group: ${{ github.workflow }}
cancel-in-progress: true
jobs:
title:
name: Title
runs-on: ubuntu-latest
outputs:
APPNAME: OpenNumismat
VERSION: ${{ steps.bump.outputs.current-version }}.${{ steps.bump.outputs.current-release }}
PACKAGENAME: OpenNumismat-${{ steps.bump.outputs.current-version }}.${{ steps.bump.outputs.current-release }}
steps:
- uses: actions/checkout@v4
with:
fetch-depth: 0
- uses: actions/setup-python@v5
with:
python-version: '3.12'
- name: Install dependencies
run: |
python -m pip install --upgrade pip
python -m pip install bump-my-version==0.32.1
- name: Get current version
id: bump
shell: bash
run: |
echo "current-version=$(bump-my-version show current_version)" >> $GITHUB_OUTPUT
echo "current-release=$(bump-my-version show scm_info.distance_to_latest_tag)" >> $GITHUB_OUTPUT
windows:
needs: [title]
name: Windows
runs-on: windows-latest
steps:
- uses: actions/checkout@v4
with:
submodules: 'recursive'
fetch-depth: 0
- uses: actions/setup-python@v5
with:
python-version: '3.12'
- name: install dependencies
run: |
python -m pip install --upgrade pip
python -m pip install -r requirements.txt
python -m pip install bump-my-version==0.32.1 pyinstaller
- name: Bump pre-release version
run: |
bump-my-version bump pre --no-commit --allow-dirty --verbose --serialize "{major}.{minor}.{patch}.{distance_to_latest_tag}"
- name: Create private keys
run: |
touch OpenNumismat/private_keys.py
echo "COLNECT_PROXY = '${{ secrets.COLNECT_PROXY }}'" >> OpenNumismat/private_keys.py
echo "COLNECT_KEY = '${{ secrets.COLNECT_KEY }}'" >> OpenNumismat/private_keys.py
echo "NUMISTA_API_KEY = '${{ secrets.NUMISTA_API_KEY }}'" >> OpenNumismat/private_keys.py
echo "MAPBOX_ACCESS_TOKEN = '${{ secrets.MAPBOX_ACCESS_TOKEN }}'" >> OpenNumismat/private_keys.py
- name: Patch portable
uses: ./.github/actions/replace-string-in-file
with:
file: OpenNumismat/version.py
old-string: "Portable = False"
new-string: "Portable = True"
- name: build
run: |
SET PYTHONOPTIMIZE=1
pyinstaller open-numismat-portable.spec
- name: Upload
id: upload-portable
uses: actions/upload-artifact@v4
with:
name: ${{ needs.title.outputs.APPNAME }}-portable
path: dist/${{ needs.title.outputs.APPNAME }}/${{ needs.title.outputs.APPNAME }}.exe
if-no-files-found: error
- name: Signing
uses: signpath/github-action-submit-signing-request@v1
with:
api-token: '${{ secrets.SIGNPATH_API_TOKEN }}'
organization-id: '3b087850-3844-4d25-8407-cf81e731f8d1'
project-slug: 'open-numismat'
signing-policy-slug: 'test-signing'
artifact-configuration-slug: 'test-zip'
github-artifact-id: '${{steps.upload-portable.outputs.artifact-id}}'
output-artifact-directory: dist/${{ needs.title.outputs.APPNAME }}
wait-for-completion: true
- name: package
run: |
cd dist
7z a -r ../${{ needs.title.outputs.PACKAGENAME }}.zip ${{ needs.title.outputs.APPNAME }}
- name: Upload zip
uses: actions/upload-artifact@v4
with:
name: ${{ needs.title.outputs.PACKAGENAME }}-portable-signed
path: ${{ needs.title.outputs.PACKAGENAME }}.zip
if-no-files-found: error
innosetup:
needs: [title]
name: InnoSetup
runs-on: windows-latest
steps:
- uses: actions/checkout@v4
with:
submodules: 'recursive'
fetch-depth: 0
- uses: actions/setup-python@v5
with:
python-version: '3.12'
- name: install dependencies
run: |
python -m pip install --upgrade pip
python -m pip install -r requirements.txt
python -m pip install bump-my-version==0.32.1 pyinstaller
- name: Bump pre-release version
run: |
bump-my-version bump pre --no-commit --allow-dirty --verbose --serialize "{major}.{minor}.{patch}.{distance_to_latest_tag}"
- name: Create private keys
run: |
touch OpenNumismat/private_keys.py
echo "COLNECT_PROXY = '${{ secrets.COLNECT_PROXY }}'" >> OpenNumismat/private_keys.py
echo "COLNECT_KEY = '${{ secrets.COLNECT_KEY }}'" >> OpenNumismat/private_keys.py
echo "NUMISTA_API_KEY = '${{ secrets.NUMISTA_API_KEY }}'" >> OpenNumismat/private_keys.py
echo "MAPBOX_ACCESS_TOKEN = '${{ secrets.MAPBOX_ACCESS_TOKEN }}'" >> OpenNumismat/private_keys.py
- name: build
run: |
SET PYTHONOPTIMIZE=1
pyinstaller open-numismat.spec
- name: Upload
id: upload-exe
uses: actions/upload-artifact@v4
with:
name: ${{ needs.title.outputs.APPNAME }}-exe
path: dist/${{ needs.title.outputs.APPNAME }}/${{ needs.title.outputs.APPNAME }}.exe
if-no-files-found: error
- name: Signing
uses: signpath/github-action-submit-signing-request@v1
with:
api-token: '${{ secrets.SIGNPATH_API_TOKEN }}'
organization-id: '3b087850-3844-4d25-8407-cf81e731f8d1'
project-slug: 'open-numismat'
signing-policy-slug: 'test-signing'
artifact-configuration-slug: 'test-zip'
github-artifact-id: '${{steps.upload-exe.outputs.artifact-id}}'
output-artifact-directory: dist/${{ needs.title.outputs.APPNAME }}
wait-for-completion: true
- name: package
run: |
ISCC.exe tools/setup.iss
- name: Upload InnoSetup package
id: upload
uses: actions/upload-artifact@v4
with:
name: ${{ needs.title.outputs.PACKAGENAME }}
path: tools/${{ needs.title.outputs.PACKAGENAME }}.exe
if-no-files-found: error
nuitka:
needs: [title]
name: Nuitka
runs-on: windows-latest
steps:
- uses: actions/checkout@v4
with:
submodules: 'recursive'
fetch-depth: 0
- uses: actions/setup-python@v5
with:
python-version: '3.12'
- name: install dependencies
run: |
python -m pip install --upgrade pip
python -m pip install -r requirements.txt
python -m pip install bump-my-version==0.32.1 nuitka
- name: Bump pre-release version
run: |
bump-my-version bump pre --no-commit --allow-dirty --verbose --serialize "{major}.{minor}.{patch}.{distance_to_latest_tag}"
- name: Create private keys
run: |
touch OpenNumismat/private_keys.py
echo "COLNECT_PROXY = '${{ secrets.COLNECT_PROXY }}'" >> OpenNumismat/private_keys.py
echo "COLNECT_KEY = '${{ secrets.COLNECT_KEY }}'" >> OpenNumismat/private_keys.py
echo "NUMISTA_API_KEY = '${{ secrets.NUMISTA_API_KEY }}'" >> OpenNumismat/private_keys.py
echo "MAPBOX_ACCESS_TOKEN = '${{ secrets.MAPBOX_ACCESS_TOKEN }}'" >> OpenNumismat/private_keys.py
- name: Patch portable
uses: ./.github/actions/replace-string-in-file
with:
file: OpenNumismat/version.py
old-string: "Portable = False"
new-string: "Portable = True"
- name: build
run: >-
python -m nuitka open-numismat.py
--jobs=2
--assume-yes-for-downloads
--msvc=latest
--lto=yes
--show-modules
--standalone
--enable-plugin=pyside6
--include-qt-plugins=sqldrivers,multimedia
--module-parameter=numba-disable-jit=yes
--windows-console-mode=disable
--include-data-dir=OpenNumismat/templates=templates
--include-data-dir=OpenNumismat/db=db
--include-data-files=COPYING=COPYING
--windows-icon-from-ico=icons/main.ico
--windows-file-version=${{ needs.title.outputs.VERSION }}
--output-filename=${{ needs.title.outputs.APPNAME }}.exe
- name: Upload
id: upload-nuitka-portable
uses: actions/upload-artifact@v4
with:
name: ${{ needs.title.outputs.APPNAME }}-nuitka-portable
path: open-numismat.dist/${{ needs.title.outputs.APPNAME }}.exe
if-no-files-found: error
- name: Signing
uses: signpath/github-action-submit-signing-request@v1
with:
api-token: '${{ secrets.SIGNPATH_API_TOKEN }}'
organization-id: '3b087850-3844-4d25-8407-cf81e731f8d1'
project-slug: 'open-numismat'
signing-policy-slug: 'test-signing'
artifact-configuration-slug: 'test-zip'
github-artifact-id: '${{steps.upload-nuitka-portable.outputs.artifact-id}}'
output-artifact-directory: open-numismat.dist
wait-for-completion: true
- name: package
run: |
cd open-numismat.dist
mkdir ${{ needs.title.outputs.APPNAME }}
robocopy . ${{ needs.title.outputs.APPNAME }} /move /e /xd ${{ needs.title.outputs.APPNAME }}
7z a -r ../${{ needs.title.outputs.PACKAGENAME }}.zip ${{ needs.title.outputs.APPNAME }}
- name: upload
uses: actions/upload-artifact@v4
with:
name: ${{ needs.title.outputs.PACKAGENAME }}-nuitka-portable-signed
path: ${{ needs.title.outputs.PACKAGENAME }}.zip
if-no-files-found: error
nuitka_innosetup:
needs: [title]
name: Nuitka InnoSetup
runs-on: windows-latest
steps:
- uses: actions/checkout@v4
with:
submodules: 'recursive'
fetch-depth: 0
- uses: actions/setup-python@v5
with:
python-version: '3.12'
- name: install dependencies
run: |
python -m pip install --upgrade pip
python -m pip install -r requirements.txt
python -m pip install bump-my-version==0.32.1 nuitka
- name: Bump pre-release version
run: |
bump-my-version bump pre --no-commit --allow-dirty --verbose --serialize "{major}.{minor}.{patch}.{distance_to_latest_tag}"
- name: Create private keys
run: |
touch OpenNumismat/private_keys.py
echo "COLNECT_PROXY = '${{ secrets.COLNECT_PROXY }}'" >> OpenNumismat/private_keys.py
echo "COLNECT_KEY = '${{ secrets.COLNECT_KEY }}'" >> OpenNumismat/private_keys.py
echo "NUMISTA_API_KEY = '${{ secrets.NUMISTA_API_KEY }}'" >> OpenNumismat/private_keys.py
echo "MAPBOX_ACCESS_TOKEN = '${{ secrets.MAPBOX_ACCESS_TOKEN }}'" >> OpenNumismat/private_keys.py
- name: build
run: >-
python -m nuitka open-numismat.py
--jobs=2
--assume-yes-for-downloads
--msvc=latest
--lto=yes
--show-modules
--standalone
--enable-plugin=pyside6
--include-qt-plugins=sqldrivers,multimedia
--module-parameter=numba-disable-jit=yes
--windows-console-mode=disable
--include-data-dir=OpenNumismat/templates=templates
--include-data-dir=OpenNumismat/db=db
--include-data-files=COPYING=COPYING
--windows-icon-from-ico=icons/main.ico
--windows-file-version=${{ needs.title.outputs.VERSION }}
--output-filename=${{ needs.title.outputs.APPNAME }}.exe
- name: Upload
id: upload-nuitka-exe
uses: actions/upload-artifact@v4
with:
name: ${{ needs.title.outputs.APPNAME }}-nuitka-exe
path: open-numismat.dist/${{ needs.title.outputs.APPNAME }}.exe
if-no-files-found: error
- name: Signing
uses: signpath/github-action-submit-signing-request@v1
with:
api-token: '${{ secrets.SIGNPATH_API_TOKEN }}'
organization-id: '3b087850-3844-4d25-8407-cf81e731f8d1'
project-slug: 'open-numismat'
signing-policy-slug: 'test-signing'
artifact-configuration-slug: 'test-zip'
github-artifact-id: '${{steps.upload-nuitka-exe.outputs.artifact-id}}'
output-artifact-directory: open-numismat.dist
wait-for-completion: true
- name: package
run: |
ISCC.exe tools/setup-nuitka.iss
- name: Upload InnoSetup package
id: upload
uses: actions/upload-artifact@v4
with:
name: ${{ needs.title.outputs.PACKAGENAME }}-nuitka
path: tools/${{ needs.title.outputs.PACKAGENAME }}.exe
if-no-files-found: error
ubuntu:
needs: [title]
name: Ubuntu 22.04
runs-on: ubuntu-22.04
steps:
- uses: actions/checkout@v4
with:
submodules: 'recursive'
fetch-depth: 0
- name: Install dependencies
run: |
sudo apt update
sudo apt install dpkg devscripts debhelper dh-python dh-virtualenv python3-venv
- name: Create private keys
run: |
touch OpenNumismat/private_keys.py
echo "COLNECT_PROXY = '${{ secrets.COLNECT_PROXY }}'" >> OpenNumismat/private_keys.py
echo "COLNECT_KEY = '${{ secrets.COLNECT_KEY }}'" >> OpenNumismat/private_keys.py
echo "NUMISTA_API_KEY = '${{ secrets.NUMISTA_API_KEY }}'" >> OpenNumismat/private_keys.py
echo "MAPBOX_ACCESS_TOKEN = '${{ secrets.MAPBOX_ACCESS_TOKEN }}'" >> OpenNumismat/private_keys.py
- name: Patch version
uses: ./.github/actions/replace-string-in-file
with:
file: OpenNumismat/version.py
old-string: "Version = .*"
new-string: >-
Version = "${{ needs.title.outputs.VERSION }}"
- name: Patch build
uses: ./.github/actions/replace-string-in-file
with:
file: debian/changelog
old-string: "open-numismat (.*) oneiric; urgency=low"
new-string: "open-numismat (${{ needs.title.outputs.VERSION }}) unstable; urgency=low"
- name: Build
run: |
debuild -b -us -uc
mv ../open-numismat_${{ needs.title.outputs.VERSION }}_all.deb .
- name: upload
uses: actions/upload-artifact@v4
with:
name: ${{ needs.title.outputs.PACKAGENAME }}-deb
path: open-numismat_${{ needs.title.outputs.VERSION }}_all.deb
if-no-files-found: error
ubuntu-24:
needs: [title]
name: Ubuntu 24.04
runs-on: ubuntu-24.04
steps:
- uses: actions/checkout@v4
with:
submodules: 'recursive'
fetch-depth: 0
- name: Install dependencies
run: |
sudo apt update
sudo apt install dpkg devscripts debhelper dh-python dh-virtualenv python3-venv build-essential
- name: Create private keys
run: |
touch OpenNumismat/private_keys.py
echo "COLNECT_PROXY = '${{ secrets.COLNECT_PROXY }}'" >> OpenNumismat/private_keys.py
echo "COLNECT_KEY = '${{ secrets.COLNECT_KEY }}'" >> OpenNumismat/private_keys.py
echo "NUMISTA_API_KEY = '${{ secrets.NUMISTA_API_KEY }}'" >> OpenNumismat/private_keys.py
echo "MAPBOX_ACCESS_TOKEN = '${{ secrets.MAPBOX_ACCESS_TOKEN }}'" >> OpenNumismat/private_keys.py
- name: Patch version
uses: ./.github/actions/replace-string-in-file
with:
file: OpenNumismat/version.py
old-string: "Version = .*"
new-string: >-
Version = "${{ needs.title.outputs.VERSION }}"
- name: Patch build
uses: ./.github/actions/replace-string-in-file
with:
file: debian/changelog
old-string: "open-numismat (.*) oneiric; urgency=low"
new-string: "open-numismat (${{ needs.title.outputs.VERSION }}) unstable; urgency=low"
- name: Build
run: |
debuild -b -us -uc
mv ../open-numismat_${{ needs.title.outputs.VERSION }}_all.deb .
- name: upload
uses: actions/upload-artifact@v4
with:
name: ${{ needs.title.outputs.PACKAGENAME }}-deb-24
path: open-numismat_${{ needs.title.outputs.VERSION }}_all.deb
if-no-files-found: error
macos:
needs: [title]
name: macOS
runs-on: macos-13
steps:
- uses: actions/checkout@v4
with:
submodules: 'recursive'
fetch-depth: 0
- uses: actions/setup-python@v5
with:
python-version: '3.13'
- name: install dependencies
run: |
python -m pip install --upgrade pip
python -m pip install -r requirements.txt
python -m pip install bump-my-version==0.32.1 pyinstaller
- name: Bump pre-release version
run: |
bump-my-version bump pre --no-commit --allow-dirty --verbose --serialize "{major}.{minor}.{patch}.{distance_to_latest_tag}"
- name: Create private keys
run: |
touch OpenNumismat/private_keys.py
echo "COLNECT_PROXY = '${{ secrets.COLNECT_PROXY }}'" >> OpenNumismat/private_keys.py
echo "COLNECT_KEY = '${{ secrets.COLNECT_KEY }}'" >> OpenNumismat/private_keys.py
echo "NUMISTA_API_KEY = '${{ secrets.NUMISTA_API_KEY }}'" >> OpenNumismat/private_keys.py
echo "MAPBOX_ACCESS_TOKEN = '${{ secrets.MAPBOX_ACCESS_TOKEN }}'" >> OpenNumismat/private_keys.py
- name: build
run: |
PYTHONOPTIMIZE=1
pyinstaller open-numismat.spec
- name: package
run: |
cd dist
mkdir vol
mv OpenNumismat.app vol
ln -s /Applications vol/Applications
hdiutil create ${{ needs.title.outputs.PACKAGENAME }}-macos13.dmg -volname "${{ needs.title.outputs.PACKAGENAME }}" -srcfolder vol -fs HFSX -format UDZO -imagekey zlib-level=9
- name: upload
uses: actions/upload-artifact@v4
with:
name: ${{ needs.title.outputs.PACKAGENAME }}-dmg
path: dist/${{ needs.title.outputs.PACKAGENAME }}-macos13.dmg
if-no-files-found: error
macos-arm64:
needs: [title]
name: macOS arm64
runs-on: macos-14
steps:
- uses: actions/checkout@v4
with:
submodules: 'recursive'
fetch-depth: 0
- uses: actions/setup-python@v5
with:
python-version: '3.13'
- name: install dependencies
run: |
python -m pip install --upgrade pip
python -m pip install -r requirements.txt
python -m pip install bump-my-version==0.32.1 pyinstaller
- name: Bump pre-release version
run: |
bump-my-version bump pre --no-commit --allow-dirty --verbose --serialize "{major}.{minor}.{patch}.{distance_to_latest_tag}"
- name: Create private keys
run: |
touch OpenNumismat/private_keys.py
echo "COLNECT_PROXY = '${{ secrets.COLNECT_PROXY }}'" >> OpenNumismat/private_keys.py
echo "COLNECT_KEY = '${{ secrets.COLNECT_KEY }}'" >> OpenNumismat/private_keys.py
echo "NUMISTA_API_KEY = '${{ secrets.NUMISTA_API_KEY }}'" >> OpenNumismat/private_keys.py
echo "MAPBOX_ACCESS_TOKEN = '${{ secrets.MAPBOX_ACCESS_TOKEN }}'" >> OpenNumismat/private_keys.py
- name: build
run: |
PYTHONOPTIMIZE=1
pyinstaller open-numismat.spec
- name: package
run: |
cd dist
mkdir vol
mv OpenNumismat.app vol
ln -s /Applications vol/Applications
hdiutil create ${{ needs.title.outputs.PACKAGENAME }}-macos14-arm64.dmg -volname "${{ needs.title.outputs.PACKAGENAME }}" -srcfolder vol -fs HFSX -format UDZO -imagekey zlib-level=9
- name: upload
uses: actions/upload-artifact@v4
with:
name: ${{ needs.title.outputs.PACKAGENAME }}-dmg-arm64
path: dist/${{ needs.title.outputs.PACKAGENAME }}-macos14-arm64.dmg
if-no-files-found: error
prerelease:
name: Create pre-release
needs: [title, windows, innosetup, ubuntu, ubuntu-24, macos, macos-arm64, nuitka, nuitka_innosetup]
runs-on: ubuntu-latest
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
steps:
- name: Download artifacts
uses: actions/download-artifact@v4
with:
path: artifacts
- name: release
id: release
uses: marvinpinto/action-automatic-releases@latest
with:
repo_token: "${{ secrets.PAT }}"
automatic_release_tag: "latest"
prerelease: true
title: "Development Build"
- name: upload-windows
uses: actions/upload-release-asset@v1
with:
upload_url: ${{ steps.release.outputs.upload_url }}
asset_path: artifacts/${{ needs.title.outputs.PACKAGENAME }}-portable-signed/${{ needs.title.outputs.PACKAGENAME }}.zip
asset_name: ${{ needs.title.outputs.PACKAGENAME }}.zip
asset_content_type: application/zip
- name: upload-innosetup
uses: actions/upload-release-asset@v1
with:
upload_url: ${{ steps.release.outputs.upload_url }}
asset_path: artifacts/${{ needs.title.outputs.PACKAGENAME }}/${{ needs.title.outputs.PACKAGENAME }}.exe
asset_name: ${{ needs.title.outputs.PACKAGENAME }}.exe
asset_content_type: application/octet-stream
- name: upload-nuitka
uses: actions/upload-release-asset@v1
with:
upload_url: ${{ steps.release.outputs.upload_url }}
asset_path: artifacts/${{ needs.title.outputs.PACKAGENAME }}-nuitka-portable-signed/${{ needs.title.outputs.PACKAGENAME }}.zip
asset_name: ${{ needs.title.outputs.PACKAGENAME }}-nuitka.zip
asset_content_type: application/octet-stream
- name: upload-nuitka-innosetup
uses: actions/upload-release-asset@v1
with:
upload_url: ${{ steps.release.outputs.upload_url }}
asset_path: artifacts/${{ needs.title.outputs.PACKAGENAME }}-nuitka/${{ needs.title.outputs.PACKAGENAME }}.exe
asset_name: ${{ needs.title.outputs.PACKAGENAME }}-nuitka.exe
asset_content_type: application/octet-stream
- name: upload-ubuntu
uses: actions/upload-release-asset@v1
with:
upload_url: ${{ steps.release.outputs.upload_url }}
asset_path: artifacts/${{ needs.title.outputs.PACKAGENAME }}-deb/open-numismat_${{ needs.title.outputs.VERSION }}_all.deb
asset_name: open-numismat_${{ needs.title.outputs.VERSION }}_all.deb
asset_content_type: application/octet-stream
- name: upload-ubuntu-24
uses: actions/upload-release-asset@v1
with:
upload_url: ${{ steps.release.outputs.upload_url }}
asset_path: artifacts/${{ needs.title.outputs.PACKAGENAME }}-deb-24/open-numismat_${{ needs.title.outputs.VERSION }}_all.deb
asset_name: open-numismat_${{ needs.title.outputs.VERSION }}_all_24.deb
asset_content_type: application/octet-stream
- name: upload-macos
uses: actions/upload-release-asset@v1
with:
upload_url: ${{ steps.release.outputs.upload_url }}
asset_path: artifacts/${{ needs.title.outputs.PACKAGENAME }}-dmg/${{ needs.title.outputs.PACKAGENAME }}-macos13.dmg
asset_name: ${{ needs.title.outputs.PACKAGENAME }}-macos13.dmg
asset_content_type: application/octet-stream
- name: upload-macos-arm64
uses: actions/upload-release-asset@v1
with:
upload_url: ${{ steps.release.outputs.upload_url }}
asset_path: artifacts/${{ needs.title.outputs.PACKAGENAME }}-dmg-arm64/${{ needs.title.outputs.PACKAGENAME }}-macos14-arm64.dmg
asset_name: ${{ needs.title.outputs.PACKAGENAME }}-macos14-arm64.dmg
asset_content_type: application/octet-stream