Skip to content

prepare release 1.1.18 #633

prepare release 1.1.18

prepare release 1.1.18 #633

Workflow file for this run

name: build
on:
push:
branches:
- master
tags:
- "**"
paths-ignore:
- "**.md"
pull_request:
paths-ignore:
- "**.md"
workflow_dispatch:
jobs:
build:
name: build
runs-on: ${{ matrix.os }}
permissions:
contents: write
env:
RUNNER_MACHINE: ${{ matrix.os }} # TODO: Is there a built-in env variable?
PYTHONPATH: jimmy
strategy:
fail-fast: false
matrix:
# available images: https://github.com/actions/runner-images?tab=readme-ov-file#available-images
# "macos-latest" to support ARM based MACs
# "macos-15-intel" to support Intel based MACs
# "ubuntu-22.04" to get the lowest possible glibc version for compatibility
os: ["windows-latest", "ubuntu-22.04", "macos-latest", "macos-15-intel"]
# build "macos-15-intel" executable only at release
# https://github.com/orgs/community/discussions/26253?sort=top#discussioncomment-3250989
is_release:
- ${{ startsWith(github.ref, 'refs/tags/v') }}
exclude:
- is_release: false
os: "macos-15-intel"
- is_release: false
os: "ubuntu-latest"
steps:
- uses: actions/checkout@v5
with:
# fetch all tags for the "git describe" later
fetch-depth: 0
submodules: true
- name: Set up Python
uses: actions/setup-python@v6
with:
python-version: "3.14.0"
cache: "pip"
cache-dependency-path: "requirements/requirements*.txt"
- name: Install dependencies
# install only the really required modules before the pyinstaller build
run: |
pip install -r requirements/requirements-build.txt
python download_binaries.py
- name: Build executables with pyinstaller
run: |
python -m PyInstaller jimmy.spec
- name: Release
uses: softprops/action-gh-release@v2
# release only if there is a release tag
if: ${{ startsWith(github.ref, 'refs/tags/v') }}
with:
files: |
./dist/jimmy*
./bin/copyright.pandoc
- name: Check executable size
shell: bash
run: ls -lh ./dist
- name: Smoke test
working-directory: ./dist # run in a different directory to make sure that the paths are working
run: |
# default pandoc converter
./jimmy* cli ../test/data/test_data/default_format/arbitrary_folder --stdout-log-level DEBUG
# filters and frontmatter module
./jimmy* cli ../test/data/test_data/obsidian/test_1_frontmatter --format obsidian
./jimmy* cli ../test/data/test_data/obsidian/test_1_frontmatter --format obsidian --exclude-tags "*"
./jimmy* cli ../test/data/test_data/obsidian/test_1_frontmatter --format obsidian --include-notes-with-tags "*"
./jimmy* cli ../test/data/test_data/obsidian/test_1_frontmatter --format obsidian --include-notes "Second sample note" "Sample note"
# textbundle converter called from bear converter
./jimmy* cli ../test/data/test_data/bear/test_1_frontmatter/backup.bear2bk --format bear --stdout-log-level DEBUG
# cryptography module
./jimmy* cli ../test/data/test_data/colornote/test_1_frontmatter/colornote-20241014.backup --format colornote --password 1234 --stdout-log-level DEBUG
# sqlite3 module
./jimmy* cli ../test/data/test_data/qownnotes/test_1/note_folder --format qownnotes --stdout-log-level DEBUG
# pyyaml module
./jimmy* cli ../test/data/test_data/rednotebook/test_2/RedNotebook-Backup-2024-09-15.zip --format rednotebook --stdout-log-level DEBUG
# anytype module
./jimmy* cli ../test/data/test_data/anytype/test_1/Anytype.20241112.175339.64 --format anytype --stdout-log-level DEBUG
# # onenote conversion with bundled executable
# ./jimmy* cli ../test/data/test_data/onenote/test_1_frontmatter/OneDrive_2025-09-28.zip --format onenote --stdout-log-level DEBUG
# - name: Scan for viruses (just for information)
# if: runner.os == 'Linux'
# run: |
# sudo apt install -y clamav
# clamscan ./dist/jimmy*