hyperion.ng/.github/workflows/push_pull.yml
Paulchen-Panther 1de37ceeff
Merge work branch (#77)
- style workflow
- include armv6 debian buster
- correct RPATH for fedora
- cleanup
2023-10-18 22:12:38 +02:00

258 lines
8.1 KiB
YAML

name: Hyperion CI/PR Builds
run-name: |
${{ github.event_name == 'pull_request' && '📦 Generate artifacts for PR' || '' }}
${{ github.event_name == 'pull_request' && github.event.pull_request.number || '' }}
${{ github.event_name == 'pull_request' && '-' || '' }}
${{ github.event_name == 'push' && '🌱 Push Build -' || '' }}
${{ github.event_name == 'pull_request' && github.event.pull_request.title || github.event.head_commit.message }}
on:
push:
branches:
- '**'
tags:
- '*'
pull_request:
branches:
- 'master'
# Cancel running actions when a new action on the same PR is started
concurrency:
group: ${{ github.workflow }}-${{ github.event.pull_request.number || github.ref }}
cancel-in-progress: ${{ github.event_name == 'pull_request' }}
jobs:
######################
###### Linux #########
######################
Linux:
name: 🐧 ${{ matrix.os.description }}
runs-on: ubuntu-latest
strategy:
fail-fast: false
matrix:
os: [
{ description: Debian Buster (x86_64), platform: x11, architecture: [ amd64, linux/amd64 ] },
{ description: Debian Buster (Raspberry Pi v1 & ZERO), platform: rpi, architecture: [ armv6, linux/arm/v5 ] },
{ description: Debian Buster (Raspberry Pi 2/3/4), platform: rpi, architecture: [ armv7, linux/arm/v7 ] },
{ description: Debian Buster (Generic AARCH64), platform: amlogic, architecture: [ aarch64, linux/arm64 ] }
]
include:
- distribution: debian
- codename: buster
steps:
- name: ⬇ Checkout
uses: actions/checkout@v4
with:
submodules: recursive
- name: 🔧 Prepare PR
if: ${{ github.event_name == 'pull_request' }}
shell: bash
run: |
echo '::group::Append PR number to version'
tr -d '\n' < .version > temp && mv temp .version
echo -n "+PR${{ github.event.pull_request.number }}" >> .version
echo '::endgroup::'
- name: 🛠️ Setup QEMU
if: ${{ matrix.os.architecture[0] != 'amd64' }}
uses: docker/setup-qemu-action@v3
- name: 👷 Build
shell: bash
run: |
echo '::group::Build Hyperion'
./.github/scripts/build.sh
echo '::endgroup::'
env:
DOCKER_IMAGE: ${{ matrix.distribution }}
DOCKER_TAG: ${{ matrix.codename }}
PLATFORM: ${{ matrix.os.platform }}
TARGET_ARCH: ${{ matrix.os.architecture[1] }}
- name: 📦 Upload
if: ${{ startsWith(github.event.ref, 'refs/tags') || github.event_name == 'pull_request' }}
uses: actions/upload-artifact@v3
with:
name: ${{ github.event_name == 'pull_request' && matrix.os.architecture[0] || 'artifact' }}
path: ${{ github.event_name == 'pull_request' && 'deploy/*.tar.gz' || 'deploy/Hyperion-*' }}
######################
###### macOS #########
######################
macOS:
name: 🍏 macOS
runs-on: macos-latest
steps:
- name: ⬇ Checkout
uses: actions/checkout@v4
with:
submodules: recursive
- name: 🔧 Prepare PR
if: ${{ github.event_name == 'pull_request' }}
shell: bash
run: |
echo '::group::Append PR number to version'
tr -d '\n' < .version > temp && mv temp .version
echo -n "+PR${{ github.event.pull_request.number }}" >> .version
echo '::endgroup::'
- name: 👷 Build
shell: bash
run: |
echo '::group::Update/Install dependencies'
brew update || true
brew install --overwrite qt5 libusb
brew link --overwrite --force qt5
echo '::endgroup::'
echo '::group::Build packages'
./.github/scripts/build.sh
echo '::endgroup::'
env:
PLATFORM: osx
- name: 📦 Upload
if: ${{ startsWith(github.event.ref, 'refs/tags') || github.event_name == 'pull_request' }}
uses: actions/upload-artifact@v3
with:
name: ${{ github.event_name == 'pull_request' && 'macOS' || 'artifact' }}
path: 'build/Hyperion-*'
######################
###### Windows #######
######################
windows:
name: 🪟 Windows
runs-on: windows-2022
env:
VCINSTALLDIR: 'C:\Program Files\Microsoft Visual Studio\2022\Enterprise\VC'
QT_VERSION: 5.15.2
steps:
- name: ⬇ Checkout
uses: actions/checkout@v4
with:
submodules: recursive
- name: 🔧 Prepare PR
if: ${{ github.event_name == 'pull_request' }}
shell: bash
run: |
echo '::group::Append PR number to version'
tr -d '\n' < .version > temp && mv temp .version
echo -n "+PR${{ github.event.pull_request.number }}" >> .version
echo '::endgroup::'
- name: 💾 Cache/Restore
uses: actions/cache@v3
with:
path: C:\Users\runneradmin\AppData\Local\Temp\chocolatey
key: ${{ runner.os }}-chocolatey
- name: 📥 Install OpenSSL, DirectX SDK, libjpeg-turbo
shell: powershell
run: |
choco install --no-progress openssl --version=1.1.1.2100 -y
choco install --no-progress directx-sdk -y
Invoke-WebRequest https://netcologne.dl.sourceforge.net/project/libjpeg-turbo/2.0.6/libjpeg-turbo-2.0.6-vc64.exe -OutFile libjpeg-turbo.exe -UserAgent NativeHost
.\libjpeg-turbo /S
- name: 📥 Install Qt
uses: jurplel/install-qt-action@v3
with:
version: ${{env.QT_VERSION}}
target: 'desktop'
arch: 'win64_msvc2019_64'
cache: 'true'
cache-key-prefix: 'cache-qt-windows'
- name: 🛠️ Setup MSVC
shell: cmd
run: call "${{env.VCINSTALLDIR}}\Auxiliary\Build\vcvars64.bat"
- name: 👷 Build
shell: bash
run: |
echo '::group::Build packages'
./.github/scripts/build.sh
echo '::endgroup::'
env:
PLATFORM: windows
- name: 📦 Upload
if: ${{ startsWith(github.event.ref, 'refs/tags') || github.event_name == 'pull_request' }}
uses: actions/upload-artifact@v3
with:
name: ${{ github.event_name == 'pull_request' && 'windows' || 'artifact' }}
path: ${{ github.event_name == 'pull_request' && 'build/*.exe' || 'build/Hyperion-*' }}
#####################################
###### Publish GitHub Releases ######
#####################################
github_publish:
name: 🚀 Publish GitHub Releases
if: startsWith(github.event.ref, 'refs/tags')
needs: [Linux, macOS, windows]
runs-on: ubuntu-latest
steps:
- name: ⬇ Checkout
uses: actions/checkout@v4
- name: 🔧 Prepare
run: |
echo '::group::Generate environment variables from .version and tag'
echo "TAG=${GITHUB_REF/refs\/tags\//}" >> $GITHUB_ENV
echo "VERSION=$(tr -d '\n' < .version)" >> $GITHUB_ENV
echo '::endgroup::'
- name: 💾 Artifact download
uses: actions/download-artifact@v3.0.2
with:
path: artifacts
- name: 📦 Upload
uses: softprops/action-gh-release@v1
with:
name: Hyperion ${{ env.VERSION }}
tag_name: ${{ env.TAG }}
files: "artifacts/**"
draft: true
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
###################################
###### APT reusable workflow ######
###################################
apt_build:
name: APT Build
if: startsWith(github.event.ref, 'refs/tags')
needs: [Linux, macOS, windows]
uses: ./.github/workflows/apt.yml
secrets: inherit
with:
nightly: false
publish: true
###################################
###### DNF reusable workflow ######
###################################
dnf_build:
name: DNF Build
if: startsWith(github.event.ref, 'refs/tags')
needs: [Linux, macOS, windows]
uses: ./.github/workflows/dnf.yml
secrets: inherit
with:
nightly: false
publish: true