mirror of
https://github.com/Chatterino/chatterino2.git
synced 2024-11-13 19:49:51 +01:00
28744810c4
Normalize cache method between build and test workflow Normalize Qt install method between build and test workflow Add explicit Qt version in test workflow Allow builds to be triggered through workflow dispatch https://docs.github.com/en/actions/using-workflows/events-that-trigger-workflows#workflow_dispatch
393 lines
13 KiB
YAML
393 lines
13 KiB
YAML
---
|
|
name: Build
|
|
|
|
on:
|
|
push:
|
|
branches:
|
|
- master
|
|
pull_request:
|
|
workflow_dispatch:
|
|
|
|
concurrency:
|
|
group: build-${{ github.ref }}
|
|
cancel-in-progress: true
|
|
|
|
jobs:
|
|
build:
|
|
runs-on: ${{ matrix.os }}
|
|
strategy:
|
|
matrix:
|
|
os: [windows-latest, ubuntu-latest, macos-latest]
|
|
qt-version: [5.15.2, 5.12.12]
|
|
build-system: [qmake, cmake]
|
|
pch: [true]
|
|
include:
|
|
- os: ubuntu-latest
|
|
qt-version: 5.15.2
|
|
build-system: cmake
|
|
pch: false
|
|
fail-fast: false
|
|
|
|
steps:
|
|
- name: Set environment variables for windows-latest
|
|
if: matrix.os == 'windows-latest'
|
|
run: |
|
|
echo "vs_version=2022" >> $GITHUB_ENV
|
|
shell: bash
|
|
|
|
- uses: actions/checkout@v3
|
|
with:
|
|
submodules: true
|
|
fetch-depth: 0 # allows for tags access
|
|
|
|
- name: Cache Qt
|
|
id: cache-qt
|
|
uses: actions/cache@v3
|
|
with:
|
|
path: "${{ github.workspace }}/qt/"
|
|
key: ${{ runner.os }}-QtCache-${{ matrix.qt-version }}
|
|
|
|
# LINUX
|
|
- name: Install Qt
|
|
uses: jurplel/install-qt-action@v2
|
|
with:
|
|
cached: ${{ steps.cache-qt.outputs.cache-hit }}
|
|
version: ${{ matrix.qt-version }}
|
|
dir: "${{ github.workspace }}/qt/"
|
|
|
|
# WINDOWS
|
|
- name: Cache conan packages part 1
|
|
if: startsWith(matrix.os, 'windows')
|
|
uses: actions/cache@v3
|
|
with:
|
|
key: ${{ runner.os }}-conan-user-${{ hashFiles('**/conanfile.txt') }}
|
|
path: ~/.conan/
|
|
|
|
- name: Cache conan packages part 2
|
|
if: startsWith(matrix.os, 'windows')
|
|
uses: actions/cache@v3
|
|
with:
|
|
key: ${{ runner.os }}-conan-root-${{ hashFiles('**/conanfile.txt') }}
|
|
path: C:/.conan/
|
|
|
|
- name: Add Conan to path
|
|
if: startsWith(matrix.os, 'windows')
|
|
run: echo "C:\Program Files\Conan\conan\" | Out-File -FilePath $env:GITHUB_PATH -Encoding utf8 -Append
|
|
|
|
- name: Install dependencies (Windows)
|
|
if: startsWith(matrix.os, 'windows')
|
|
run: |
|
|
choco install conan -y
|
|
|
|
- name: Enable Developer Command Prompt
|
|
if: startsWith(matrix.os, 'windows')
|
|
uses: ilammy/msvc-dev-cmd@v1.10.0
|
|
|
|
- name: Build (Windows)
|
|
if: startsWith(matrix.os, 'windows') && matrix.build-system == 'qmake'
|
|
run: |
|
|
mkdir build
|
|
cd build
|
|
conan install .. -b missing
|
|
qmake ..
|
|
set cl=/MP
|
|
nmake /S /NOLOGO
|
|
windeployqt release/chatterino.exe --release --no-compiler-runtime --no-translations --no-opengl-sw --dir Chatterino2/
|
|
cp release/chatterino.exe Chatterino2/
|
|
echo nightly > Chatterino2/modes
|
|
7z a chatterino-windows-x86-64.zip Chatterino2/
|
|
|
|
- name: Build with CMake (Windows)
|
|
if: startsWith(matrix.os, 'windows') && matrix.build-system == 'cmake'
|
|
run: |
|
|
mkdir build
|
|
cd build
|
|
conan install .. -b missing
|
|
cmake -G"NMake Makefiles" -DCMAKE_BUILD_TYPE=Release -DUSE_CONAN=ON ..
|
|
set cl=/MP
|
|
nmake /S /NOLOGO
|
|
windeployqt bin/chatterino.exe --release --no-compiler-runtime --no-translations --no-opengl-sw --dir Chatterino2/
|
|
cp bin/chatterino.exe Chatterino2/
|
|
echo nightly > Chatterino2/modes
|
|
7z a chatterino-windows-x86-64.zip Chatterino2/
|
|
|
|
- name: Upload artifact (Windows)
|
|
if: startsWith(matrix.os, 'windows')
|
|
uses: actions/upload-artifact@v3
|
|
with:
|
|
name: chatterino-windows-x86-64-${{ matrix.qt-version }}-${{ matrix.build-system }}.zip
|
|
path: build/chatterino-windows-x86-64.zip
|
|
|
|
- name: Clean Conan pkgs
|
|
if: startsWith(matrix.os, 'windows')
|
|
run: conan remove "*" -fsb
|
|
shell: bash
|
|
|
|
# LINUX
|
|
- name: Install dependencies (Ubuntu)
|
|
if: startsWith(matrix.os, 'ubuntu')
|
|
run: |
|
|
sudo apt-get update
|
|
sudo apt-get -y install \
|
|
cmake \
|
|
virtualenv \
|
|
rapidjson-dev \
|
|
libssl-dev \
|
|
libboost-dev \
|
|
libxcb-randr0-dev \
|
|
libboost-system-dev \
|
|
libboost-filesystem-dev \
|
|
libpulse-dev \
|
|
libxkbcommon-x11-0 \
|
|
libgstreamer-plugins-base1.0-0 \
|
|
build-essential \
|
|
libgl1-mesa-dev \
|
|
libxcb-icccm4 \
|
|
libxcb-image0 \
|
|
libxcb-keysyms1 \
|
|
libxcb-render-util0 \
|
|
libxcb-xinerama0
|
|
|
|
- name: Build (Ubuntu)
|
|
if: startsWith(matrix.os, 'ubuntu') && matrix.build-system == 'qmake'
|
|
run: |
|
|
mkdir build
|
|
cd build
|
|
qmake PREFIX=/usr ..
|
|
make -j$(nproc)
|
|
shell: bash
|
|
|
|
- name: Build with CMake (Ubuntu)
|
|
if: startsWith(matrix.os, 'ubuntu') && matrix.build-system == 'cmake'
|
|
run: |
|
|
mkdir build
|
|
cd build
|
|
cmake \
|
|
-DCMAKE_INSTALL_PREFIX=appdir/usr/ \
|
|
-DCMAKE_BUILD_TYPE=Release \
|
|
-DPAJLADA_SETTINGS_USE_BOOST_FILESYSTEM=On \
|
|
-DUSE_PRECOMPILED_HEADERS=${{ matrix.pch }} \
|
|
..
|
|
make -j$(nproc)
|
|
shell: bash
|
|
|
|
- name: Package - AppImage (Ubuntu)
|
|
if: startsWith(matrix.os, 'ubuntu')
|
|
run: |
|
|
cd build
|
|
sh ./../.CI/CreateAppImage.sh
|
|
shell: bash
|
|
|
|
- name: Package - .deb (Ubuntu)
|
|
if: startsWith(matrix.os, 'ubuntu')
|
|
run: |
|
|
cd build
|
|
sh ./../.CI/CreateUbuntuDeb.sh
|
|
shell: bash
|
|
|
|
- name: Upload artifact - AppImage (Ubuntu)
|
|
if: startsWith(matrix.os, 'ubuntu')
|
|
uses: actions/upload-artifact@v3
|
|
with:
|
|
name: Chatterino-x86_64-${{ matrix.qt-version }}-${{ matrix.build-system }}.AppImage
|
|
path: build/Chatterino-x86_64.AppImage
|
|
|
|
- name: Upload artifact - .deb (Ubuntu)
|
|
if: startsWith(matrix.os, 'ubuntu')
|
|
uses: actions/upload-artifact@v3
|
|
with:
|
|
name: Chatterino-${{ matrix.qt-version }}-${{ matrix.build-system }}.deb
|
|
path: build/Chatterino.deb
|
|
|
|
# MACOS
|
|
- name: Install dependencies (MacOS)
|
|
if: startsWith(matrix.os, 'macos')
|
|
run: |
|
|
brew install boost openssl rapidjson p7zip create-dmg cmake tree
|
|
shell: bash
|
|
|
|
- name: Build (MacOS)
|
|
if: startsWith(matrix.os, 'macos') && matrix.build-system == 'qmake'
|
|
run: |
|
|
mkdir build
|
|
cd build
|
|
$Qt5_DIR/bin/qmake .. DEFINES+=$dateOfBuild
|
|
make -j$(sysctl -n hw.logicalcpu)
|
|
shell: bash
|
|
|
|
- name: Build with CMake (MacOS)
|
|
if: startsWith(matrix.os, 'macos') && matrix.build-system == 'cmake'
|
|
run: |
|
|
mkdir build
|
|
cd build
|
|
cmake \
|
|
-DCMAKE_BUILD_TYPE=Release \
|
|
-DOPENSSL_ROOT_DIR=/usr/local/opt/openssl \
|
|
-DUSE_PRECOMPILED_HEADERS=${{ matrix.pch }} \
|
|
..
|
|
make -j$(sysctl -n hw.logicalcpu)
|
|
shell: bash
|
|
|
|
- name: Package (MacOS)
|
|
if: startsWith(matrix.os, 'macos')
|
|
run: |
|
|
ls -la
|
|
pwd
|
|
ls -la build || true
|
|
cd build
|
|
sh ./../.CI/CreateDMG.sh
|
|
shell: bash
|
|
|
|
- name: Upload artifact (MacOS)
|
|
if: startsWith(matrix.os, 'macos')
|
|
uses: actions/upload-artifact@v3
|
|
with:
|
|
name: chatterino-osx-${{ matrix.qt-version }}-${{ matrix.build-system }}.dmg
|
|
path: build/chatterino-osx.dmg
|
|
|
|
create-release:
|
|
needs: build
|
|
runs-on: ubuntu-latest
|
|
if: (github.event_name == 'push' && github.ref == 'refs/heads/master')
|
|
|
|
steps:
|
|
- name: Create release
|
|
id: create_release
|
|
uses: pajlada/create-release@v2.0.3
|
|
env:
|
|
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
|
with:
|
|
tag_name: nightly-build
|
|
backup_tag_name: backup-nightly-build
|
|
release_name: Nightly Release
|
|
body: |
|
|
Nightly Build
|
|
prerelease: true
|
|
|
|
- uses: actions/download-artifact@v3
|
|
with:
|
|
name: chatterino-windows-x86-64-5.15.2-qmake.zip
|
|
path: windows/
|
|
|
|
- uses: actions/download-artifact@v3
|
|
with:
|
|
name: chatterino-windows-x86-64-5.15.2-cmake.zip
|
|
path: windows-cmake/
|
|
|
|
- uses: actions/download-artifact@v3
|
|
with:
|
|
name: Chatterino-x86_64-5.15.2-qmake.AppImage
|
|
path: linux/
|
|
|
|
- uses: actions/download-artifact@v3
|
|
with:
|
|
name: Chatterino-x86_64-5.15.2-cmake.AppImage
|
|
path: linux-cmake/
|
|
|
|
- uses: actions/download-artifact@v3
|
|
with:
|
|
name: Chatterino-5.15.2-qmake.deb
|
|
path: ubuntu/
|
|
|
|
- uses: actions/download-artifact@v3
|
|
with:
|
|
name: Chatterino-5.15.2-cmake.deb
|
|
path: ubuntu-cmake/
|
|
|
|
- uses: actions/download-artifact@v3
|
|
with:
|
|
name: chatterino-osx-5.15.2-qmake.dmg
|
|
path: macos/
|
|
|
|
- uses: actions/download-artifact@v3
|
|
with:
|
|
name: chatterino-osx-5.15.2-cmake.dmg
|
|
path: macos-cmake/
|
|
|
|
# TODO: Extract dmg and appimage
|
|
|
|
# - name: Read upload URL into output
|
|
# id: upload_url
|
|
# run: |
|
|
# echo "::set-output name=upload_url::$(cat release-upload-url.txt/release-upload-url.txt)"
|
|
|
|
- name: Upload release asset (Windows)
|
|
uses: actions/upload-release-asset@v1.0.2
|
|
env:
|
|
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
|
with:
|
|
upload_url: ${{ steps.create_release.outputs.upload_url }}
|
|
asset_path: ./windows/chatterino-windows-x86-64.zip
|
|
asset_name: chatterino-windows-x86-64.zip
|
|
asset_content_type: application/zip
|
|
|
|
- name: Upload release asset (Windows) CMake
|
|
uses: actions/upload-release-asset@v1.0.2
|
|
env:
|
|
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
|
with:
|
|
upload_url: ${{ steps.create_release.outputs.upload_url }}
|
|
asset_path: ./windows-cmake/chatterino-windows-x86-64.zip
|
|
asset_name: test-cmake-chatterino-windows-x86-64.zip
|
|
asset_content_type: application/zip
|
|
|
|
- name: Upload release asset (Ubuntu)
|
|
uses: actions/upload-release-asset@v1.0.2
|
|
env:
|
|
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
|
with:
|
|
upload_url: ${{ steps.create_release.outputs.upload_url }}
|
|
asset_path: ./linux/Chatterino-x86_64.AppImage
|
|
asset_name: Chatterino-x86_64.AppImage
|
|
asset_content_type: application/x-executable
|
|
|
|
- name: Upload release asset (Ubuntu) CMake
|
|
uses: actions/upload-release-asset@v1.0.2
|
|
env:
|
|
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
|
with:
|
|
upload_url: ${{ steps.create_release.outputs.upload_url }}
|
|
asset_path: ./linux-cmake/Chatterino-x86_64.AppImage
|
|
asset_name: test-cmake-Chatterino-x86_64.AppImage
|
|
asset_content_type: application/x-executable
|
|
|
|
- name: Upload release asset (Ubuntu .deb)
|
|
uses: actions/upload-release-asset@v1.0.2
|
|
env:
|
|
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
|
with:
|
|
upload_url: ${{ steps.create_release.outputs.upload_url }}
|
|
asset_path: ./ubuntu/Chatterino.deb
|
|
asset_name: Chatterino-x86_64.deb
|
|
asset_content_type: application/vnd.debian.binary-package
|
|
|
|
- name: Upload release asset (Ubuntu .deb) CMake
|
|
uses: actions/upload-release-asset@v1.0.2
|
|
env:
|
|
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
|
with:
|
|
upload_url: ${{ steps.create_release.outputs.upload_url }}
|
|
asset_path: ./ubuntu-cmake/Chatterino.deb
|
|
asset_name: test-cmake-Chatterino-x86_64.deb
|
|
asset_content_type: application/vnd.debian.binary-package
|
|
|
|
- name: Upload release asset (MacOS)
|
|
uses: actions/upload-release-asset@v1.0.2
|
|
env:
|
|
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
|
with:
|
|
upload_url: ${{ steps.create_release.outputs.upload_url }}
|
|
asset_path: ./macos/chatterino-osx.dmg
|
|
asset_name: chatterino-osx.dmg
|
|
asset_content_type: application/x-bzip2
|
|
|
|
- name: Upload release asset (MacOS) CMake
|
|
uses: actions/upload-release-asset@v1.0.2
|
|
env:
|
|
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
|
with:
|
|
upload_url: ${{ steps.create_release.outputs.upload_url }}
|
|
asset_path: ./macos-cmake/chatterino-osx.dmg
|
|
asset_name: test-cmake-chatterino-osx.dmg
|
|
asset_content_type: application/x-bzip2
|