Skip to content

#1859 i18n: add more app and webpage translation #444

#1859 i18n: add more app and webpage translation

#1859 i18n: add more app and webpage translation #444

Workflow file for this run

name: 📣 Build release of QOwnNotes
on:
workflow_dispatch:
push:
branches:
- release
tags-ignore:
- '*'
defaults:
run:
working-directory: src
#--------------------------------------------------------------------------------
# Define application name & version
#--------------------------------------------------------------------------------
env:
EXECUTABLE: "QOwnNotes"
APPLICATION: "QOwnNotes"
UNIXNAME: "QOwnNotes"
QMAKE_PROJECT: "QOwnNotes.pro"
PUBLISHER: "Patrizio Bekerle"
REPO_DIR: "/home/runner/work/QOwnNotes"
QT_MODULES: ""
QT6_MODULES: "qtwebsockets"
QMAKE: qmake
CORES: 16
jobs:
create_release:
name: '🗃️️ Prepare release'
permissions:
contents: write # for actions/create-release to create a release
runs-on: ubuntu-latest
outputs:
upload_url: ${{ steps.create_release.outputs.upload_url }}
release_id: ${{ steps.create_release.outputs.id }}
steps:
- uses: actions/checkout@v4
- name: Set Env
run: |
export VERSION=$(cat version.h | sed 's/[^0-9,.]//g')
#export TAG=v${VERSION}.${GITHUB_RUN_ID}.${GITHUB_RUN_NUMBER}
export TAG=v${VERSION}
export RELEASE_TEXT=$(grep -Pzo "## ${VERSION}\n(\n|.)+?\n##" ../CHANGELOG.md | sed '$ d')
echo "VERSION=${VERSION}" >> $GITHUB_ENV
echo "TAG=${TAG}" >> $GITHUB_ENV
# add multiline release text
echo "RELEASE_TEXT<<EOF" >> $GITHUB_ENV
echo "${RELEASE_TEXT}" >> $GITHUB_ENV
echo "EOF" >> $GITHUB_ENV
- name: Printenv
run: |
echo "VERSION=${VERSION}"
echo "TAG=${TAG}"
echo "RELEASE_TEXT=${RELEASE_TEXT}"
printenv
- name: Create release
id: create_release
uses: actions/create-release@v1
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
with:
tag_name: ${{ env.TAG }}
release_name: Release v${{ env.VERSION }}
body: ${{ env.RELEASE_TEXT }}
# we want other build systems to immediately use this release after we uploaded the source archive
draft: false
prerelease: false
#--------------------------------------------------------------------------------
# Workflow jobs (GNU/Linux, macOS & Windows)
#--------------------------------------------------------------------------------
#
# AppImage build
#
build-appimage:
needs: create_release
runs-on: ubuntu-20.04
env:
QT_VERSION: 5.15.2
BUILD_DIR: build
name: '🐧 AppImage Qt 5.15.2'
steps:
- name: '🧰 Checkout'
uses: actions/checkout@v4
with:
submodules: recursive
- name: '⚙️ Install Qt'
uses: jurplel/install-qt-action@v4
with:
version: ${{env.QT_VERSION}}
modules: ${{env.QT_MODULES}}
aqtversion: '==2.0.0'
setup-python: false
cache: true
- name: '⚙️ Install dependencies'
run: |
sudo apt-get update
sudo apt install desktop-file-utils libxcb-icccm4 libxcb-image0 libxcb-keysyms1 libxcb-render-util0 libxcb-xinerama0 libxcb-composite0 libxcb-cursor0 libxcb-damage0 libxcb-dpms0 libxcb-dri2-0 libxcb-dri3-0 libxcb-ewmh2 libxcb-glx0 libxcb-present0 libxcb-randr0 libxcb-record0 libxcb-render0 libxcb-res0 libxcb-screensaver0 libxcb-shape0 libxcb-shm0 libxcb-sync1 libxcb-util1 libxkbcommon-x11-0
- name: '🚧 Compile application'
run: |
echo "#define RELEASE \"AppImage\"" > release.h
${{env.QMAKE}} ${{env.QMAKE_PROJECT}} CONFIG+=release PREFIX=/usr
lrelease QOwnNotes.pro
make -j${{env.CORES}}
- name: '⚙️ Install linuxdeploy'
run: |
wget https://github.com/linuxdeploy/linuxdeploy/releases/download/continuous/linuxdeploy-x86_64.AppImage
wget https://github.com/linuxdeploy/linuxdeploy-plugin-qt/releases/download/continuous/linuxdeploy-plugin-qt-x86_64.AppImage
chmod +x linuxdeploy-x86_64.AppImage
chmod +x linuxdeploy-plugin-qt-x86_64.AppImage
- name: '📦 Create AppImage'
run: |
export QMAKE=${{env.REPO_DIR}}/Qt/${{env.QT_VERSION}}/gcc_64/bin/${{env.QMAKE}}
export PATH=${{env.REPO_DIR}}/Qt/${{env.QT_VERSION}}/gcc_64/libexec:$PATH
export EXTRA_QT_PLUGINS="svg;"
cp ../icons/icon.png QOwnNotes.png
./linuxdeploy-x86_64.AppImage --appdir ${{env.BUILD_DIR}} -e ${{env.UNIXNAME}} -i ${{env.UNIXNAME}}.png -d PBE.QOwnNotes.desktop --plugin qt
mkdir -p ${{env.BUILD_DIR}}/usr/languages && cp -r languages/*.qm ${{env.BUILD_DIR}}/usr/languages
find ${{env.BUILD_DIR}}
./linuxdeploy-x86_64.AppImage --appdir ${{env.BUILD_DIR}} --output appimage
rm linuxdeploy-x86_64.AppImage
rm linuxdeploy-plugin-qt-x86_64.AppImage
ls -hal *.AppImage
find -iname "*.AppImage"
mv *.AppImage ${{env.EXECUTABLE}}-x86_64.AppImage || true
sha256sum ${{env.EXECUTABLE}}-x86_64.AppImage > ${{env.EXECUTABLE}}-x86_64.AppImage.sha256sum
ls -hal *.AppImage
find -iname "*.AppImage"
pwd
# - name: '📤 Upload artifact: AppImage'
# uses: actions/upload-artifact@v3
# with:
# name: ${{env.EXECUTABLE}}-x86_64.AppImage
# path: src/${{env.EXECUTABLE}}-x86_64.AppImage
# - name: '📤 Upload artifact: AppImage sha256sum'
# uses: actions/upload-artifact@v3
# with:
# name: ${{env.EXECUTABLE}}-x86_64.AppImage.sha256sum
# path: src/${{env.EXECUTABLE}}-x86_64.AppImage.sha256sum
- name: '📤 Release AppImage for Linux'
uses: actions/upload-release-asset@v1
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
with:
upload_url: ${{ needs.create_release.outputs.upload_url }}
asset_path: ./src/QOwnNotes-x86_64.AppImage
asset_name: QOwnNotes-x86_64.AppImage
asset_content_type: application/vnd.appimage
- name: '📤 Release AppImage sha256sum'
uses: actions/upload-release-asset@v1
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
with:
upload_url: ${{ needs.create_release.outputs.upload_url }}
asset_path: ./src/QOwnNotes-x86_64.AppImage.sha256sum
asset_name: QOwnNotes-x86_64.AppImage.sha256sum
asset_content_type: text/plain
#
# AppImage Qt6 build
#
build-appimage-qt6:
needs: create_release
runs-on: ubuntu-20.04
env:
QT_VERSION: 6.5.3
BUILD_DIR: build
name: '🐧 AppImage Qt 6.5.3'
steps:
- name: '🧰 Checkout'
uses: actions/checkout@v4
with:
submodules: recursive
- name: '⚙️ Install Qt'
uses: jurplel/install-qt-action@v4
with:
version: ${{env.QT_VERSION}}
modules: ${{env.QT6_MODULES}}
aqtversion: '==2.0.0'
cache: true
- name: '⚙️ Install dependencies'
run: |
sudo apt-get update
# sudo apt-get install libgl1-mesa-dev libxkbcommon-x11-0 libxcb-icccm4 libxcb-image0 libxcb-keysyms1 libxcb-render-util0 libxcb-xinerama0 libzstd-dev
sudo apt install desktop-file-utils libxcb-icccm4 libxcb-image0 libxcb-keysyms1 libxcb-render-util0 libxcb-xinerama0 libxcb-composite0 libxcb-cursor0 libxcb-damage0 libxcb-dpms0 libxcb-dri2-0 libxcb-dri3-0 libxcb-ewmh2 libxcb-glx0 libxcb-present0 libxcb-randr0 libxcb-record0 libxcb-render0 libxcb-res0 libxcb-screensaver0 libxcb-shape0 libxcb-shm0 libxcb-sync1 libxcb-util1 libxkbcommon-x11-0
- name: '🚧 Compile application'
run: |
echo "#define RELEASE \"AppImage\"" > release.h
${{env.QMAKE}} ${{env.QMAKE_PROJECT}} CONFIG+=release PREFIX=/usr
lrelease QOwnNotes.pro
make -j${{env.CORES}}
- name: '⚙️ Install linuxdeploy'
run: |
wget https://github.com/linuxdeploy/linuxdeploy/releases/download/1-alpha-20240109-1/linuxdeploy-x86_64.AppImage
wget https://github.com/linuxdeploy/linuxdeploy-plugin-qt/releases/download/1-alpha-20240109-1/linuxdeploy-plugin-qt-x86_64.AppImage
chmod +x linuxdeploy-x86_64.AppImage
chmod +x linuxdeploy-plugin-qt-x86_64.AppImage
- name: '📦 Create AppImage'
run: |
export QMAKE=${{env.REPO_DIR}}/Qt/${{env.QT_VERSION}}/gcc_64/bin/${{env.QMAKE}}
export PATH=${{env.REPO_DIR}}/Qt/${{env.QT_VERSION}}/gcc_64/libexec:$PATH
cp ../icons/icon.png QOwnNotes.png
./linuxdeploy-x86_64.AppImage --appdir ${{env.BUILD_DIR}} -e ${{env.UNIXNAME}} -i ${{env.UNIXNAME}}.png -d PBE.QOwnNotes.desktop --plugin qt
mkdir -p ${{env.BUILD_DIR}}/usr/plugins/iconengines && cp -r ${{env.REPO_DIR}}/Qt/${{env.QT_VERSION}}/gcc_64/plugins/iconengines/libqsvgicon.so ${{env.BUILD_DIR}}/usr/plugins/iconengines
mkdir -p ${{env.BUILD_DIR}}/usr/languages && cp -r languages/*.qm ${{env.BUILD_DIR}}/usr/languages
cp -rL ${{env.REPO_DIR}}/Qt/${{env.QT_VERSION}}/gcc_64/lib/libQt6QmlWorkerScript.so.6 ${{env.BUILD_DIR}}/usr/lib
find ${{env.BUILD_DIR}}
./linuxdeploy-x86_64.AppImage --appdir ${{env.BUILD_DIR}} --output appimage
rm linuxdeploy-x86_64.AppImage
rm linuxdeploy-plugin-qt-x86_64.AppImage
ls -hal *.AppImage
find -iname "*.AppImage"
# It's ok if no file needs to be renamed
mv *.AppImage ${{env.EXECUTABLE}}-x86_64.AppImage ||:
sha256sum ${{env.EXECUTABLE}}-x86_64.AppImage > ${{env.EXECUTABLE}}-x86_64.AppImage.sha256sum
ls -hal *.AppImage
find -iname "*.AppImage"
pwd
- name: '📤 Release AppImage Qt6 for Linux'
uses: actions/upload-release-asset@v1
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
with:
upload_url: ${{ needs.create_release.outputs.upload_url }}
asset_path: ./src/QOwnNotes-x86_64.AppImage
asset_name: QOwnNotes-x86_64-Qt6.AppImage
asset_content_type: application/vnd.appimage
- name: '📤 Release AppImage Qt6 sha256sum'
uses: actions/upload-release-asset@v1
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
with:
upload_url: ${{ needs.create_release.outputs.upload_url }}
asset_path: ./src/QOwnNotes-x86_64.AppImage.sha256sum
asset_name: QOwnNotes-x86_64-Qt6.AppImage.sha256sum
asset_content_type: text/plain
#
# Snap build
#
build-snap:
needs: create_release
runs-on: ubuntu-latest
env:
QT_VERSION: 5.15.2
name: '🐧 Snap Qt 5.15.2'
steps:
- name: '🧰 Checkout'
uses: actions/checkout@v4
with:
submodules: recursive
- name: '⚙️ Set Env'
shell: bash
run: |
export VERSION=$(cat version.h | sed 's/[^0-9,.]//g')
echo "VERSION=${VERSION}" >> $GITHUB_ENV
- name: '⚙️ Install Qt'
uses: jurplel/install-qt-action@v4
with:
version: ${{env.QT_VERSION}}
modules: ${{env.QT_MODULES}}
cache: true
- name: '⚙️ Printenv'
shell: bash
run: |
echo "VERSION=${VERSION}"
printenv
- name: '🚧 Compile application'
uses: snapcore/action-build@v1
id: snapcraft
- name: '📤 Release Snap for Linux'
uses: actions/upload-release-asset@v1
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
with:
upload_url: ${{ needs.create_release.outputs.upload_url }}
asset_path: ./qownnotes_${{ env.VERSION }}_amd64.snap
asset_name: QOwnNotes-amd64.snap
asset_content_type: application/octet-stream
- name: '📤 Deploy Snap'
uses: snapcore/action-publish@v1
continue-on-error: true
env:
# `snapcraft export-login --snaps=qownnotes --acls package_access,package_push,package_update,package_release -`, token valid for one year
SNAPCRAFT_STORE_CREDENTIALS: ${{ secrets.SNAP_TOKEN_GH }}
with:
snap: /home/runner/work/QOwnNotes/QOwnNotes/qownnotes_${{ env.VERSION }}_amd64.snap
release: stable
# - name: '📤 Upload artifact: Snap'
# uses: actions/upload-artifact@v3
# with:
# name: qownnotes_${{ env.VERSION }}_amd64.snap
# path: /home/runner/work/QOwnNotes/QOwnNotes/qownnotes_${{ env.VERSION }}_amd64.snap
#
# Windows build
#
build-windows:
name: '🧊 Windows Qt 5.15.2'
needs: create_release
# https://github.com/pbek/QOwnNotes/issues/2558 error on windows-2022!
runs-on: windows-2019
env:
QT_VERSION: 5.15.2
continue-on-error: true
steps:
- name: '🧰 Checkout'
uses: actions/checkout@v4
with:
submodules: recursive
- name: '⚙️ Install Qt'
uses: jurplel/install-qt-action@v4
with:
aqtversion: '==2.0.0'
version: ${{env.QT_VERSION}}
# https://aqtinstall.readthedocs.io/en/latest/getting_started.html
# https://ddalcino.github.io/aqt-list-server/
arch: win64_mingw81
modules: ${{env.QT_MODULES}}
cache: true
- name: '⚙️ Set Env'
shell: bash
run: |
export VERSION=$(cat version.h | sed 's/[^0-9,.]//g')
echo "VERSION=${VERSION}" >> $GITHUB_ENV
- name: '⚙️ Printenv'
shell: bash
run: |
echo "VERSION=${VERSION}"
printenv
- name: '🚧 Compile application'
run: '& ..\build-systems\github\windows\build-zip.ps1'
# - name: '📤 Upload artifact: Windows'
# uses: actions/upload-artifact@v3
# with:
# name: QOwnNotes.zip
# path: QOwnNotes.zip
# - name: '📤 Upload artifact: Windows sha256sum'
# uses: actions/upload-artifact@v3
# with:
# name: QOwnNotes.zip.sha256
# path: QOwnNotes.zip.sha256
- name: '📤 Release ZIP'
uses: actions/upload-release-asset@v1
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
with:
upload_url: ${{ needs.create_release.outputs.upload_url }}
asset_path: QOwnNotes.zip
asset_name: QOwnNotes.zip
asset_content_type: application/zip
- name: '📤 Release sha256 sum'
uses: actions/upload-release-asset@v1
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
with:
upload_url: ${{ needs.create_release.outputs.upload_url }}
asset_path: QOwnNotes.zip.sha256
asset_name: QOwnNotes.zip.sha256
asset_content_type: text/plain
- name: '📤 Release clickable sha256 sum'
uses: actions/upload-release-asset@v1
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
with:
upload_url: ${{ needs.create_release.outputs.upload_url }}
asset_path: QOwnNotes.zip.sha256sum
asset_name: QOwnNotes.zip.sha256sum
asset_content_type: text/plain
#
# macOS build
#
build-macos:
name: '🍎 macOS Qt 5.15.2'
needs: create_release
runs-on: macos-latest
env:
QT_VERSION: 5.15.2
steps:
- name: '🧰 Checkout'
uses: actions/checkout@v4
with:
submodules: recursive
# https://download.qt.io/online/qtsdkrepository/mac_x64/desktop/
- name: '⚙️ Install Qt'
uses: jurplel/install-qt-action@v4
with:
version: ${{env.QT_VERSION}}
modules: ${{env.QT_MODULES}}
aqtversion: '==2.0.0'
cache: true
- name: '⚙️ Set Env'
shell: bash
run: |
export VERSION=$(cat version.h | sed 's/[^0-9,.]//g')
echo "VERSION=${VERSION}" >> $GITHUB_ENV
- name: '⚙️ Printenv'
shell: bash
run: |
echo "VERSION=${VERSION}"
printenv
# qmake workaround: https://bugreports.qt.io/browse/QTBUG-117225?focusedId=754625&page=com.atlassian.jira.plugin.system.issuetabpanels%3Acomment-tabpanel#comment-754625
# See https://github.com/pbek/QOwnNotes/issues/3018
- name: '🚧 Compile application'
run: |
echo "#define RELEASE \"GitHub Actions\"" > release.h
lrelease QOwnNotes.pro
#ls ${Qt5_Dir}/bin
${{env.QMAKE}} -early QMAKE_DEFAULT_LIBDIRS=$(xcrun -show-sdk-path)/usr/lib
make -j ${{env.CORES}}
../build-systems/github/macos/create-dmg.sh
# - name: '📤 Upload artifact: macOS'
# uses: actions/upload-artifact@v3
# with:
# name: QOwnNotes.dmg
# path: src/QOwnNotes.dmg
- name: '📤 Release DMG'
uses: actions/upload-release-asset@v1
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
with:
upload_url: ${{ needs.create_release.outputs.upload_url }}
asset_path: src/QOwnNotes.dmg
asset_name: QOwnNotes.dmg
asset_content_type: application/x-apple-diskimage
# publish_release:
# name: 📣 Publish release
# runs-on: ubuntu-latest
# needs: [create_release, build-appimage, build-windows, build-macos, build-snap]
# steps:
# - name: 📣 Publish draft release
# uses: eregon/publish-release@v1
# env:
# GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
# with:
# release_id: ${{ needs.create_release.outputs.release_id }}