linuxhacktoberfestmachyperxgskillgigabytewindowsgeilrgb ramcorsairrgb lightingasus aurargb fusionopen sourcenzxt hue plusmacos
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
273 lines
11 KiB
273 lines
11 KiB
# swy: some useful references; the MSVC part of the CI script is based on the one from bind9, by Michał Kępień: |
|
# https://gitlab.com/gitlab-org/ci-cd/shared-runners/images/gcp/windows-containers/blob/master/cookbooks/preinstalled-software/README.md |
|
# https://gitlab.isc.org/isc-projects/bind9/commit/facc6a051fcac70fbbc61cb92a37be8c3e4db5ec#587d266bb27a4dc3022bbed44dfa19849df3044c_718_731 |
|
# https://www.kittell.net/code/powershell-unix-sed-equivalent-change-text-file/ |
|
# https://powershell.org/forums/topic/how-to-use-ansi-vt100-formatting-in-powershell-ooh-pretty-colors/ |
|
|
|
#-----------------------------------------------------------------------# |
|
# OpenRGB GitLab CI Configuration # |
|
#-----------------------------------------------------------------------# |
|
|
|
.shared_windows_runners: |
|
tags: |
|
- shared-windows |
|
- windows |
|
- windows-1809 |
|
|
|
stages: |
|
- build |
|
|
|
before_script: |
|
- echo "started by ${GITLAB_USER_NAME}" |
|
|
|
#reusable templates |
|
.ccache_init: &ccache_init |
|
before_script: |
|
- apt update |
|
- apt install -y build-essential qtcreator qt5-default libusb-1.0-0-dev libhidapi-dev pkgconf wget git |
|
|
|
#-----------------------------------------------------------------------# |
|
# Linux (AppImage) 32-bit Build Target # |
|
#-----------------------------------------------------------------------# |
|
build_linux_32: |
|
<<: *ccache_init |
|
image: i386/ubuntu:bionic |
|
stage: build |
|
script: |
|
- export $(dpkg-architecture) |
|
- ./scripts/build-appimage.sh |
|
|
|
artifacts: |
|
paths: |
|
- OpenRGB-i386.AppImage |
|
- 60-openrgb.rules |
|
- README.md |
|
expire_in: 30 days |
|
|
|
#-----------------------------------------------------------------------# |
|
# Linux (AppImage) 64-bit Build Target # |
|
#-----------------------------------------------------------------------# |
|
build_linux_64: |
|
<<: *ccache_init |
|
image: ubuntu:bionic |
|
stage: build |
|
script: |
|
- export $(dpkg-architecture) |
|
- ./scripts/build-appimage.sh |
|
|
|
artifacts: |
|
paths: |
|
- OpenRGB-x86_64.AppImage |
|
- 60-openrgb.rules |
|
- README.md |
|
expire_in: 30 days |
|
|
|
#-----------------------------------------------------------------------# |
|
# Linux (.deb) 32-bit Build Target # |
|
#-----------------------------------------------------------------------# |
|
build_linux_deb32: |
|
<<: *ccache_init |
|
image: i386/ubuntu:bionic |
|
stage: build |
|
script: |
|
- apt install -y debhelper |
|
- dpkg-architecture -l |
|
- dpkg-buildpackage --target-arch i386 -us -B |
|
- rm -v ../openrgb-dbgsym*.ddeb |
|
- mv -v ../openrgb*.deb ./ |
|
|
|
artifacts: |
|
paths: |
|
- openrgb*.deb |
|
exclude: |
|
- openrgb-dbgsym*.deb |
|
expire_in: 30 days |
|
|
|
#-----------------------------------------------------------------------# |
|
# Linux (.deb) 64-bit Build Target # |
|
#-----------------------------------------------------------------------# |
|
build_linux_deb64: |
|
<<: *ccache_init |
|
image: ubuntu:bionic |
|
stage: build |
|
script: |
|
- apt install -y debhelper |
|
- dpkg-architecture -l |
|
- dpkg-buildpackage -us -B |
|
- rm -v ../openrgb-dbgsym*.ddeb |
|
- mv -v ../openrgb*.deb ./ |
|
|
|
artifacts: |
|
paths: |
|
- openrgb*.deb |
|
exclude: |
|
- openrgb-dbgsym*.deb |
|
expire_in: 30 days |
|
|
|
#-----------------------------------------------------------------------# |
|
# Windows (32-bit) Build Target # |
|
#-----------------------------------------------------------------------# |
|
build_windows_32: |
|
extends: |
|
- .shared_windows_runners |
|
stage: build |
|
script: |
|
- $esc = "$([char]27)" |
|
- $count = 0 |
|
- function _unix_tmsec_ { [int64](([datetime]::UtcNow)-(get-date "1/1/1970")).TotalSeconds } |
|
- function _fold_start_ { param( [string]$TEXT_TAG ) $t=_unix_tmsec_; $global:count += 1; Write-Host -NoNewLine "`r`n`r`nsection_start:${t}:sect_${count}`r${esc}[0K${esc}[33m${TEXT_TAG}${esc}[39m`r`n"; } |
|
- function _fold_final_ { $t=_unix_tmsec_; Write-Host -NoNewLine "`r`n`r`nsection_end:${t}:sect_${count}`r${esc}[0K`r`n" ; } |
|
|
|
|
|
- _fold_start_ 'configuring the msvc environment variables' |
|
- Push-Location "C:/Program Files (x86)/Microsoft Visual Studio/2019/BuildTools/VC/Auxiliary/Build" |
|
- '& cmd.exe /C "vcvarsall.bat x86 & set" | Foreach-Object { if ($_ -match "(.*?)=(.*)") { Set-Item -force -path "Env:\$($matches[1])" -value "$($matches[2])" } }' |
|
- Pop-Location |
|
- _fold_final_ |
|
|
|
- _fold_start_ 'downloading precompiled versions of qtbase, qttools (for windeployqt) and jom (for a more parallel nmake)' |
|
- mkdir _qt |
|
- mkdir _qt_download |
|
- Push-Location _qt_download |
|
- curl.exe -LJ -o qt-base.7z 'https://qt-mirror.dannhauer.de/online/qtsdkrepository/windows_x86/desktop/qt5_5150/qt.qt5.5150.win32_msvc2019/5.15.0-0-202005150700qtbase-Windows-Windows_10-MSVC2019-Windows-Windows_10-X86.7z' |
|
- curl.exe -LJ -o qt-tools.7z 'https://qt-mirror.dannhauer.de/online/qtsdkrepository/windows_x86/desktop/qt5_5150/qt.qt5.5150.win32_msvc2019/5.15.0-0-202005150700qttools-Windows-Windows_10-MSVC2019-Windows-Windows_10-X86.7z' |
|
- curl.exe -LJ -o qt-jom.zip 'https://qt-mirror.dannhauer.de/official_releases/jom/jom.zip' |
|
- _fold_final_ |
|
|
|
- _fold_start_ 'extracting the downloaded qt binaries' |
|
- 7z x qt-base.7z '-o../_qt' -y |
|
- 7z x qt-tools.7z '-o../_qt' -y |
|
- 7z x qt-jom.zip '-o../_qt' -y |
|
- _fold_final_ |
|
|
|
- _fold_start_ 'turn the qt install from enterprise to foss; remove the licensing checks' |
|
- ${qconfig-pri-folder} = '..\_qt\5.15.0\msvc2019\mkspecs\qconfig.pri' |
|
- (Get-Content ${qconfig-pri-folder}).replace('QT_EDITION = Enterprise', 'QT_EDITION = OpenSource') | Set-Content ${qconfig-pri-folder} |
|
- (Get-Content ${qconfig-pri-folder}).replace('QT_LICHECK = licheck.exe', '') | Set-Content ${qconfig-pri-folder} |
|
- Pop-Location |
|
- _fold_final_ |
|
|
|
- _fold_start_ 'run qmake and generate the msvc nmake makefile' |
|
- mkdir _build; cd _build |
|
- ..\_qt\5.15.0\msvc2019\bin\qmake ..\OpenRGB.pro |
|
- _fold_final_ |
|
|
|
- _fold_start_ 'start the actual build with jom instead of nmake; for speed' |
|
- ..\_qt\jom |
|
- _fold_final_ |
|
|
|
- _fold_start_ 'run windeployqt to automatically copy the needed dll files' |
|
- ..\_qt\5.15.0\msvc2019\bin\windeployqt --no-angle --no-translations --no-opengl-sw --no-system-d3d-compiler --no-compiler-runtime --no-webkit2 .\release\ |
|
- _fold_final_ |
|
|
|
- _fold_start_ 'compressing the release folder so that we can upload it as artifact' |
|
- mv release 'OpenRGB Windows 32-bit' |
|
- ${datetime} = Get-Date ([datetime]::UtcNow) -Format "yyyy-MM-ddTHH-mm-ss" |
|
- ${revision} = ((git rev-parse --short HEAD) | Out-String).Trim() |
|
- ${rversion} = (((Get-Content '..\OpenRGB.pro' | Select-String -Pattern "VERSION =") | Out-String).Trim().Split("="))[1].Trim() |
|
- 7z a -mx9 -r -y "OpenRGB_${rversion}_32_${revision}_nightly_${datetime}.7z" 'OpenRGB Windows 32-bit' |
|
- _fold_final_ |
|
# cache: |
|
# key: same-key |
|
# paths: |
|
# - C:\vcpkg\installed\ |
|
artifacts: |
|
paths: |
|
- _build/*.7z |
|
expire_in: 30 days |
|
|
|
#-----------------------------------------------------------------------# |
|
# Windows (64-bit) Build Target # |
|
#-----------------------------------------------------------------------# |
|
build_windows_64: |
|
extends: |
|
- .shared_windows_runners |
|
stage: build |
|
script: |
|
- $esc = "$([char]27)" |
|
- $count = 0 |
|
- function _unix_tmsec_ { [int64](([datetime]::UtcNow)-(get-date "1/1/1970")).TotalSeconds } |
|
- function _fold_start_ { param( [string]$TEXT_TAG ) $t=_unix_tmsec_; $global:count += 1; Write-Host -NoNewLine "`r`n`r`nsection_start:${t}:sect_${count}`r${esc}[0K${esc}[33m${TEXT_TAG}${esc}[39m`r`n"; } |
|
- function _fold_final_ { $t=_unix_tmsec_; Write-Host -NoNewLine "`r`n`r`nsection_end:${t}:sect_${count}`r${esc}[0K`r`n" ; } |
|
|
|
|
|
- _fold_start_ 'configuring the msvc environment variables' |
|
- Push-Location "C:/Program Files (x86)/Microsoft Visual Studio/2019/BuildTools/VC/Auxiliary/Build" |
|
- '& cmd.exe /C "vcvarsall.bat x64 & set" | Foreach-Object { if ($_ -match "(.*?)=(.*)") { Set-Item -force -path "Env:\$($matches[1])" -value "$($matches[2])" } }' |
|
- Pop-Location |
|
- _fold_final_ |
|
|
|
- _fold_start_ 'downloading precompiled versions of qtbase, qttools (for windeployqt) and jom (for a more parallel nmake)' |
|
- mkdir _qt |
|
- mkdir _qt_download |
|
- Push-Location _qt_download |
|
- curl.exe -LJ -o qt-base.7z 'https://qt-mirror.dannhauer.de/online/qtsdkrepository/windows_x86/desktop/qt5_5150/qt.qt5.5150.win64_msvc2019_64/5.15.0-0-202005150700qtbase-Windows-Windows_10-MSVC2019-Windows-Windows_10-X86_64.7z' |
|
- curl.exe -LJ -o qt-tools.7z 'https://qt-mirror.dannhauer.de/online/qtsdkrepository/windows_x86/desktop/qt5_5150/qt.qt5.5150.win64_msvc2019_64/5.15.0-0-202005150700qttools-Windows-Windows_10-MSVC2019-Windows-Windows_10-X86_64.7z' |
|
- curl.exe -LJ -o qt-jom.zip 'https://qt-mirror.dannhauer.de/official_releases/jom/jom.zip' |
|
- _fold_final_ |
|
|
|
- _fold_start_ 'extracting the downloaded qt binaries' |
|
- 7z x qt-base.7z '-o../_qt' -y |
|
- 7z x qt-tools.7z '-o../_qt' -y |
|
- 7z x qt-jom.zip '-o../_qt' -y |
|
- _fold_final_ |
|
|
|
- _fold_start_ 'turn the qt install from enterprise to foss; remove the licensing checks' |
|
- ${qconfig-pri-folder} = '..\_qt\5.15.0\msvc2019_64\mkspecs\qconfig.pri' |
|
- (Get-Content ${qconfig-pri-folder}).replace('QT_EDITION = Enterprise', 'QT_EDITION = OpenSource') | Set-Content ${qconfig-pri-folder} |
|
- (Get-Content ${qconfig-pri-folder}).replace('QT_LICHECK = licheck.exe', '') | Set-Content ${qconfig-pri-folder} |
|
- Pop-Location |
|
- _fold_final_ |
|
|
|
- _fold_start_ 'run qmake and generate the msvc nmake makefile' |
|
- mkdir _build; cd _build |
|
- ..\_qt\5.15.0\msvc2019_64\bin\qmake ..\OpenRGB.pro |
|
- _fold_final_ |
|
|
|
- _fold_start_ 'start the actual build with jom instead of nmake; for speed' |
|
- ..\_qt\jom |
|
- _fold_final_ |
|
|
|
- _fold_start_ 'run windeployqt to automatically copy the needed dll files' |
|
- ..\_qt\5.15.0\msvc2019_64\bin\windeployqt --no-angle --no-translations --no-opengl-sw --no-system-d3d-compiler --no-compiler-runtime --no-webkit2 .\release\ |
|
- _fold_final_ |
|
|
|
- _fold_start_ 'compressing the release folder so that we can upload it as artifact' |
|
- mv release 'OpenRGB Windows 64-bit' |
|
- ${datetime} = Get-Date ([datetime]::UtcNow) -Format "yyyy-MM-ddTHH-mm-ss" |
|
- ${revision} = ((git rev-parse --short HEAD) | Out-String).Trim() |
|
- ${rversion} = (((Get-Content '..\OpenRGB.pro' | Select-String -Pattern "VERSION =") | Out-String).Trim().Split("="))[1].Trim() |
|
- 7z a -mx9 -r -y "OpenRGB_${rversion}_64_${revision}_nightly_${datetime}.7z" 'OpenRGB Windows 64-bit' |
|
- _fold_final_ |
|
# cache: |
|
# key: same-key |
|
# paths: |
|
# - C:\vcpkg\installed\ |
|
artifacts: |
|
paths: |
|
- _build/*.7z |
|
expire_in: 30 days |
|
|
|
#-----------------------------------------------------------------------# |
|
# MacOS Build Target # |
|
#-----------------------------------------------------------------------# |
|
build_macos: |
|
tags: |
|
- macos |
|
stage: build |
|
script: |
|
- eval $(/opt/homebrew/bin/brew shellenv) |
|
- qmake OpenRGB.pro |
|
- make -j16 |
|
- macdeployqt OpenRGB.app -codesign=OpenRGB |
|
|
|
artifacts: |
|
paths: |
|
- OpenRGB.app |
|
expire_in: 30 days |
|
|
|
rules: |
|
- if: '$CI_PROJECT_PATH == "CalcProgrammer1/OpenRGB"' |
|
when: on_success |
|
- if: '$BUILD_MACOS =~ /.+/' |
|
when: on_success
|
|
|