mirror of
https://github.com/CalcProgrammer1/OpenRGB.git
synced 2026-01-02 04:07:48 -05:00
481 lines
18 KiB
YAML
481 lines
18 KiB
YAML
# 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
|
|
- test
|
|
|
|
before_script:
|
|
- echo "started by ${GITLAB_USER_NAME}"
|
|
|
|
#reusable templates
|
|
.ccache_init: &ccache_init
|
|
before_script:
|
|
- export QT_SELECT=qt5
|
|
- export APPIMAGE_EXTRACT_AND_RUN=1
|
|
|
|
#-----------------------------------------------------------------------#
|
|
# Linux (AppImage) 32-bit Build Target #
|
|
#-----------------------------------------------------------------------#
|
|
"Linux 32 AppImage":
|
|
<<: *ccache_init
|
|
image: registry.gitlab.com/openrgbdevelopers/openrgb-linux-ci-deb-builder:bullseye-32
|
|
stage: build
|
|
script:
|
|
- export $(dpkg-architecture)
|
|
- ./scripts/build-appimage.sh
|
|
|
|
artifacts:
|
|
name: "${CI_PROJECT_NAME}_Linux_32_${CI_COMMIT_SHORT_SHA}"
|
|
paths:
|
|
- OpenRGB-i386.AppImage
|
|
- 60-openrgb.rules
|
|
- README.md
|
|
expire_in: 30 days
|
|
|
|
#-----------------------------------------------------------------------#
|
|
# Linux (AppImage) 64-bit Build Target #
|
|
#-----------------------------------------------------------------------#
|
|
"Linux 64 AppImage":
|
|
<<: *ccache_init
|
|
image: registry.gitlab.com/openrgbdevelopers/openrgb-linux-ci-deb-builder:bullseye-64
|
|
stage: build
|
|
script:
|
|
- export $(dpkg-architecture)
|
|
- ./scripts/build-appimage.sh
|
|
|
|
artifacts:
|
|
name: "${CI_PROJECT_NAME}_Linux_64_${CI_COMMIT_SHORT_SHA}"
|
|
paths:
|
|
- OpenRGB-x86_64.AppImage
|
|
- 60-openrgb.rules
|
|
- README.md
|
|
expire_in: 30 days
|
|
|
|
#-----------------------------------------------------------------------#
|
|
# Linux (.deb) Debian Buster (Legacy) 32-bit Build Target #
|
|
#-----------------------------------------------------------------------#
|
|
"Linux 32 .deb (Debian Buster)":
|
|
<<: *ccache_init
|
|
image: registry.gitlab.com/openrgbdevelopers/openrgb-linux-ci-deb-builder:buster-32
|
|
stage: build
|
|
script:
|
|
- dpkg-architecture -l
|
|
- dpkg-buildpackage --target-arch i386 -us -B
|
|
- rm -v ../openrgb-dbgsym*.deb
|
|
- mv -v ../openrgb*.deb ./
|
|
|
|
artifacts:
|
|
name: "${CI_PROJECT_NAME}_Linux_32_deb_${CI_COMMIT_SHORT_SHA}"
|
|
paths:
|
|
- openrgb*.deb
|
|
exclude:
|
|
- openrgb-dbgsym*.deb
|
|
expire_in: 30 days
|
|
|
|
#-----------------------------------------------------------------------#
|
|
# Linux (.deb) Debian Buster (Legacy) 64-bit Build Target #
|
|
#-----------------------------------------------------------------------#
|
|
"Linux 64 .deb (Debian Buster)":
|
|
<<: *ccache_init
|
|
image: registry.gitlab.com/openrgbdevelopers/openrgb-linux-ci-deb-builder:buster-64
|
|
stage: build
|
|
script:
|
|
- dpkg-architecture -l
|
|
- dpkg-buildpackage -us -B
|
|
- rm -v ../openrgb-dbgsym*.deb
|
|
- mv -v ../openrgb*.deb ./
|
|
|
|
artifacts:
|
|
name: "${CI_PROJECT_NAME}_Linux_64_deb_${CI_COMMIT_SHORT_SHA}"
|
|
paths:
|
|
- openrgb*.deb
|
|
exclude:
|
|
- openrgb-dbgsym*.deb
|
|
expire_in: 30 days
|
|
|
|
#-----------------------------------------------------------------------#
|
|
# Linux (.deb) Debian Bullseye 32-bit Build Target #
|
|
#-----------------------------------------------------------------------#
|
|
"Linux 32 .deb (Debian Bullseye)":
|
|
<<: *ccache_init
|
|
image: registry.gitlab.com/openrgbdevelopers/openrgb-linux-ci-deb-builder:bullseye-32
|
|
stage: build
|
|
script:
|
|
- dpkg-architecture -l
|
|
- dpkg-buildpackage --target-arch i386 -us -B
|
|
- rm -v ../openrgb-dbgsym*.deb
|
|
- mv -v ../openrgb*.deb ./
|
|
|
|
artifacts:
|
|
name: "${CI_PROJECT_NAME}_Linux_32_deb_${CI_COMMIT_SHORT_SHA}"
|
|
paths:
|
|
- openrgb*.deb
|
|
exclude:
|
|
- openrgb-dbgsym*.deb
|
|
expire_in: 30 days
|
|
|
|
#-----------------------------------------------------------------------#
|
|
# Linux (.deb) Debian Bullseye 64-bit Build Target #
|
|
#-----------------------------------------------------------------------#
|
|
"Linux 64 .deb (Debian Bullseye)":
|
|
<<: *ccache_init
|
|
image: registry.gitlab.com/openrgbdevelopers/openrgb-linux-ci-deb-builder:bullseye-64
|
|
stage: build
|
|
script:
|
|
- dpkg-architecture -l
|
|
- dpkg-buildpackage -us -B
|
|
- rm -v ../openrgb-dbgsym*.deb
|
|
- mv -v ../openrgb*.deb ./
|
|
|
|
artifacts:
|
|
name: "${CI_PROJECT_NAME}_Linux_64_deb_${CI_COMMIT_SHORT_SHA}"
|
|
paths:
|
|
- openrgb*.deb
|
|
exclude:
|
|
- openrgb-dbgsym*.deb
|
|
expire_in: 30 days
|
|
|
|
#-----------------------------------------------------------------------#
|
|
# Linux (.rpm) 64-bit Build Target #
|
|
#-----------------------------------------------------------------------#
|
|
"Linux 64 rpm":
|
|
image: fedora:34
|
|
stage: build
|
|
script:
|
|
- dnf install rpmdevtools dnf-plugins-core -y
|
|
- rpmdev-setuptree
|
|
- ls /root/
|
|
- cp fedora/OpenRGB.spec /root/rpmbuild/SPECS
|
|
- cp ../OpenRGB /root/rpmbuild/SOURCES/ -r
|
|
- cd /root/rpmbuild/SOURCES
|
|
- tar -cf OpenRGB.tar.gz OpenRGB/
|
|
- cd ..
|
|
- dnf builddep SPECS/OpenRGB.spec -y
|
|
- rpmbuild -ba SPECS/OpenRGB.spec
|
|
- cd RPMS/x86_64/
|
|
- mv openrgb*.rpm ${CI_PROJECT_DIR}/
|
|
- cd ${CI_PROJECT_DIR}
|
|
|
|
artifacts:
|
|
name: "${CI_PROJECT_NAME}_Linux_64_rpm_${CI_COMMIT_SHORT_SHA}"
|
|
paths:
|
|
- openrgb*.rpm
|
|
expire_in: 30 days
|
|
|
|
#-----------------------------------------------------------------------#
|
|
# Debian 32 Buster test #
|
|
#-----------------------------------------------------------------------#
|
|
"Debian 32 Buster":
|
|
image: i386/debian:buster
|
|
stage: test
|
|
script:
|
|
- apt update
|
|
- DEBIAN_FRONTEND=noninteractive apt install -yq --no-install-recommends ./openrgb*i386.deb
|
|
- openrgb --version
|
|
- openrgb -l
|
|
- apt remove -y openrgb
|
|
dependencies:
|
|
- "Linux 32 .deb (Debian Buster)"
|
|
needs:
|
|
- "Linux 32 .deb (Debian Buster)"
|
|
|
|
#-----------------------------------------------------------------------#
|
|
# Debian 64 Buster test #
|
|
#-----------------------------------------------------------------------#
|
|
"Debian 64 Buster":
|
|
image: amd64/debian:buster
|
|
stage: test
|
|
script:
|
|
- apt update
|
|
- DEBIAN_FRONTEND=noninteractive apt install -yq --no-install-recommends ./openrgb*amd64.deb
|
|
- openrgb --version
|
|
- openrgb -l
|
|
- apt remove -y openrgb
|
|
dependencies:
|
|
- "Linux 64 .deb (Debian Buster)"
|
|
needs:
|
|
- "Linux 64 .deb (Debian Buster)"
|
|
|
|
#-----------------------------------------------------------------------#
|
|
# Debian 32 Bullseye test #
|
|
#-----------------------------------------------------------------------#
|
|
"Debian 32 Bullseye":
|
|
image: i386/debian:bullseye
|
|
stage: test
|
|
script:
|
|
- apt update
|
|
- DEBIAN_FRONTEND=noninteractive apt install -yq --no-install-recommends ./openrgb*i386.deb
|
|
- openrgb --version
|
|
- openrgb -l
|
|
- apt remove -y openrgb
|
|
dependencies:
|
|
- "Linux 32 .deb (Debian Bullseye)"
|
|
needs:
|
|
- "Linux 32 .deb (Debian Bullseye)"
|
|
|
|
#-----------------------------------------------------------------------#
|
|
# Debian 64 Bullseye test #
|
|
#-----------------------------------------------------------------------#
|
|
"Debian 64 Bullseye":
|
|
image: amd64/debian:bullseye
|
|
stage: test
|
|
script:
|
|
- apt update
|
|
- DEBIAN_FRONTEND=noninteractive apt install -yq --no-install-recommends ./openrgb*amd64.deb
|
|
- openrgb --version
|
|
- openrgb -l
|
|
- apt remove -y openrgb
|
|
dependencies:
|
|
- "Linux 64 .deb (Debian Bullseye)"
|
|
needs:
|
|
- "Linux 64 .deb (Debian Bullseye)"
|
|
|
|
#-----------------------------------------------------------------------#
|
|
# Ubuntu 64 20.04LTS test #
|
|
#-----------------------------------------------------------------------#
|
|
"Ubuntu 64 20.04LTS":
|
|
image: ubuntu:focal
|
|
stage: test
|
|
script:
|
|
- apt update
|
|
- DEBIAN_FRONTEND=noninteractive apt install -yq --no-install-recommends ./openrgb*amd64.deb
|
|
- openrgb --version
|
|
- openrgb -l
|
|
- apt remove -y openrgb
|
|
dependencies:
|
|
- "Linux 64 .deb (Debian Buster)"
|
|
needs:
|
|
- "Linux 64 .deb (Debian Buster)"
|
|
|
|
#-----------------------------------------------------------------------#
|
|
# Ubuntu 64 21.10 test #
|
|
#-----------------------------------------------------------------------#
|
|
"Ubuntu 64 21.10":
|
|
image: ubuntu:impish
|
|
stage: test
|
|
script:
|
|
- apt update
|
|
- DEBIAN_FRONTEND=noninteractive apt install -yq --no-install-recommends ./openrgb*amd64.deb
|
|
- openrgb --version
|
|
- openrgb -l
|
|
- apt remove -y openrgb
|
|
dependencies:
|
|
- "Linux 64 .deb (Debian Bullseye)"
|
|
needs:
|
|
- "Linux 64 .deb (Debian Bullseye)"
|
|
|
|
#-----------------------------------------------------------------------#
|
|
# Fedora 64 v34 test #
|
|
#-----------------------------------------------------------------------#
|
|
"Fedora 64 v34":
|
|
image: fedora:34
|
|
stage: test
|
|
script:
|
|
- yum -y localinstall ./openrgb*64.rpm
|
|
- openrgb --version
|
|
- openrgb -l
|
|
- yum -y remove openrgb
|
|
dependencies:
|
|
- "Linux 64 rpm"
|
|
needs:
|
|
- "Linux 64 rpm"
|
|
|
|
#-----------------------------------------------------------------------#
|
|
# Windows (32-bit) Build Target #
|
|
#-----------------------------------------------------------------------#
|
|
"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_ 'Moving results for upload'
|
|
- mv release ../'OpenRGB Windows 32-bit'
|
|
- _fold_final_
|
|
# cache:
|
|
# key: same-key
|
|
# paths:
|
|
# - C:\vcpkg\installed\
|
|
artifacts:
|
|
name: "${CI_PROJECT_NAME}_Windows_32_${CI_COMMIT_SHORT_SHA}"
|
|
paths:
|
|
- 'OpenRGB Windows 32-bit'
|
|
expire_in: 30 days
|
|
|
|
#-----------------------------------------------------------------------#
|
|
# Windows (64-bit) Build Target #
|
|
#-----------------------------------------------------------------------#
|
|
"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_ 'Moving results for upload'
|
|
- mv release ../'OpenRGB Windows 64-bit'
|
|
- _fold_final_
|
|
# cache:
|
|
# key: same-key
|
|
# paths:
|
|
# - C:\vcpkg\installed\
|
|
artifacts:
|
|
name: "${CI_PROJECT_NAME}_Windows_64_${CI_COMMIT_SHORT_SHA}"
|
|
paths:
|
|
- 'OpenRGB Windows 64-bit'
|
|
expire_in: 30 days
|
|
|
|
#-----------------------------------------------------------------------#
|
|
# MacOS Build Target #
|
|
#-----------------------------------------------------------------------#
|
|
"MacOS ARM64":
|
|
tags:
|
|
- macos
|
|
stage: build
|
|
script:
|
|
- eval $(/opt/homebrew/bin/brew shellenv)
|
|
- qmake OpenRGB.pro
|
|
- make -j16
|
|
- macdeployqt OpenRGB.app -codesign=OpenRGB
|
|
|
|
artifacts:
|
|
name: "${CI_PROJECT_NAME}_MacOS_ARM64_${CI_COMMIT_SHORT_SHA}"
|
|
paths:
|
|
- OpenRGB.app
|
|
expire_in: 30 days
|
|
|
|
rules:
|
|
- if: '$CI_PROJECT_PATH == "CalcProgrammer1/OpenRGB"'
|
|
when: on_success
|
|
- if: '$BUILD_MACOS =~ /.+/'
|
|
when: on_success
|
|
|
|
"MacOS Intel":
|
|
tags:
|
|
- macos
|
|
stage: build
|
|
script:
|
|
- eval $(/usr/local/bin/brew shellenv)
|
|
- arch -x86_64 /usr/local/bin/qmake OpenRGB.pro
|
|
- arch -x86_64 make -j16
|
|
- arch -x86_64 macdeployqt OpenRGB.app -codesign=OpenRGB
|
|
|
|
artifacts:
|
|
name: "${CI_PROJECT_NAME}_MacOS_Intel_${CI_COMMIT_SHORT_SHA}"
|
|
paths:
|
|
- OpenRGB.app
|
|
expire_in: 30 days
|
|
|
|
rules:
|
|
- if: '$CI_PROJECT_PATH == "CalcProgrammer1/OpenRGB"'
|
|
when: on_success
|
|
- if: '$BUILD_MACOS =~ /.+/'
|
|
when: on_success
|