#3145 doc: fix grammar #439
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: 📣 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 }} |