Merge branch 'master' of https://github.com/VioletGiraffe/file-commander #273
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: CI | |
on: [push, pull_request, workflow_dispatch] | |
env: | |
# Path to the solution file relative to the root of the project. | |
SOLUTION_FILE_PATH: . | |
# Configuration type to build. | |
# You can convert this to a build matrix if you need coverage of multiple configuration types. | |
# https://docs.github.com/actions/learn-github-actions/managing-complex-workflows#using-a-build-matrix | |
BUILD_CONFIGURATION: Release | |
jobs: | |
build: | |
name: Build & test on ${{ matrix.os }} with ${{ matrix.compiler }} | |
runs-on: ${{ matrix.os }} | |
strategy: | |
fail-fast: false | |
matrix: | |
os: [ubuntu-latest, macos-12, windows-latest] | |
steps: | |
- name: Checkout | |
uses: actions/checkout@v3 | |
- name: Checkout subrepos | |
if: "!startsWith(matrix.os, 'windows')" | |
run: ./update_repository.sh | |
- name: Checkout subrepos | |
if: "startsWith(matrix.os, 'windows')" | |
shell: cmd | |
run: update_repository.bat | |
- name: Sys info | |
if: "startsWith(matrix.os, 'windows')" | |
run: wmic cpu get name, numberofcores, maxclockspeed | |
- name: Sys info | |
if: "startsWith(matrix.os, 'mac')" | |
run: sysctl -a | grep cpu | grep hw | |
- name: Sys info | |
if: "startsWith(matrix.os, 'ubuntu')" | |
run: | | |
echo $GITHUB_REF | |
echo "github.ref_name=${{github.ref_name}}" | |
lscpu | |
- name: Install Qt | |
if: "startsWith(matrix.os, 'windows')" | |
uses: jurplel/install-qt-action@v3 | |
with: | |
version: '6.6.1' | |
arch: 'win64_msvc2019_64' | |
archives: 'qtbase icu qtsvg' | |
modules: 'qt5compat qtimageformats' | |
- name: Install Qt | |
if: "startsWith(matrix.os, 'ubuntu')" | |
uses: jurplel/install-qt-action@v3 | |
with: | |
version: '6.6.1' | |
arch: 'gcc_64' | |
archives: 'qtbase icu qtsvg' | |
modules: 'qt5compat qtimageformats' | |
- name: Install Qt | |
if: "startsWith(matrix.os, 'macos')" | |
uses: jurplel/install-qt-action@v3 | |
with: | |
version: '6.6.1' | |
arch: 'clang_64' | |
archives: 'qtbase icu qtsvg' | |
modules: 'qt5compat qtimageformats' | |
- name: Windows - setup MSBuild | |
if: startsWith(matrix.os, 'windows') | |
uses: microsoft/setup-msbuild@v1 | |
- name: Windows - building main installer | |
if: startsWith(matrix.os, 'windows') | |
shell: cmd | |
run: | | |
%Qt6_DIR%\bin\qmake.exe -v | |
set QTDIR64=%Qt6_DIR% | |
cd installer\windows\ | |
create_installer.bat | |
cd ..\.. | |
xcopy /R /Y .\installer\windows\binaries\64\msvcr\* .\bin\release\x64\ | |
xcopy /R /Y .\installer\windows\binaries\64\Qt\* .\bin\release\x64\ | |
- name: Mac | |
if: startsWith(matrix.os, 'macos') | |
working-directory: ${{env.GITHUB_WORKSPACE}} | |
run: | | |
clang --version | |
./installer/mac/create_dmg.sh $Qt6_DIR | |
- name: Linux | |
if: startsWith(matrix.os, 'ubuntu') | |
working-directory: ${{env.GITHUB_WORKSPACE}} | |
run: | | |
export QT_DEBUG_PLUGINS=1 | |
sudo apt update -y; sudo apt install -qq gcc-12 g++-12 libglu1-mesa-dev libx11-xcb-dev '^libxcb*' '^libxkb*' libfuse2 | |
sudo update-alternatives --install /usr/bin/g++ g++ /usr/bin/g++-12 50 | |
sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-12 50 | |
g++ --version | |
export PATH=$Qt6_DIR/bin/:$PATH | |
wget -c -nv "https://github.com/probonopd/linuxdeployqt/releases/download/7/linuxdeployqt-7-x86_64.AppImage" | |
chmod a+x linuxdeployqt-7-x86_64.AppImage | |
unset QTDIR; unset QT_PLUGIN_PATH ; unset LD_LIBRARY_PATH | |
$Qt6_DIR/bin/qmake -r CONFIG+=release | |
make -j | |
# Linux: building AppImage | |
cp ./qt-app/resources/icon.png ./bin/release/x64/ | |
cp ./installer/linux/file_commander.desktop ./bin/release/x64/ | |
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:${Qt6_DIR}/lib/ | |
sudo ldconfig | |
./linuxdeployqt-7-x86_64.AppImage ./bin/release/x64/FileCommander -appimage -unsupported-allow-new-glibc -bundle-non-qt-libs -qmake=$Qt6_DIR/bin/qmake -executable=./bin/release/x64/libplugin_filecomparison.so.1.0.0 -executable=./bin/release/x64/libplugin_imageviewer.so.1.0.0 -executable=./bin/release/x64/libplugin_textviewer.so.1.0.0 | |
ls -Ac | |
mv ./File_Commander*.AppImage ./FileCommander.AppImage | |
- name: Test launch | |
if: startsWith(matrix.os, 'macos') | |
run: ./bin/release/x64/FileCommander.app/Contents/MacOS/FileCommander --test-launch | |
- name: Test launch | |
if: startsWith(matrix.os, 'ubuntu') | |
run: | | |
xvfb-run --auto-servernum ./bin/release/x64/FileCommander --test-launch | |
- name: Test launch | |
if: startsWith(matrix.os, 'widows') | |
run: | | |
.\bin\release\x64\FileCommander.exe --test-launch | |
- name: Building tests - Windows | |
if: startsWith(matrix.os, 'windows') | |
working-directory: ${{env.GITHUB_WORKSPACE}} | |
shell: cmd | |
run: | | |
cd file-commander-core\core-tests\ | |
dir | |
call "%programfiles%\Microsoft Visual Studio\2022\Enterprise\VC\Auxiliary\Build\vcvarsall.bat" amd64 && "%Qt6_DIR%\bin\qmake.exe" -tp vc -r | |
msbuild /t:Build /p:Configuration=Release;PlatformToolset=v143 core-tests.sln | |
cd ..\.. | |
- name: Running tests - Windows | |
if: startsWith(matrix.os, 'windows') | |
shell: powershell | |
run: | | |
.\bin\release\x64\fso_test.exe | |
.\bin\release\x64\fso_test_high_level.exe | |
For ($i=1; $i -le 20; $i++) { | |
$randomSeed = ((get-date -Uformat %s).remove(10, 1)); | |
$randomSeed = $randomSeed.substring($randomSeed.Length - 8); | |
& .\bin\release\x64\operationperformer_test.exe --std-seed $randomSeed; | |
} | |
$randomSeed = ((get-date -Uformat %s).remove(10, 1)); | |
$randomSeed = $randomSeed.substring($randomSeed.Length - 8); | |
& .\bin\release\x64\filecomparator_test.exe --std-seed $randomSeed; | |
- name: Building tests - Mac | |
if: startsWith(matrix.os, 'macos') | |
run: | | |
cd file-commander-core/core-tests | |
$Qt6_DIR/bin/qmake -r CONFIG+=release | |
make -j | |
cd ../../ | |
for f in $(find bin/release/x64/ -name *.app); do $Qt6_DIR/bin/macdeployqt $f; done | |
- name: Running tests - Mac | |
if: startsWith(matrix.os, 'macos') | |
run: | | |
set -e; ./bin/release/x64/fso_test.app/Contents/MacOS/fso_test | |
set -e; ./bin/release/x64/fso_test_high_level.app/Contents/MacOS/fso_test_high_level | |
set -e; for i in `seq 1 20`; do ./bin/release/x64/operationperformer_test.app/Contents/MacOS/operationperformer_test --std-seed $(date +%s); sleep 1; done | |
set -e; ./bin/release/x64/filecomparator_test.app/Contents/MacOS/filecomparator_test --std-seed $(date +%s) | |
- name: Building tests - Linux | |
if: startsWith(matrix.os, 'ubuntu') | |
run: | | |
cd file-commander-core/core-tests | |
$Qt6_DIR/bin/qmake -r CONFIG+=release | |
make -j | |
cd ../../ | |
for f in $(find bin/release/x64/ -name *.app); do $Qt6_DIR/bin/macdeployqt $f; done | |
./linuxdeployqt-7-x86_64.AppImage ./bin/release/x64/fso_test -unsupported-allow-new-glibc -bundle-non-qt-libs | |
./linuxdeployqt-7-x86_64.AppImage ./bin/release/x64/fso_test_high_level -unsupported-allow-new-glibc -bundle-non-qt-libs | |
./linuxdeployqt-7-x86_64.AppImage ./bin/release/x64/operationperformer_test -unsupported-allow-new-glibc -bundle-non-qt-libs | |
./linuxdeployqt-7-x86_64.AppImage ./bin/release/x64/filecomparator_test -unsupported-allow-new-glibc -bundle-non-qt-libs | |
- name: Running tests - Linux | |
if: startsWith(matrix.os, 'ubuntu') | |
run: | | |
set -e; ./bin/release/x64/fso_test | |
set -e; ./bin/release/x64/fso_test_high_level | |
set -e; for i in `seq 1 20`; do ./bin/release/x64/operationperformer_test --std-seed $(date +%s); sleep 1; done | |
set -e; ./bin/release/x64/filecomparator_test --std-seed $(date +%s) | |
- name: Archive DMG | |
if: success() && startsWith(matrix.os, 'macos') | |
uses: actions/upload-artifact@v3 | |
with: | |
name: FileCommander.dmg | |
path: FileCommander.dmg | |
- name: Archive AppImage | |
if: success() && startsWith(matrix.os, 'ubuntu') | |
uses: actions/upload-artifact@v3 | |
with: | |
name: FileCommander.AppImage | |
path: FileCommander.AppImage | |
- name: Archive Installer | |
if: success() && startsWith(matrix.os, 'windows') | |
uses: actions/upload-artifact@v3 | |
with: | |
name: FileCommander.exe | |
path: installer/windows/FileCommander.exe | |
create-release: | |
needs: build | |
if: success() && startsWith(github.ref, 'refs/tags/') | |
runs-on: ubuntu-latest | |
steps: | |
- name: Download EXE | |
uses: actions/[email protected] | |
with: | |
name: FileCommander.exe | |
path: . | |
- name: Download DMG | |
uses: actions/[email protected] | |
with: | |
name: FileCommander.dmg | |
path: . | |
- name: Download AppImage | |
uses: actions/[email protected] | |
with: | |
name: FileCommander.AppImage | |
path: . | |
- name: Create Release | |
uses: softprops/action-gh-release@v1 | |
if: success() && startsWith(github.ref, 'refs/tags/') | |
with: | |
files: | | |
FileCommander.exe | |
FileCommander.dmg | |
FileCommander.AppImage | |
token: ${{ secrets.GITHUB_TOKEN }} | |
tag_name: ${{ github.ref }} | |
name: ${{ github.ref_name }} |