New Crowdin updates #1644
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: 5.15.2 | |
QT_MODULES: qtnetworkauth | |
IS_RELEASE: ${{ startsWith(github.ref, 'refs/tags/v') }} | |
IS_NIGHTLY: ${{ !startsWith(github.ref, 'refs/tags/v') }} | |
CMAKE_BUILD_PARALLEL_LEVEL: 2 | |
QSCINTILLA_VERSION: 2.13.0 | |
QSCINTILLA_DIR: QScintilla_src-2.13.0 | |
ANDROID_NDK_VERSION: 21.4.7075529 | |
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@v3 | |
with: | |
submodules: recursive | |
- name: Uncrustify cache | |
uses: actions/cache@v3 | |
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@v3 | |
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: | | |
xvfb-run -a ../../build/lib/tests/lib-tests | |
xvfb-run -a ../../build/cli/tests/cli-tests | |
- name: Test GUI | |
working-directory: src/lib | |
run: | | |
xvfb-run -a ../../build/gui/tests/gui-tests | |
xvfb-run -a ../../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@v3 | |
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@v3 | |
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 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@v3 | |
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 | |
- 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: | | |
xvfb-run -a ../../build/lib/tests/lib-tests | |
xvfb-run -a ../../build/cli/tests/cli-tests | |
- name: Test GUI | |
working-directory: src/lib | |
run: | | |
xvfb-run -a ../../build/gui/tests/gui-tests | |
xvfb-run -a ../../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@v3 | |
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@v3 | |
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@v3 | |
with: | |
name: Grabber.tar.gz | |
path: Grabber.tar.gz | |
if-no-files-found: error | |
macos: | |
name: macOS | |
runs-on: macos-11 | |
needs: version | |
env: | |
GRABBER_VERSION: ${{ needs.version.outputs.version }} | |
GRABBER_IS_NIGHTLY: ${{ needs.version.outputs.nightly }} | |
OPENSSL_ROOT_DIR: /usr/local/opt/[email protected] | |
CMAKE_BUILD_PARALLEL_LEVEL: 3 | |
steps: | |
- name: Checkout | |
uses: actions/checkout@v3 | |
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@v3 | |
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@v3 | |
with: | |
name: Grabber.dmg | |
path: Grabber.dmg | |
if-no-files-found: error | |
windows: | |
name: Windows (${{ matrix.arch }}-bit) | |
runs-on: windows-2019 | |
needs: version | |
strategy: | |
fail-fast: false | |
matrix: | |
include: | |
- arch: 32 | |
qt_arch: win32_msvc2019 | |
cmake_platform: Win32 | |
suffix: x86 | |
- arch: 64 | |
qt_arch: win64_msvc2019_64 | |
cmake_platform: x64 | |
suffix: x64 | |
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/5575770/qsqlmysql.dll_Qt_SQL_driver_5.15.2_MSVC2019_64-bit.zip | |
OPENSSL_ROOT_DIR: ${{ github.workspace }}\vendor\OpenSSL | |
MYSQL_DRIVER_DIR: ${{ github.workspace }}\vendor\MySQL_driver | |
APNG_PLUGIN_DLL: ${{ github.workspace }}\vendor\APNG\plugins\imageformats\qapng.dll | |
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@v3 | |
with: | |
submodules: recursive | |
- name: Install Qt | |
uses: jurplel/install-qt-action@v3 | |
with: | |
cache: true | |
version: ${{ env.QT_VERSION }} | |
modules: ${{ env.QT_MODULES }} | |
arch: ${{ matrix.qt_arch }} | |
- name: Vendor cache | |
uses: actions/cache@v3 | |
id: vendor-cache | |
with: | |
path: vendor | |
key: ${{ runner.os }}-${{ matrix.arch }}-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" ${{ matrix.suffix }} | |
qmake qscintilla.pro | |
nmake | |
- name: Install QScintilla | |
working-directory: vendor | |
shell: cmd | |
run: | | |
cd "%QSCINTILLA_DIR%\src" | |
call "%VCINSTALLDIR%\Auxiliary\Build\vcvarsall.bat" ${{ matrix.suffix }} | |
nmake install | |
- name: Install OpenSSL | |
if: steps.vendor-cache.outputs.cache-hit != 'true' | |
working-directory: vendor | |
shell: cmd | |
run: | | |
if "${{ matrix.suffix }}"=="x86" (set "OPENSSL_PREFIX=Win32OpenSSL") else (set "OPENSSL_PREFIX=Win64OpenSSL") | |
curl -Lo OpenSSL.exe "https://slproweb.com/download/%OPENSSL_PREFIX%-1_1_1u.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 APNG plugin | |
if: steps.vendor-cache.outputs.cache-hit != 'true' | |
working-directory: vendor | |
shell: cmd | |
run: | | |
git clone https://github.com/Skycoder42/QtApng APNG | |
cd APNG | |
git checkout $(git tag | tail -1) | |
call "%VCINSTALLDIR%\Auxiliary\Build\vcvarsall.bat" ${{ matrix.suffix }} | |
qmake "CONFIG += libpng_static" | |
nmake | |
- name: Build | |
shell: cmd | |
run: | | |
mkdir build | |
cd build | |
cmake ..\src -G "Visual Studio 16 2019" -A "${{ matrix.cmake_platform }}" ^ | |
-DCMAKE_BUILD_TYPE=%BUILD_TYPE% ^ | |
-DNIGHTLY=%GRABBER_IS_NIGHTLY% ^ | |
-DCOMMIT="%GITHUB_SHA%" ^ | |
-DVERSION="%GRABBER_VERSION%" ^ | |
-DVERSION_PLATFORM="${{ matrix.suffix }}" | |
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.Qt5_Dir }} | |
QT_PLUGIN_PATH: ${{ env.Qt5_Dir }}\plugins | |
- name: Generate installer | |
shell: cmd | |
run: | | |
copy /Y "%MYSQL_DRIVER_DIR%\sqldrivers\*.dll" "%Qt5_Dir%\plugins\sqldrivers" | |
iscc /Q ^ | |
/DMyAppVersion="%GRABBER_VERSION%" ^ | |
/DPlatformName="${{ matrix.suffix }}" ^ | |
/DQtDir="%Qt5_Dir%\bin" ^ | |
/DOpenSSLDir="%OPENSSL_ROOT_DIR%" ^ | |
/DMySQLDir="%MYSQL_DRIVER_DIR%" ^ | |
/DQtApngDll="%APNG_PLUGIN_DLL%" ^ | |
scripts\windows-setup\setup.iss | |
mv scripts/windows-setup/Grabber_*.exe "Grabber_${{ matrix.suffix }}.exe | |
- name: Upload installer | |
uses: actions/upload-artifact@v3 | |
with: | |
name: Grabber_${{ matrix.suffix }}.exe | |
path: Grabber_${{ matrix.suffix }}.exe | |
if-no-files-found: error | |
- name: Generate package | |
shell: cmd | |
run: scripts\package-windows.bat && mv Grabber.zip Grabber_${{ matrix.suffix }}.zip | |
- name: Upload package | |
uses: actions/upload-artifact@v3 | |
with: | |
name: Grabber_${{ matrix.suffix }}.zip | |
path: Grabber_${{ matrix.suffix }}.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_${{ matrix.suffix }}_symbols.zip" ".\build\gui\Grabber.pdb" ".\build\cli\Grabber-cli.pdb" | |
- name: Upload symbols | |
uses: actions/upload-artifact@v3 | |
if: ${{ github.event_name != 'pull_request' && startsWith(github.ref, 'refs/tags/v') }} | |
with: | |
name: Grabber_${{ matrix.suffix }}_symbols.zip | |
path: Grabber_${{ matrix.suffix }}_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@v3 | |
with: | |
submodules: recursive | |
- name: Install packages | |
run: | | |
sudo apt update | |
sudo apt install libpulse-dev | |
- name: Install Qt | |
uses: jurplel/install-qt-action@v3 | |
with: | |
cache: true | |
version: ${{ env.QT_VERSION }} | |
modules: ${{ env.QT_MODULES }} | |
target: android | |
arch: android | |
# Necessary as Qt 5.15 depends on NDK 21 and Github Actions use NDK 25 by default | |
- name: Install Android NDK 21 | |
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 | |
cd android_openssl | |
git checkout f5d857ef1d437595f7c3ab0d06e61beae7ca8b99 | |
- name: Restore keystore file | |
run: echo "${{ secrets.ANDROID_KEYSTORE_BASE64 }}" | base64 --decode > release.jks | |
- name: Build | |
run: | | |
mkdir build | |
cd build | |
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" -DKEYSTORE_PASSWORD="${{ secrets.ANDROID_KEYSTORE_PASSWORD }}" \ | |
-DANDROID_ABI:STRING=armeabi-v7a \ | |
-DANDROID_BUILD_ABI_arm64-v8a:BOOL=OFF \ | |
-DANDROID_BUILD_ABI_armeabi-v7a:BOOL=ON \ | |
-DANDROID_BUILD_ABI_x86:BOOL=OFF \ | |
-DANDROID_BUILD_ABI_x86_64:BOOL=OFF \ | |
-DANDROID_NATIVE_API_LEVEL:STRING=21 \ | |
-DANDROID_NDK:PATH=$ANDROID_NDK_ROOT \ | |
-DANDROID_SDK:PATH=$ANDROID_HOME \ | |
-DQT_ANDROID_NDK_ROOT:PATH=$ANDROID_NDK_ROOT \ | |
-DQT_ANDROID_SDK_ROOT:PATH=$ANDROID_HOME \ | |
-DANDROID_STL:STRING=c++_shared \ | |
-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=$Qt5_DIR \ | |
-DCMAKE_PREFIX_PATH:STRING=$Qt5_DIR \ | |
-DCMAKE_TOOLCHAIN_FILE:PATH=$ANDROID_NDK_ROOT/build/cmake/android.toolchain.cmake \ | |
-DQT_QMAKE_EXECUTABLE:STRING=$Qt5_DIR/bin/qmake | |
cmake --build . --config Release --target sites | |
cmake --build . --config Release --target gui-qml_apk | |
- name: Generate package | |
run: | | |
mv build/gui-qml/gui-qml-armeabi-v7a/build/outputs/apk/debug/gui-qml-armeabi-v7a-debug.apk Grabber.apk 2> /dev/null || true | |
mv build/gui-qml/gui-qml-armeabi-v7a/build/outputs/apk/release/gui-qml-armeabi-v7a-release-signed.apk Grabber.apk 2> /dev/null || true | |
- name: Upload package | |
uses: actions/upload-artifact@v3 | |
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@v3 | |
with: | |
name: Grabber-x86_64.AppImage | |
- name: Download artifact (Linux AppImage update information) | |
uses: actions/download-artifact@v3 | |
with: | |
name: Grabber-x86_64.AppImage.zsync | |
- name: Download artifact (Linux archive) | |
uses: actions/download-artifact@v3 | |
with: | |
name: Grabber.tar.gz | |
- name: Download artifact (macOS) | |
uses: actions/download-artifact@v3 | |
with: | |
name: Grabber.dmg | |
- name: Download artifact (Windows 32-bit installer) | |
uses: actions/download-artifact@v3 | |
with: | |
name: Grabber_x86.exe | |
- name: Download artifact (Windows 32-bit archive) | |
uses: actions/download-artifact@v3 | |
with: | |
name: Grabber_x86.zip | |
- name: Download artifact (Windows 32-bit symbols) | |
uses: actions/download-artifact@v3 | |
if: needs.version.outputs.release == '1' | |
with: | |
name: Grabber_x86_symbols.zip | |
- name: Download artifact (Windows 64-bit installer) | |
uses: actions/download-artifact@v3 | |
with: | |
name: Grabber_x64.exe | |
- name: Download artifact (Windows 64-bit archive) | |
uses: actions/download-artifact@v3 | |
with: | |
name: Grabber_x64.zip | |
- name: Download artifact (Windows 64-bit symbols) | |
uses: actions/download-artifact@v3 | |
if: needs.version.outputs.release == '1' | |
with: | |
name: Grabber_x64_symbols.zip | |
- name: Download artifact (Android) | |
uses: actions/download-artifact@v3 | |
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_x86.exe Grabber_${VERSION}_x86.exe | |
mv Grabber_x86.zip Grabber_${VERSION}_x86.zip | |
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_x86_symbols.zip Grabber_${VERSION}_x86_symbols.zip | |
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_* |