feat: use fps_mode instead of vsync in ffmpeg (#3283) #2015
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 | |
on: | |
push: | |
paths-ignore: | |
- 'docs/**' | |
- '**.md' | |
pull_request: | |
paths-ignore: | |
- 'docs/**' | |
- '**.md' | |
branches-ignore: | |
- crowdin | |
env: | |
QT_VERSION: 6.6.3 | |
QT_MODULES: qtmultimedia qtimageformats qtnetworkauth qtshadertools | |
IS_RELEASE: ${{ startsWith(github.ref, 'refs/tags/v') }} | |
IS_NIGHTLY: ${{ !startsWith(github.ref, 'refs/tags/v') }} | |
CMAKE_BUILD_PARALLEL_LEVEL: 2 | |
QSCINTILLA_VERSION: 2.14.1 | |
QSCINTILLA_DIR: QScintilla_src-2.14.1 | |
ANDROID_NDK_VERSION: 25.1.8937393 | |
jobs: | |
# Gatekeeper job to skip build for Crowdin PRs | |
gatekeeper: | |
name: Gatekeeper | |
if: startsWith(github.head_ref, 'crowdin') == false | |
runs-on: ubuntu-latest | |
steps: | |
- run: echo "OK" | |
uncrustify: | |
name: Uncrustify | |
runs-on: ubuntu-latest | |
needs: gatekeeper | |
env: | |
UNCRUSTIFY_COMMIT: 8edb7262e855c4271e9e5fc26af93861103e14fa | |
steps: | |
- name: Checkout | |
uses: actions/checkout@v4 | |
with: | |
submodules: recursive | |
- name: Uncrustify cache | |
uses: actions/cache@v4 | |
id: bin-cache | |
with: | |
path: bin | |
key: ${{ runner.os }}-uncrustify-${{ env.UNCRUSTIFY_COMMIT }} | |
- name: Build uncrustify | |
if: steps.bin-cache.outputs.cache-hit != 'true' | |
run: | | |
git clone https://github.com/uncrustify/uncrustify.git uncrustify_git | |
cd uncrustify_git | |
git checkout $UNCRUSTIFY_COMMIT | |
cd .. | |
mkdir uncrustify_build | |
cd uncrustify_build | |
cmake ../uncrustify_git | |
cmake --build . | |
mkdir $GITHUB_WORKSPACE/bin | |
cp uncrustify $GITHUB_WORKSPACE/bin | |
cd .. | |
- name: Add bin to path | |
run: echo "$GITHUB_WORKSPACE/bin" >> $GITHUB_PATH | |
- name: Print uncrustify version | |
run: uncrustify -v | |
- name: Run uncrustify | |
run: ./scripts/uncrustify.sh | |
- name: Check diff | |
run: git diff --exit-code | |
coverage: | |
name: Code coverage | |
runs-on: ubuntu-latest | |
needs: gatekeeper | |
env: | |
COVERAGE: 1 | |
steps: | |
- name: Checkout | |
uses: actions/checkout@v4 | |
with: | |
submodules: recursive | |
- name: Install packages | |
run: | | |
sudo apt update | |
sudo apt install libpulse-dev lcov libxcb-icccm4 libxcb-image0 libxcb-keysyms1 libxcb-render-util0 libxcb-xinerama0 libxkbcommon-x11-0 | |
- name: Install Qt | |
uses: jurplel/install-qt-action@v3 | |
with: | |
cache: true | |
version: ${{ env.QT_VERSION }} | |
modules: ${{ env.QT_MODULES }} | |
- name: Build | |
run: | | |
mkdir build | |
cd build | |
cmake ../src -DCMAKE_BUILD_TYPE=Debug -DNIGHTLY=0 -DCOMMIT="$GITHUB_SHA" -DVERSION="9.9.9" | |
cmake --build . --config Debug --target sites | |
cmake --build . --config Debug | |
- name: Test | |
working-directory: src/lib | |
run: | | |
QT_QPA_PLATFORM=offscreen ../../build/lib/tests/lib-tests | |
QT_QPA_PLATFORM=offscreen ../../build/cli/tests/cli-tests | |
- name: Test GUI | |
working-directory: src/lib | |
run: | | |
QT_QPA_PLATFORM=offscreen ../../build/gui/tests/gui-tests | |
QT_QPA_PLATFORM=offscreen ../../build/crash-reporter/tests/crash-reporter-tests | |
- name: Test sites | |
working-directory: src/sites | |
run: | | |
npm ci | |
npm run test | |
- name: Capture coverage info | |
run: | | |
lcov --directory . --capture --output-file coverage.info | |
lcov --remove coverage.info '/usr/*' "${HOME}"'/.cache/*' --output-file coverage.info | |
lcov --list coverage.info | |
- name: Upload coverage results | |
uses: codecov/codecov-action@v4 | |
with: | |
token: ${{ secrets.CODECOV_TOKEN }} | |
version: | |
name: Version | |
runs-on: ubuntu-latest | |
needs: gatekeeper | |
outputs: | |
version: ${{ steps.get-version.outputs.version }} | |
release: ${{ steps.get-version.outputs.release }} | |
nightly: ${{ steps.get-version.outputs.nightly }} | |
steps: | |
- name: Get version | |
id: get-version | |
run: | | |
if [[ "$IS_RELEASE" == 'true' ]]; then echo "version=${GITHUB_REF##*/}" >> $GITHUB_OUTPUT ; fi | |
if [[ "$IS_RELEASE" != 'true' ]]; then echo "version=nightly" >> $GITHUB_OUTPUT ; fi | |
echo "release=$([ "$IS_RELEASE" = "true" ] && echo "1" || echo "0")" >> $GITHUB_OUTPUT | |
echo "nightly=$([ "$IS_NIGHTLY" = "true" ] && echo "1" || echo "0")" >> $GITHUB_OUTPUT | |
linux: | |
name: Linux | |
runs-on: ubuntu-20.04 | |
needs: version | |
env: | |
GRABBER_VERSION: ${{ needs.version.outputs.version }} | |
GRABBER_IS_NIGHTLY: ${{ needs.version.outputs.nightly }} | |
LINUXDEPLOYQT_VERSION: continuous | |
steps: | |
- name: Checkout | |
uses: actions/checkout@v4 | |
with: | |
submodules: recursive | |
- name: Install dependencies | |
run: | | |
sudo apt update | |
sudo apt install libpulse-dev libxcb-icccm4 libxcb-image0 libxcb-keysyms1 libxcb-render-util0 libxcb-xinerama0 libxcb-cursor0 libxkbcommon-x11-0 libgstreamer-plugins-base1.0-0 zsync xvfb | |
- name: Install Qt | |
uses: jurplel/install-qt-action@v3 | |
with: | |
cache: true | |
version: ${{ env.QT_VERSION }} | |
modules: ${{ env.QT_MODULES }} | |
- name: Vendor cache | |
uses: actions/cache@v4 | |
id: vendor-cache | |
with: | |
path: vendor | |
key: ${{ runner.os }}-vendor-${{ hashFiles('.github/workflows/build.yml') }} | |
- name: Create vendor dir | |
if: steps.vendor-cache.outputs.cache-hit != 'true' | |
run: mkdir vendor | |
- name: Build QScintilla | |
if: steps.vendor-cache.outputs.cache-hit != 'true' | |
working-directory: vendor | |
run: | | |
curl -Lo "QScintilla.zip" "https://www.riverbankcomputing.com/static/Downloads/QScintilla/${QSCINTILLA_VERSION}/QScintilla_src-${QSCINTILLA_VERSION}.zip" | |
7z x "QScintilla.zip" -y | |
rm "QScintilla.zip" | |
cd "${QSCINTILLA_DIR}/src" | |
qmake qscintilla.pro | |
make | |
- name: Install QScintilla | |
working-directory: vendor | |
run: | | |
cd "${QSCINTILLA_DIR}/src" | |
make install | |
- name: Download linuxdeployqt | |
if: steps.vendor-cache.outputs.cache-hit != 'true' | |
working-directory: vendor | |
run: | | |
curl -Lo "linuxdeployqt.AppImage" "https://github.com/probonopd/linuxdeployqt/releases/download/${LINUXDEPLOYQT_VERSION}/linuxdeployqt-${LINUXDEPLOYQT_VERSION}-x86_64.AppImage" | |
chmod a+x linuxdeployqt.AppImage | |
# This driver causes an issue in linuxdeployqt because Mimer SQL is not installed but the plugin depends on it | |
- name: Delete unnecessary SQL driver | |
run: | | |
rm $Qt6_DIR/plugins/sqldrivers/libqsqlmimer.so | |
rm $Qt6_DIR/lib/cmake/Qt6Sql/Qt6QMimerSQLDriverPlugin*.cmake | |
- name: Build | |
run: | | |
mkdir build | |
cd build | |
cmake ../src -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=/usr -DNIGHTLY=$GRABBER_IS_NIGHTLY -DCOMMIT="$GITHUB_SHA" -DVERSION="$GRABBER_VERSION" | |
cmake --build . --config Release --target sites | |
cmake --build . --config Release | |
- name: Test | |
working-directory: src/lib | |
run: | | |
QT_QPA_PLATFORM=offscreen ../../build/lib/tests/lib-tests | |
QT_QPA_PLATFORM=offscreen ../../build/cli/tests/cli-tests | |
- name: Test GUI | |
working-directory: src/lib | |
run: | | |
QT_QPA_PLATFORM=offscreen ../../build/gui/tests/gui-tests | |
QT_QPA_PLATFORM=offscreen ../../build/crash-reporter/tests/crash-reporter-tests | |
- name: Generate AppImage | |
run: | | |
./scripts/package-appimage.sh | |
mv Grabber_*-x86_64.AppImage Grabber-x86_64.AppImage | |
mv Grabber_*-x86_64.AppImage.zsync Grabber-x86_64.AppImage.zsync | |
- name: Upload AppImage | |
uses: actions/upload-artifact@v4 | |
with: | |
name: Grabber-x86_64.AppImage | |
path: Grabber-x86_64.AppImage | |
if-no-files-found: error | |
- name: Upload AppImage update information | |
uses: actions/upload-artifact@v4 | |
with: | |
name: Grabber-x86_64.AppImage.zsync | |
path: Grabber-x86_64.AppImage.zsync | |
if-no-files-found: error | |
- name: Generate archive | |
run: ./scripts/package-linux.sh | |
- name: Upload archive | |
uses: actions/upload-artifact@v4 | |
with: | |
name: Grabber.tar.gz | |
path: Grabber.tar.gz | |
if-no-files-found: error | |
macos: | |
name: macOS | |
runs-on: macos-12 | |
needs: version | |
env: | |
GRABBER_VERSION: ${{ needs.version.outputs.version }} | |
GRABBER_IS_NIGHTLY: ${{ needs.version.outputs.nightly }} | |
OPENSSL_ROOT_DIR: /usr/local/opt/openssl@3 | |
CMAKE_BUILD_PARALLEL_LEVEL: 3 | |
steps: | |
- name: Checkout | |
uses: actions/checkout@v4 | |
with: | |
submodules: recursive | |
- name: Install Qt | |
uses: jurplel/install-qt-action@v3 | |
with: | |
cache: true | |
version: ${{ env.QT_VERSION }} | |
modules: ${{ env.QT_MODULES }} | |
- name: Vendor cache | |
uses: actions/cache@v4 | |
id: vendor-cache | |
with: | |
path: vendor | |
key: ${{ runner.os }}-vendor-${{ hashFiles('.github/workflows/build.yml') }} | |
- name: Create vendor dir | |
if: steps.vendor-cache.outputs.cache-hit != 'true' | |
run: mkdir vendor | |
- name: Build QScintilla | |
if: steps.vendor-cache.outputs.cache-hit != 'true' | |
working-directory: vendor | |
run: | | |
curl -Lo "QScintilla.zip" "https://www.riverbankcomputing.com/static/Downloads/QScintilla/${QSCINTILLA_VERSION}/QScintilla_src-${QSCINTILLA_VERSION}.zip" | |
7z x "QScintilla.zip" -y | |
rm "QScintilla.zip" | |
cd "${QSCINTILLA_DIR}/src" | |
qmake qscintilla.pro | |
make | |
- name: Install QScintilla | |
working-directory: vendor | |
run: | | |
cd "${QSCINTILLA_DIR}/src" | |
make install | |
- name: Build | |
run: | | |
mkdir build | |
cd build | |
cmake ../src -DCMAKE_BUILD_TYPE=Release -DNIGHTLY=$GRABBER_IS_NIGHTLY -DCOMMIT="$GITHUB_SHA" -DVERSION="$GRABBER_VERSION" | |
cmake --build . --config Release --target sites | |
cmake --build . --config Release | |
- name: Test | |
working-directory: src/lib | |
run: | | |
../../build/lib/tests/lib-tests | |
../../build/cli/tests/cli-tests | |
- name: Test GUI | |
working-directory: src/lib | |
run: | | |
../../build/gui/tests/gui-tests | |
../../build/crash-reporter/tests/crash-reporter-tests | |
- name: Generate package | |
run: ./scripts/package-mac.sh | |
- name: Upload package | |
uses: actions/upload-artifact@v4 | |
with: | |
name: Grabber.dmg | |
path: Grabber.dmg | |
if-no-files-found: error | |
windows: | |
name: Windows | |
runs-on: windows-2019 | |
needs: version | |
env: | |
GRABBER_VERSION: ${{ needs.version.outputs.version }} | |
GRABBER_IS_NIGHTLY: ${{ needs.version.outputs.nightly }} | |
MYSQL_DRIVER_URL: https://github.com/thecodemonkey86/qt_mysql_driver/files/14757676/qsqlmysql.dll_Qt_SQL_driver_6.6.3_MSVC2019_64-bit.zip | |
OPENSSL_ROOT_DIR: ${{ github.workspace }}\vendor\OpenSSL | |
MYSQL_DRIVER_DIR: ${{ github.workspace }}\vendor\MySQL_driver | |
VCINSTALLDIR: C:\Program Files (x86)\Microsoft Visual Studio\2019\Enterprise\VC | |
steps: | |
- name: Set environment | |
shell: bash | |
run: echo "BUILD_TYPE=$([ "$GRABBER_IS_NIGHTLY" = "1" ] && echo "Release" || echo "RelWithDebInfo")" >> $GITHUB_ENV | |
- name: Checkout | |
uses: actions/checkout@v4 | |
with: | |
submodules: recursive | |
- name: Install Qt | |
uses: jurplel/install-qt-action@v3 | |
with: | |
cache: true | |
version: ${{ env.QT_VERSION }} | |
modules: ${{ env.QT_MODULES }} | |
- name: Vendor cache | |
uses: actions/cache@v4 | |
id: vendor-cache | |
with: | |
path: vendor | |
key: ${{ runner.os }}-vendor-${{ hashFiles('.github/workflows/build.yml') }} | |
- name: Create vendor dirs | |
if: steps.vendor-cache.outputs.cache-hit != 'true' | |
shell: cmd | |
run: mkdir vendor | |
- name: Build QScintilla | |
if: steps.vendor-cache.outputs.cache-hit != 'true' | |
working-directory: vendor | |
shell: cmd | |
run: | | |
curl -Lo "QScintilla.zip" "https://www.riverbankcomputing.com/static/Downloads/QScintilla/%QSCINTILLA_VERSION%/QScintilla_src-%QSCINTILLA_VERSION%.zip" | |
7z x "QScintilla.zip" -y | |
rm "QScintilla.zip" | |
cd "%QSCINTILLA_DIR%\src" | |
call "%VCINSTALLDIR%\Auxiliary\Build\vcvarsall.bat" x64 | |
qmake qscintilla.pro | |
nmake | |
- name: Install QScintilla | |
working-directory: vendor | |
shell: cmd | |
run: | | |
cd "%QSCINTILLA_DIR%\src" | |
call "%VCINSTALLDIR%\Auxiliary\Build\vcvarsall.bat" x64 | |
nmake install | |
- name: Install OpenSSL | |
if: steps.vendor-cache.outputs.cache-hit != 'true' | |
working-directory: vendor | |
shell: cmd | |
run: | | |
curl -Lo OpenSSL.exe "https://github.com/Bionus/imgbrd-grabber/releases/download/sources-master/Win64OpenSSL-3_1_4.exe" --fail | |
OpenSSL.exe /VERYSILENT /SUPPRESSMSGBOXES /NORESTART /SP- /DIR="%OPENSSL_ROOT_DIR%" | |
rm OpenSSL.exe | |
- name: Download MySQL driver | |
if: steps.vendor-cache.outputs.cache-hit != 'true' | |
working-directory: vendor | |
shell: cmd | |
run: | | |
curl -Lo "mysql_driver.zip" "%MYSQL_DRIVER_URL%" | |
7z x "mysql_driver.zip" -y -o"%MYSQL_DRIVER_DIR%" | |
rm "mysql_driver.zip" | |
- name: Build | |
shell: cmd | |
run: | | |
mkdir build | |
cd build | |
cmake ..\src -G "Visual Studio 16 2019" -A "x64" ^ | |
-DCMAKE_BUILD_TYPE=%BUILD_TYPE% ^ | |
-DCMAKE_SYSTEM_VERSION=10.0.18362.0 ^ | |
-DNIGHTLY=%GRABBER_IS_NIGHTLY% ^ | |
-DCOMMIT="%GITHUB_SHA%" ^ | |
-DVERSION="%GRABBER_VERSION%" ^ | |
-DVERSION_PLATFORM="x64" | |
cmake --build . --config %BUILD_TYPE% --target sites | |
cmake --build . --config %BUILD_TYPE% | |
- name: Test | |
shell: cmd | |
working-directory: src/lib | |
run: | | |
..\..\build\lib\tests\%BUILD_TYPE%\lib-tests.exe | |
..\..\build\cli\tests\%BUILD_TYPE%\cli-tests.exe | |
env: | |
QTDIR: ${{ env.Qt6_Dir }} | |
QT_PLUGIN_PATH: ${{ env.Qt6_Dir }}\plugins | |
- name: Generate installer | |
shell: cmd | |
run: | | |
copy /Y "%MYSQL_DRIVER_DIR%\sqldrivers\*.dll" "%Qt6_Dir%\plugins\sqldrivers" | |
iscc /Q ^ | |
/DMyAppVersion="%GRABBER_VERSION%" ^ | |
/DPlatformName="x64" ^ | |
/DQtDir="%Qt6_Dir%\bin" ^ | |
/DOpenSSLDir="%OPENSSL_ROOT_DIR%" ^ | |
/DMySQLDir="%MYSQL_DRIVER_DIR%" ^ | |
scripts\windows-setup\setup.iss | |
mv scripts/windows-setup/Grabber_*.exe "Grabber_x64.exe | |
- name: Upload installer | |
uses: actions/upload-artifact@v4 | |
with: | |
name: Grabber_x64.exe | |
path: Grabber_x64.exe | |
if-no-files-found: error | |
- name: Generate package | |
shell: cmd | |
run: scripts\package-windows.bat && mv Grabber.zip Grabber_x64.zip | |
- name: Upload package | |
uses: actions/upload-artifact@v4 | |
with: | |
name: Grabber_x64.zip | |
path: Grabber_x64.zip | |
if-no-files-found: error | |
- name: Generate symbols ZIP | |
if: ${{ github.event_name != 'pull_request' && startsWith(github.ref, 'refs/tags/v') }} | |
shell: cmd | |
run: 7z a "Grabber_x64_symbols.zip" ".\build\gui\Grabber.pdb" ".\build\cli\Grabber-cli.pdb" | |
- name: Upload symbols | |
uses: actions/upload-artifact@v4 | |
if: ${{ github.event_name != 'pull_request' && startsWith(github.ref, 'refs/tags/v') }} | |
with: | |
name: Grabber_x64_symbols.zip | |
path: Grabber_x64_symbols.zip | |
if-no-files-found: error | |
android: | |
name: Android | |
runs-on: ubuntu-latest | |
needs: version | |
env: | |
GRABBER_VERSION: ${{ needs.version.outputs.version }} | |
GRABBER_IS_NIGHTLY: ${{ needs.version.outputs.nightly }} | |
steps: | |
- name: Checkout | |
uses: actions/checkout@v4 | |
with: | |
submodules: recursive | |
- name: Install packages | |
run: | | |
sudo apt update | |
sudo apt install libpulse-dev | |
- name: Install Qt (host) | |
uses: jurplel/install-qt-action@v3 | |
with: | |
cache: true | |
version: ${{ env.QT_VERSION }} | |
modules: ${{ env.QT_MODULES }} | |
target: desktop | |
arch: gcc_64 | |
- name: Install Qt (android) | |
uses: jurplel/install-qt-action@v3 | |
with: | |
cache: true | |
version: ${{ env.QT_VERSION }} | |
modules: ${{ env.QT_MODULES }} | |
target: android | |
arch: android_armv7 | |
- name: Install Qt (android ARM64) | |
uses: jurplel/install-qt-action@v3 | |
with: | |
cache: true | |
version: ${{ env.QT_VERSION }} | |
modules: ${{ env.QT_MODULES }} | |
target: android | |
arch: android_arm64_v8a | |
- name: Install Android platform and build tools | |
run: echo "y" | ${ANDROID_HOME}/cmdline-tools/latest/bin/sdkmanager "platforms;android-33" "platform-tools" "build-tools;33.0.0" | |
- name: Install Android NDK 25 | |
run: echo "y" | ${ANDROID_HOME}/cmdline-tools/latest/bin/sdkmanager "ndk;${ANDROID_NDK_VERSION}" | |
- name: Download Android OpenSSL libraries | |
working-directory: src/cmake | |
run: git clone https://github.com/KDAB/android_openssl.git | |
- name: Restore keystore file | |
run: echo "${{ secrets.ANDROID_KEYSTORE_BASE64 }}" | base64 --decode > release.jks | |
- name: Build | |
env: | |
QT_ANDROID_KEYSTORE_PATH: ${{ github.workspace }}/release.jks | |
QT_ANDROID_KEYSTORE_ALIAS: release | |
QT_ANDROID_KEYSTORE_STORE_PASS: ${{ secrets.ANDROID_KEYSTORE_PASSWORD }} | |
Qt6_DIR_HOST: ${{ env.Qt6_DIR }}/../gcc_64 | |
Qt6_DIR_V7: ${{ env.Qt6_DIR }}/../android_armv7 | |
Qt6_DIR_V8: ${{ env.Qt6_DIR }}/../android_arm64_v8a | |
run: | | |
mkdir build | |
cd build | |
export Qt6_DIR=Qt6_DIR_V7 | |
export ANDROID_SDK_ROOT=$ANDROID_HOME | |
export ANDROID_NDK_ROOT="${ANDROID_HOME}/ndk/${ANDROID_NDK_VERSION}" | |
cmake ../src -DCMAKE_BUILD_TYPE=Release -DNIGHTLY=$GRABBER_IS_NIGHTLY -DCOMMIT="$GITHUB_SHA" -DVERSION="$GRABBER_VERSION" \ | |
-DANDROID_ABI:STRING=armeabi-v7a \ | |
-DQT_ANDROID_ABIS:STRING="armeabi-v7a;arm64-v8a" \ | |
-DQT_PATH_ANDROID_ABI_armeabi-v7a:PATH=$Qt6_DIR_V7 \ | |
-DQT_PATH_ANDROID_ABI_arm64-v8a:PATH=$Qt6_DIR_V8 \ | |
-DANDROID_NATIVE_API_LEVEL:STRING=21 \ | |
-DANDROID_NDK:PATH=$ANDROID_NDK_ROOT \ | |
-DANDROID_SDK:PATH=$ANDROID_HOME \ | |
-DANDROID_STL:STRING=c++_shared \ | |
-DQT_HOST_PATH:STRING=$Qt6_DIR_HOST \ | |
-DQT_HOST_PATH_CMAKE_DIR:STRING=$Qt6_DIR_HOST/lib/cmake \ | |
-DCMAKE_CXX_COMPILER:STRING=$ANDROID_NDK_ROOT/toolchains/llvm/prebuilt/linux-x86_64/bin/clang++ \ | |
-DCMAKE_C_COMPILER:STRING=$ANDROID_NDK_ROOT/toolchains/llvm/prebuilt/linux-x86_64/bin/clang \ | |
-DCMAKE_FIND_ROOT_PATH:STRING=$Qt6_DIR_V7 \ | |
-DCMAKE_PREFIX_PATH:STRING=$Qt6_DIR_V7 \ | |
-DCMAKE_TOOLCHAIN_FILE:PATH=$Qt6_DIR_V7/lib/cmake/Qt6/qt.toolchain.cmake \ | |
-DQT_DEBUG_FIND_PACKAGE=ON \ | |
-DQT_QMAKE_EXECUTABLE:STRING=$Qt6_DIR_V7/bin/qmake | |
cmake --build . --config Release --target sites | |
cmake --build . --config Release --target gui-qml_make_apk | |
- name: Generate package | |
run: | | |
mv build/gui-qml/android-build/build/outputs/apk/debug/android-build-debug.apk Grabber.apk 2> /dev/null || true | |
mv build/gui-qml/android-build/build/outputs/apk/release/android-build-release-signed.apk Grabber.apk 2> /dev/null || true | |
- name: Upload package | |
uses: actions/upload-artifact@v4 | |
with: | |
name: Grabber.apk | |
path: Grabber.apk | |
if-no-files-found: error | |
github: | |
name: Upload to GitHub releases | |
runs-on: ubuntu-latest | |
needs: [version, linux, macos, windows, android] | |
if: github.repository == 'Bionus/imgbrd-grabber' && github.event_name == 'push' && (needs.version.outputs.release == '1' || github.ref == 'refs/heads/develop') | |
env: | |
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} | |
VERSION: ${{ needs.version.outputs.version }} | |
steps: | |
- name: Download artifact (Linux AppImage) | |
uses: actions/download-artifact@v4 | |
with: | |
name: Grabber-x86_64.AppImage | |
- name: Download artifact (Linux AppImage update information) | |
uses: actions/download-artifact@v4 | |
with: | |
name: Grabber-x86_64.AppImage.zsync | |
- name: Download artifact (Linux archive) | |
uses: actions/download-artifact@v4 | |
with: | |
name: Grabber.tar.gz | |
- name: Download artifact (macOS) | |
uses: actions/download-artifact@v4 | |
with: | |
name: Grabber.dmg | |
- name: Download artifact (Windows 64-bit installer) | |
uses: actions/download-artifact@v4 | |
with: | |
name: Grabber_x64.exe | |
- name: Download artifact (Windows 64-bit archive) | |
uses: actions/download-artifact@v4 | |
with: | |
name: Grabber_x64.zip | |
- name: Download artifact (Windows 64-bit symbols) | |
uses: actions/download-artifact@v4 | |
if: needs.version.outputs.release == '1' | |
with: | |
name: Grabber_x64_symbols.zip | |
- name: Download artifact (Android) | |
uses: actions/download-artifact@v4 | |
with: | |
name: Grabber.apk | |
- name: Rename artifacts | |
run: | | |
mv Grabber-x86_64.AppImage Grabber_${VERSION}-x86_64.AppImage | |
mv Grabber-x86_64.AppImage.zsync Grabber_${VERSION}-x86_64.AppImage.zsync | |
mv Grabber.tar.gz Grabber_${VERSION}.tar.gz | |
mv Grabber.dmg Grabber_${VERSION}.dmg | |
mv Grabber_x64.exe Grabber_${VERSION}_x64.exe | |
mv Grabber_x64.zip Grabber_${VERSION}_x64.zip | |
mv Grabber.apk Grabber_${VERSION}.apk | |
- name: Rename symbols artifacts | |
if: needs.version.outputs.release == '1' | |
run: | | |
mv Grabber_x64_symbols.zip Grabber_${VERSION}_x64_symbols.zip | |
- name: Get date for Nightly body | |
id: date | |
if: needs.version.outputs.nightly == '1' | |
run: echo "date=$(date +'%Y-%m-%d %H:%M:%S %Z')" >> $GITHUB_OUTPUT | |
- name: Nightly | |
uses: ncipollo/release-action@v1 | |
if: needs.version.outputs.nightly == '1' | |
with: | |
token: ${{ secrets.GITHUB_TOKEN }} | |
tag: nightly | |
name: Nightly | |
allowUpdates: true | |
draft: false | |
prerelease: true | |
artifacts: Grabber_* | |
body: | | |
Nightly automated builds from the develop branch. | |
Automatically uploaded by GitHub actions, **use at your own risk**! | |
**Head:** ${{ github.sha }} | |
**Date:** ${{ steps.date.outputs.date }} | |
- name: Release | |
uses: ncipollo/release-action@v1 | |
if: needs.version.outputs.release == '1' | |
with: | |
token: ${{ secrets.GITHUB_TOKEN }} | |
allowUpdates: true | |
draft: true | |
artifacts: Grabber_* |